{"record":{"id":"f257b3185840862d","repo":"apache/flink","slug":"does-not-exist","errorCode":null,"errorMessage":"{} does not exist","messagePattern":"(.+?) does not exist","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"flink-formats/flink-parquet/src/main/java/org/apache/flink/formats/parquet/vector/ParquetColumnarRowSplitReader.java","lineNumber":167,"sourceCode":"        this.writableVectors = createWritableVectors();\n        this.columnarBatch = generator.generate(createReadableVectors());\n        this.row = new ColumnarRowData(columnarBatch);\n\n        MessageColumnIO columnIO = new ColumnIOFactory().getColumnIO(requestedSchema);\n        RowType selectedType = RowType.of(selectedTypes, selectedFieldNames);\n        this.fieldList =\n                buildFieldsList(selectedType.getFields(), selectedType.getFieldNames(), columnIO);\n    }\n\n    /** Clips `parquetSchema` according to `fieldNames`. */\n    private static MessageType clipParquetSchema(\n            GroupType parquetSchema, String[] fieldNames, boolean caseSensitive) {\n        Type[] types = new Type[fieldNames.length];\n        if (caseSensitive) {\n            for (int i = 0; i < fieldNames.length; ++i) {\n                String fieldName = fieldNames[i];\n                if (parquetSchema.getFieldIndex(fieldName) < 0) {\n                    throw new IllegalArgumentException(fieldName + \" does not exist\");\n                }\n                types[i] = parquetSchema.getType(fieldName);\n            }\n        } else {\n            Map<String, Type> caseInsensitiveFieldMap = new HashMap<>();\n            for (Type type : parquetSchema.getFields()) {\n                caseInsensitiveFieldMap.compute(\n                        type.getName().toLowerCase(Locale.ROOT),\n                        (key, previousType) -> {\n                            if (previousType != null) {\n                                throw new FlinkRuntimeException(\n                                        \"Parquet with case insensitive mode should have no duplicate key: \"\n                                                + key);\n                            }\n                            return type;\n                        });\n            }\n            for (int i = 0; i < fieldNames.length; ++i) {","sourceCodeStart":149,"sourceCodeEnd":185,"githubUrl":"https://github.com/apache/flink/blob/2f3c205e9266cb30240eb7f4fdab15cad629a70f/flink-formats/flink-parquet/src/main/java/org/apache/flink/formats/parquet/vector/ParquetColumnarRowSplitReader.java#L149-L185","documentation":"ParquetColumnarRowSplitReader clips the parquet schema to the requested field names. In case-sensitive mode, if a requested field name has no match in the file's parquet schema (getFieldIndex < 0), it throws IllegalArgumentException(fieldName + ' does not exist').","triggerScenarios":"Reading with a projected schema whose field names don't match the parquet file - e.g. case mismatch (userId vs UserId), renamed columns, or a DDL/table schema referencing columns absent from the file.","commonSituations":"Schema evolution where the table schema has newer names than old files; case-sensitive flag set while files use different casing; typos in the SELECT/projection list; mixing files from different writers.","solutions":["Align the requested field names with the parquet file's actual column names (check with parquet-tools/parquet-schema)","If only casing differs, enable case-insensitive mode ('table.exec.sink.upsert-insert-extract' style options aside: use the reader's caseSensitive=false path / corresponding connector option)","Add missing columns to the files or remove them from the projection; use schema evolution support in the catalog"],"exampleFix":"-- before\nSELECT userId FROM parquet_table; -- file column is `UserId`\n\n-- after\nSELECT UserId FROM parquet_table;\n-- or configure case-insensitive reading if the connector supports it","handlingStrategy":"validation","validationCode":"for (String f : requestedFields) {\n  if (parquetSchema.getFieldIndex(f) < 0) throw new IllegalArgumentException(\"field '\" + f + \"' missing in \" + parquetSchema.getName());\n}","typeGuard":null,"tryCatchPattern":"try { reader = new ParquetColumnarRowSplitReader(...); } catch (IllegalArgumentException e) { if (e.getMessage().endsWith(\"does not exist\")) { /* reconcile projection with file schema */ } throw e; }","preventionTips":["Dump the parquet schema (parquet-tools meta/schema) and diff against your table schema","Match column-name casing exactly when case-sensitive reading is on","During schema evolution, ensure old files contain (or are migrated to) new column names"],"tags":["parquet","schema-mismatch","projection","case-sensitivity"],"backgroundTag":null,"analyzedSha":"2f3c205e9266cb30240eb7f4fdab15cad629a70f","analyzedAt":"2026-08-14T08:48:24.518Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}