private ConnectorPageSource createPageSource()

in paimon-presto-common/src/main/java/org/apache/paimon/presto/PrestoPageSourceProvider.java [60:86]


    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().executeFilter().createReader(split.decodeSplit()), columns);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }