{"record":{"id":"fd4ab6633dd261c4","repo":"prestodb/presto","slug":"not-supported-fd4ab6","errorCode":"NOT_SUPPORTED","errorMessage":"Filter Pushdown not supported for Iceberg Java Connector","messagePattern":"Filter Pushdown not supported for Iceberg Java Connector","errorType":"error_code","errorClass":"PrestoException","httpStatus":null,"severity":"error","filePath":"presto-iceberg/src/main/java/com/facebook/presto/iceberg/IcebergPageSourceProvider.java","lineNumber":785,"sourceCode":"                            orcTypes.get(rootOrcType.getFieldTypeIndex(fieldId)).getAttributes()))\n                    .collect(toImmutableList());\n        }\n        return columnAttributes;\n    }\n\n    @Override\n    public ConnectorPageSource createPageSource(\n            ConnectorTransactionHandle transaction,\n            ConnectorSession session,\n            ConnectorSplit connectorSplit,\n            ConnectorTableLayoutHandle layout,\n            List<ColumnHandle> desiredColumns,\n            SplitContext splitContext,\n            RuntimeStats runtimeStats)\n    {\n        IcebergTableLayoutHandle icebergLayout = (IcebergTableLayoutHandle) layout;\n        if (icebergLayout.isPushdownFilterEnabled()) {\n            throw new PrestoException(NOT_SUPPORTED, \"Filter Pushdown not supported for Iceberg Java Connector\");\n        }\n\n        IcebergSplit split = (IcebergSplit) connectorSplit;\n        IcebergTableHandle table = icebergLayout.getTable();\n\n        List<ColumnHandle> columns = desiredColumns;\n        if (split.getChangelogSplitInfo().isPresent()) {\n            columns = (List<ColumnHandle>) (List<?>) split.getChangelogSplitInfo().get().getIcebergColumns();\n        }\n\n        List<IcebergColumnHandle> icebergColumns = columns.stream()\n                .map(IcebergColumnHandle.class::cast)\n                .collect(toImmutableList());\n\n        Optional<String> tableSchemaJson = table.getTableSchemaJson();\n        verify(tableSchemaJson.isPresent(), \"tableSchemaJson is null\");\n        Schema tableSchema = SchemaParser.fromJson(tableSchemaJson.get());\n        PartitionSpec partitionSpec = PartitionSpecParser.fromJson(tableSchema, split.getPartitionSpecAsJson());","sourceCodeStart":767,"sourceCodeEnd":803,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-iceberg/src/main/java/com/facebook/presto/iceberg/IcebergPageSourceProvider.java#L767-L803","documentation":"IcebergPageSourceProvider.createPageSource throws NOT_SUPPORTED when the table layout has filter pushdown enabled (isPushdownFilterEnabled). The Java Iceberg connector does not support pushing filter evaluation down into the page source layer, so the request is rejected rather than silently ignoring the filter.","triggerScenarios":"Calling IcebergPageSourceProvider.createPageSource with an IcebergTableLayoutHandle whose isPushdownFilterEnabled() returns true — i.e. the query plan/session enabled pushdown-based filtering for the Iceberg Java connector.","commonSituations":"A session/config flag for pushdown filter mode was left enabled (e.g. experimental pushdown_filter_enabled) while running queries through the Java connector; a planner integration or custom plugin requests layouts built for the pushdown path.","solutions":["Disable the pushdown filter session/config property for Iceberg (e.g. the pushdown_filter_enabled flag) and re-run the query","Verify the connector in use; pushdown-based filtering is only valid for the native connector path, not the Java connector","If this arises from custom planner code, build IcebergTableLayoutHandle with pushdown filter disabled"],"exampleFix":"// before\nSET SESSION iceberg.pushdown_filter_enabled = true;\nSELECT * FROM iceberg_table WHERE col > 10;\n// after\nSET SESSION iceberg.pushdown_filter_enabled = false;\nSELECT * FROM iceberg_table WHERE col > 10;","handlingStrategy":"validation","validationCode":"IcebergTableLayoutHandle layout = ...;\nif (layout.isPushdownFilterEnabled()) {\n    // fix configuration before calling createPageSource\n    throw new IllegalArgumentException(\"Disable pushdown_filter for the Iceberg Java connector\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep iceberg pushdown_filter_enabled=false when using the Java connector","Audit session property templates for stale experimental flags","Ensure planner extensions build layouts for the Java connector with pushdown disabled"],"tags":["iceberg","not-supported","filter-pushdown","configuration"],"backgroundTag":"unsupported-feature-flag","analyzedSha":"55bb57d202de3b926896fa966c2c4a44c779634e","analyzedAt":"2026-09-04T12:50:26.162Z","contentChangedAt":"2026-09-04T12:50:26.162Z","schemaVersion":2},"datasetVersion":"2026-09-12T02:17:10.037Z"}