presto-iceberg/src/main/java/io/prestosql/plugin/iceberg/IcebergPageSource.java/IcebergPageSource/IcebergPageSource
class IcebergPageSource:    public IcebergPageSource(
            List<IcebergColumnHandle> columns,
            Map<Integer, String> partitionKeys,
            ConnectorPageSource delegate,
            TimeZoneKey timeZoneKey)
    {
        int size = requireNonNull(columns, "columns is null").size();
        requireNonNull(partitionKeys, "partitionKeys is null");
        this.delegate = requireNonNull(delegate, "delegate is null");

        this.prefilledBlocks = new Block[size];
        this.delegateIndexes = new int[size];

        int outputIndex = 0;
        int delegateIndex = 0;
        for (IcebergColumnHandle column : columns) {
            String partitionValue = partitionKeys.get(column.getId());
            if (partitionValue != null) {
                Type type = column.getType();
                Object prefilledValue = deserializePartitionValue(type, partitionValue, column.getName(), timeZoneKey);
                prefilledBlocks[outputIndex] = Utils.nativeValueToBlock(type, prefilledValue);
                delegateIndexes[outputIndex] = -1;
            }
            else {
                delegateIndexes[outputIndex] = delegateIndex;
                delegateIndex++;
            }
            outputIndex++;
        }
    }