in presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarMetadata.java [410:430]
static List<ColumnMetadata> getPulsarColumnsFromKeyValueSchema(TopicName topicName,
SchemaInfo schemaInfo,
boolean withInternalColumns) {
ImmutableList.Builder<ColumnMetadata> builder = ImmutableList.builder();
KeyValue<SchemaInfo, SchemaInfo> kvSchemaInfo = KeyValueSchemaInfo.decodeKeyValueSchemaInfo(schemaInfo);
SchemaInfo keySchemaInfo = kvSchemaInfo.getKey();
List<ColumnMetadata> keyColumnMetadataList = getPulsarColumns(topicName, keySchemaInfo, false,
PulsarColumnHandle.HandleKeyValueType.KEY);
builder.addAll(keyColumnMetadataList);
SchemaInfo valueSchemaInfo = kvSchemaInfo.getValue();
List<ColumnMetadata> valueColumnMetadataList = getPulsarColumns(topicName, valueSchemaInfo, false,
PulsarColumnHandle.HandleKeyValueType.VALUE);
builder.addAll(valueColumnMetadataList);
if (withInternalColumns) {
PulsarInternalColumn.getInternalFields()
.forEach(pulsarInternalColumn -> builder.add(pulsarInternalColumn.getColumnMetadata(false)));
}
return builder.build();
}