{"record":{"id":"a94983b32a220506","repo":"prestodb/presto","slug":"not-supported-a94983","errorCode":"NOT_SUPPORTED","errorMessage":"Dynamic filtering cannot be used with grouped execution","messagePattern":"Dynamic filtering cannot be used with grouped execution","errorType":"error_code","errorClass":"PrestoException","httpStatus":null,"severity":"error","filePath":"presto-main-base/src/main/java/com/facebook/presto/sql/planner/LocalExecutionPlanner.java","lineNumber":2614,"sourceCode":"                    context.getNextOperatorId(),\n                    planNodeId,\n                    dynamicFilter.getTupleDomainConsumer(),\n                    filterBuildChannels,\n                    getDynamicFilteringMaxPerDriverRowCount(context.getSession()),\n                    getDynamicFilteringMaxPerDriverSize(context.getSession()),\n                    getDynamicFilteringRangeRowLimitPerDriver(context.getSession()));\n        }\n\n        private Optional<LocalDynamicFilter> createDynamicFilter(PhysicalOperation buildSource, AbstractJoinNode node, LocalExecutionPlanContext context, int partitionCount)\n        {\n            if (!isEnableDynamicFiltering(context.getSession())) {\n                return Optional.empty();\n            }\n            if (node.getDynamicFilters().isEmpty()) {\n                return Optional.empty();\n            }\n            if (buildSource.getPipelineExecutionStrategy() == GROUPED_EXECUTION) {\n                throw new PrestoException(NOT_SUPPORTED, \"Dynamic filtering cannot be used with grouped execution\");\n            }\n            LocalDynamicFiltersCollector collector = context.getDynamicFiltersCollector();\n            return LocalDynamicFilter\n                    .create(node, partitionCount)\n                    .map(filter -> {\n                        // Intersect dynamic filters' predicates when they become ready,\n                        // in order to support multiple join nodes in the same plan fragment.\n                        addSuccessCallback(filter.getResultFuture(), collector::intersect);\n                        return filter;\n                    });\n        }\n\n        private JoinFilterFunctionFactory compileJoinFilterFunction(\n                SqlFunctionProperties sqlFunctionProperties,\n                Map<SqlFunctionId, SqlInvokedFunction> sessionFunctions,\n                RowExpression filterExpression,\n                Map<VariableReferenceExpression, Integer> probeLayout,\n                Map<VariableReferenceExpression, Integer> buildLayout)","sourceCodeStart":2596,"sourceCodeEnd":2632,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-main-base/src/main/java/com/facebook/presto/sql/planner/LocalExecutionPlanner.java#L2596-L2632","documentation":"Planning error: the plan enables dynamic filtering on a join that is also planned for grouped execution. These two features are mutually exclusive — dynamic filters are consumed while the build side streams, while grouped execution batches build-side data — so the planner rejects the combination rather than producing wrong results.","triggerScenarios":"Thrown at presto-main-base/src/main/java/com/facebook/presto/sql/planner/LocalExecutionPlanner.java:2614 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Disable dynamic filtering for the query: SET SESSION enable_dynamic_filtering = false","Avoid grouped execution patterns (e.g. drop the compaction-style join shape or disable grouped execution via session properties)","Repartition/reorder the join so grouped execution is not chosen"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"55bb57d202de3b926896fa966c2c4a44c779634e","analyzedAt":"2026-09-04T12:50:26.162Z","contentChangedAt":"2026-09-04T12:50:26.162Z","schemaVersion":2},"datasetVersion":"2026-09-11T21:17:09.523Z"}