in presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarMetadata.java [207:242]
public Map<String, ColumnHandle> getColumnHandles(ConnectorSession session, ConnectorTableHandle tableHandle) {
PulsarTableHandle pulsarTableHandle = convertTableHandle(tableHandle);
ConnectorTableMetadata tableMetaData = getTableMetadata(pulsarTableHandle.toSchemaTableName(), false);
if (tableMetaData == null) {
return new HashMap<>();
}
ImmutableMap.Builder<String, ColumnHandle> columnHandles = ImmutableMap.builder();
tableMetaData.getColumns().forEach(columnMetadata -> {
PulsarColumnMetadata pulsarColumnMetadata = (PulsarColumnMetadata) columnMetadata;
PulsarColumnHandle pulsarColumnHandle = new PulsarColumnHandle(
connectorId,
pulsarColumnMetadata.getNameWithCase(),
pulsarColumnMetadata.getType(),
pulsarColumnMetadata.isHidden(),
pulsarColumnMetadata.isInternal(),
pulsarColumnMetadata.getFieldNames(),
pulsarColumnMetadata.getPositionIndices(),
pulsarColumnMetadata.getHandleKeyValueType());
columnHandles.put(
columnMetadata.getName(),
pulsarColumnHandle);
});
PulsarInternalColumn.getInternalFields().forEach(pulsarInternalColumn -> {
PulsarColumnHandle pulsarColumnHandle = pulsarInternalColumn.getColumnHandle(connectorId, false);
columnHandles.put(pulsarColumnHandle.getName(), pulsarColumnHandle);
});
return columnHandles.build();
}