{"record":{"id":"1bb02ff3688189fb","repo":"prestodb/presto","slug":"value-field-is-missing-for-variant-type","errorCode":null,"errorMessage":"Value field is missing for variant type: ","messagePattern":"Value field is missing for variant type: ","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"presto-parquet/src/main/java/org/apache/parquet/io/ColumnIOConverter.java","lineNumber":107,"sourceCode":"                return Optional.of(new GroupField(type, repetitionLevel, definitionLevel, required, ImmutableList.of(keyField, valueField)));\n            }\n            else if (ARRAY.equals(type.getTypeSignature().getBase())) {\n                GroupColumnIO groupColumnIO = (GroupColumnIO) columnIO;\n                List<Type> types = type.getTypeParameters();\n                if (groupColumnIO.getChildrenCount() != 1) {\n                    return Optional.empty();\n                }\n                Optional<Field> field = constructField(types.get(0), getArrayElementColumn(groupColumnIO.getChild(0)));\n                return Optional.of(new GroupField(type, repetitionLevel, definitionLevel, required, ImmutableList.of(field)));\n            }\n            else if (JSON.equals(type.getTypeSignature().getBase())) {\n                GroupColumnIO groupColumnIO = (GroupColumnIO) columnIO;\n                if (groupColumnIO.getChildrenCount() != 2) {\n                    return Optional.empty();\n                }\n                Optional<Field> value = constructField(VarbinaryType.VARBINARY, groupColumnIO.getChild(0));\n                if (!value.isPresent()) {\n                    throw new IllegalArgumentException(\"Value field is missing for variant type: \" + type);\n                }\n                Optional<Field> metadata = constructField(VarbinaryType.VARBINARY, groupColumnIO.getChild(1));\n                if (!metadata.isPresent()) {\n                    throw new IllegalArgumentException(\"Metadata field is missing for variant type: \" + type);\n                }\n                return Optional.of(new VariantField(type, repetitionLevel, definitionLevel, required, value.get(), metadata.get()));\n            }\n        }\n        else if (columnIO instanceof PrimitiveColumnIO) {\n            PrimitiveColumnIO primitiveColumnIO = (PrimitiveColumnIO) columnIO;\n            RichColumnDescriptor column = new RichColumnDescriptor(primitiveColumnIO.getColumnDescriptor(), columnIO.getType().asPrimitiveType());\n            return Optional.of(new PrimitiveField(type, repetitionLevel, definitionLevel, required, column, primitiveColumnIO.getId()));\n        }\n        return Optional.empty();\n    }\n\n    public static Optional<ColumnIO> findNestedColumnIO(ColumnIO columnIO, List<String> path)\n    {","sourceCodeStart":89,"sourceCodeEnd":125,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-parquet/src/main/java/org/apache/parquet/io/ColumnIOConverter.java#L89-L125","documentation":"Guard in constructField for VARIANT (JSON) typed columns: the parquet group for a variant has no child matching the 'value' field, so the variant triple layout (key/value/metadata) is incomplete. Fires when reading a parquet schema whose variant group does not conform to the expected variant encoding.","triggerScenarios":"Thrown at presto-parquet/src/main/java/org/apache/parquet/io/ColumnIOConverter.java:107 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Ensure the parquet variant group contains the required 'value' child field per the variant shredding spec","Check the file was written by a compliant writer; re-write the data if the variant layout is malformed"],"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"}