{"record":{"id":"d73397d2b4d81d82","repo":"prestodb/presto","slug":"column-not-found-d73397","errorCode":"COLUMN_NOT_FOUND","errorMessage":"Z-order column(s) not found in table: %s. Available columns: %s","messagePattern":"Z-order column\\(s\\) not found in table: (.+?)\\. Available columns: (.+?)","errorType":"error_code","errorClass":"PrestoException","httpStatus":null,"severity":"error","filePath":"presto-main-base/src/main/java/com/facebook/presto/sql/planner/LogicalPlanner.java","lineNumber":342,"sourceCode":"        Set<VariableReferenceExpression> notNullColumnVariables = tableMetadata.getColumns().stream()\n                .filter(column -> !column.isNullable())\n                .map(ColumnMetadata::getName)\n                .map(columnToVariableMap::get)\n                .collect(toImmutableSet());\n\n        PlanNode queryRoot = plan.getRoot();\n        Optional<List<String>> zOrderColumns = analysis.getCallDistributedProcedureAnalysis()\n                .flatMap(Analysis.CallDistributedProcedureAnalysis::getProcedureAnalysisContext)\n                .map(TableDataRewriteAnalysisContext.class::cast)\n                .flatMap(TableDataRewriteAnalysisContext::getzOrderColumns);\n        if (zOrderColumns.isPresent() && !zOrderColumns.get().isEmpty()) {\n            // Validate all z-order column names exist before mapping to variables\n            List<String> invalidColumns = zOrderColumns.get().stream()\n                    .filter(columnName -> !columnToVariableMap.containsKey(columnName))\n                    .collect(toImmutableList());\n\n            if (!invalidColumns.isEmpty()) {\n                throw new PrestoException(\n                        COLUMN_NOT_FOUND,\n                        format(\"Z-order column(s) not found in table: %s. Available columns: %s\",\n                                invalidColumns,\n                                columnToVariableMap.keySet()));\n            }\n\n            List<VariableReferenceExpression> zOrderColumnVars = zOrderColumns.get().stream()\n                    .map(columnToVariableMap::get)\n                    .collect(toImmutableList());\n\n            CallExpression zorderFunction = buildZOrderFunctionCall(zOrderColumnVars, metadata);\n\n            VariableReferenceExpression output = variableAllocator.newVariable(\"$z_order\", VARBINARY);\n            Assignments assignments = Assignments.builder()\n                    .putAll(identityAssignments(queryRoot.getOutputVariables()))\n                    .put(output, zorderFunction)\n                    .build();\n            queryRoot = new ProjectNode(idAllocator.getNextId(), queryRoot, assignments);","sourceCodeStart":324,"sourceCodeEnd":360,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-main-base/src/main/java/com/facebook/presto/sql/planner/LogicalPlanner.java#L324-L360","documentation":"Planning error for a distributed table-data-rewrite procedure (e.g. compaction/OptimizeTableZOrder): some columns named in the ZORDER BY list do not exist in the target table. The %s lists the missing columns and the table's available columns.","triggerScenarios":"Thrown at presto-main-base/src/main/java/com/facebook/presto/sql/planner/LogicalPlanner.java:342 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use only existing column names in the ZORDER BY clause","Check spelling/quoting of column names against SHOW COLUMNS","Add the desired columns to the table before rewriting"],"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"}