in paimon-prestosql-common/src/main/java/org/apache/paimon/prestosql/PrestoSqlPageSourceProvider.java [62:88]
private ConnectorPageSource createPageSource(
Table table,
TupleDomain<PrestoSqlColumnHandle> filter,
PrestoSqlSplit split,
List<ColumnHandle> columns) {
ReadBuilder read = table.newReadBuilder();
RowType rowType = table.rowType();
List<String> fieldNames = FieldNameUtils.fieldNames(rowType);
List<String> projectedFields =
columns.stream()
.map(PrestoSqlColumnHandle.class::cast)
.map(PrestoSqlColumnHandle::getColumnName)
.collect(Collectors.toList());
if (!fieldNames.equals(projectedFields)) {
int[] projected = projectedFields.stream().mapToInt(fieldNames::indexOf).toArray();
read.withProjection(projected);
}
new PrestoSqlFilterConverter(rowType).convert(filter).ifPresent(read::withFilter);
try {
return new PrestoSqlPageSource(
read.newRead().createReader(split.decodeSplit()), columns);
} catch (IOException e) {
throw new RuntimeException(e);
}
}