in paimon-presto-common/src/main/java/org/apache/paimon/presto/PrestoPageSourceProvider.java [60:85]
private ConnectorPageSource createPageSource(
PrestoTableHandle tableHandle, PrestoSplit split, List<ColumnHandle> columns) {
Table table = tableHandle.table();
ReadBuilder read = table.newReadBuilder();
RowType rowType = table.rowType();
List<String> fieldNames = FieldNameUtils.fieldNames(rowType);
List<String> projectedFields =
columns.stream()
.map(PrestoColumnHandle.class::cast)
.map(PrestoColumnHandle::getColumnName)
.collect(Collectors.toList());
if (!fieldNames.equals(projectedFields)) {
int[] projected = projectedFields.stream().mapToInt(fieldNames::indexOf).toArray();
read.withProjection(projected);
}
new PrestoFilterConverter(rowType)
.convert(tableHandle.getFilter())
.ifPresent(read::withFilter);
try {
return new PrestoPageSource(read.newRead().createReader(split.decodeSplit()), columns);
} catch (IOException e) {
throw new RuntimeException(e);
}
}