{"record":{"id":"1fc48834cec0ddd6","repo":"apache/flink","slug":"unsupported-type-1fc488","errorCode":null,"errorMessage":"Unsupported type: {}","messagePattern":"Unsupported type: (.+?)","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"flink-formats/flink-parquet/src/main/java/org/apache/flink/formats/parquet/vector/ParquetSplitReaderUtil.java","lineNumber":284,"sourceCode":"                    dv.fill(((Number) value).doubleValue());\n                }\n                return dv;\n            case DATE:\n                if (value instanceof LocalDate) {\n                    value = Date.valueOf((LocalDate) value);\n                }\n                return createVectorFromConstant(\n                        new IntType(), value == null ? null : toInternal((Date) value), batchSize);\n            case TIMESTAMP_WITHOUT_TIME_ZONE:\n                HeapTimestampVector tv = new HeapTimestampVector(batchSize);\n                if (value == null) {\n                    tv.fillWithNulls();\n                } else {\n                    tv.fill(TimestampData.fromLocalDateTime((LocalDateTime) value));\n                }\n                return tv;\n            default:\n                throw new UnsupportedOperationException(\"Unsupported type: \" + type);\n        }\n    }\n\n    private static List<ColumnDescriptor> getAllColumnDescriptorByType(\n            int depth, Type type, List<ColumnDescriptor> columns) throws ParquetRuntimeException {\n        List<ColumnDescriptor> res = new ArrayList<>();\n        for (ColumnDescriptor descriptor : columns) {\n            if (depth >= descriptor.getPath().length) {\n                throw new InvalidSchemaException(\"Corrupted Parquet schema\");\n            }\n            if (type.getName().equals(descriptor.getPath()[depth])) {\n                res.add(descriptor);\n            }\n        }\n\n        // If doesn't find the type descriptor in corresponding depth, throw exception\n        if (res.isEmpty()) {\n            throw new InvalidSchemaException(","sourceCodeStart":266,"sourceCodeEnd":302,"githubUrl":"https://github.com/apache/flink/blob/2f3c205e9266cb30240eb7f4fdab15cad629a70f/flink-formats/flink-parquet/src/main/java/org/apache/flink/formats/parquet/vector/ParquetSplitReaderUtil.java#L266-L302","documentation":"UnsupportedOperationException from the default branch of createVectorFromConstant in ParquetSplitReaderUtil. This utility materializes an in-memory constant column vector for a logical type (used to fill missing/all-null columns); the exhaustive switch covers primitives, timestamps, dates, etc., and any unhandled LogicalTypeRoot falls through to this throw.","triggerScenarios":"createVectorFromConstant(batchSize, type, value) invoked with a logical type outside the handled set - typically structured types (ARRAY/MAP/ROW/MULTISET) or exotic roots (STRUCTURED_TYPE, SYMBOL, DISTINCT_TYPE, UNRESOLVED) when a constant vector must be built for them.","commonSituations":"Reading tables where a nested (array/map/row) column is missing from a file and must be filled with nulls; table schemas containing rarely used SQL types not covered by the vectorized Parquet path in that Flink version.","solutions":["Ensure every projected column exists in the Parquet files so no constant/missing-column vector is needed for nested types","Cast or flatten the nested/exotic column out of the projection","Upgrade Flink - coverage of constant vectors for nested types has expanded over versions; check the changelog for your type"],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":null,"typeGuard":"static boolean supportsConstantVector(LogicalTypeRoot root) {\n    return root == LogicalTypeRoot.CHAR || root == LogicalTypeRoot.VARCHAR\n            || root == LogicalTypeRoot.BOOLEAN || root == LogicalTypeRoot.TINYINT\n            || root == LogicalTypeRoot.SMALLINT || root == LogicalTypeRoot.INTEGER\n            || root == LogicalTypeRoot.BIGINT || root == LogicalTypeRoot.FLOAT\n            || root == LogicalTypeRoot.DOUBLE || root == LogicalTypeRoot.DECIMAL\n            || root == LogicalTypeRoot.DATE || root == LogicalTypeRoot.TIME_WITHOUT_TIME_ZONE\n            || root == LogicalTypeRoot.TIMESTAMP_WITHOUT_TIME_ZONE\n            || root == LogicalTypeRoot.TIMESTAMP_WITH_LOCAL_TIME_ZONE;\n}","tryCatchPattern":"catch (UnsupportedOperationException e) { if (e.getMessage().startsWith(\"Unsupported type:\")) { /* drop nested/exotic column from projection */ } else throw e; }","preventionTips":["Keep missing-column fills to primitive types; ensure nested columns exist in files","Test new SQL types against the Parquet reader before rolling out"],"tags":["parquet","unsupported-type","vectorized-reader","flink"],"backgroundTag":null,"analyzedSha":"2f3c205e9266cb30240eb7f4fdab15cad629a70f","analyzedAt":"2026-08-14T08:48:24.518Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}