private ConnectorTableMetadata getTableMetadata(KuduTableHandle tableHandle) {
KuduTable table = tableHandle.getTable(clientSession);
Schema schema = table.getSchema();
List<ColumnMetadata> columnsMetaList = schema.getColumns().stream()
.filter(col -> !col.isKey() || !col.getName().equals(KuduColumnHandle.ROW_ID))
.map(col -> {
StringBuilder extra = new StringBuilder();
if (col.isKey()) {
extra.append("key, ");
} else if (col.isNullable()) {
extra.append("nullable, ");
}
if (col.getEncoding() != null) {
extra.append("encoding=").append(col.getEncoding().name()).append(", ");
}
if (col.getCompressionAlgorithm() != null) {
extra.append("compression=").append(col.getCompressionAlgorithm().name()).append(", ");
}
if (extra.length() > 2) {
extra.setLength(extra.length() - 2);
}
Type prestoType = TypeHelper.fromKuduColumn(col);
return new ColumnMetadata(col.getName(), prestoType, null, extra.toString(), false);
}).collect(toImmutableList());
Map<String, Object> properties = clientSession.getTableProperties(tableHandle);
return new ConnectorTableMetadata(tableHandle.getSchemaTableName(), columnsMetaList, properties);
}