{"record":{"id":"8052599cf24ebd0c","repo":"prestodb/presto","slug":"subfield-column","errorCode":null,"errorMessage":"Subfield column [","messagePattern":"Subfield column \\[","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"presto-parquet/src/main/java/com/facebook/presto/parquet/rule/ParquetDereferencePushDown.java","lineNumber":349,"sourceCode":"                    rowExpressionService.getExpressionOptimizer(session),\n                    new HashSet<>(project.getAssignments().getExpressions()));\n            if (dereferenceToNestedColumnMap.isEmpty()) {\n                return visitPlan(project, context);\n            }\n\n            List<VariableReferenceExpression> newOutputVariables = new ArrayList<>(tableScan.getOutputVariables());\n            Map<VariableReferenceExpression, ColumnHandle> newAssignments = new HashMap<>(tableScan.getAssignments());\n\n            Map<RowExpression, VariableReferenceExpression> dereferenceToVariableMap = new HashMap<>();\n\n            for (Map.Entry<RowExpression, Subfield> dereference : dereferenceToNestedColumnMap.entrySet()) {\n                Subfield subfield = dereference.getValue();\n                RowExpression dereferenceExpression = dereference.getKey();\n\n                // Find the nested column Hive Type\n                ColumnHandle baseColumnHandle = baseColumnHandles.get(subfield.getRootName());\n                if (baseColumnHandle == null) {\n                    throw new IllegalArgumentException(\"Subfield column [\" + subfield + \"]'s base column \" + subfield.getRootName() + \" is not present in table scan output\");\n                }\n                String subfieldColumnName = pushdownColumnNameForSubfield(subfield);\n\n                ColumnHandle nestedColumnHandle = createSubfieldColumnHandle(\n                        baseColumnHandle,\n                        subfield,\n                        dereferenceExpression.getType(),\n                        subfieldColumnName);\n\n                VariableReferenceExpression newOutputVariable = variableAllocator.newVariable(subfieldColumnName, dereferenceExpression.getType());\n                newOutputVariables.add(newOutputVariable);\n                newAssignments.put(newOutputVariable, nestedColumnHandle);\n\n                dereferenceToVariableMap.put(dereferenceExpression, newOutputVariable);\n            }\n\n            TableScanNode newTableScan = new TableScanNode(\n                    tableScan.getSourceLocation(),","sourceCodeStart":331,"sourceCodeEnd":367,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-parquet/src/main/java/com/facebook/presto/parquet/rule/ParquetDereferencePushDown.java#L331-L367","documentation":"Internal error prefix used in visitProject when rewriting the plan with extracted subfield columns: a variable or assignment related to the dereference-to-nested-column mapping could not be resolved during the rewrite. A planner-internal failure of the dereference pushdown rule, not user data.","triggerScenarios":"Thrown at presto-parquet/src/main/java/com/facebook/presto/parquet/rule/ParquetDereferencePushDown.java:349 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Report a planner bug with the query and plan","Disable ParquetDereferencePushDown as a workaround","Upgrade Presto to a release fixing the rule"],"exampleFix":null,"handlingStrategy":"type-guard","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"}