{"record":{"id":"2e02afc605c69289","repo":"apache/iceberg","slug":"unsupported-variant-shredded-typed-value-primitiv","errorCode":null,"errorMessage":"Unsupported variant: shredded typed_value primitive","messagePattern":"Unsupported variant: shredded typed_value primitive","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"arrow/src/main/java/org/apache/iceberg/arrow/vectorized/VectorizedVariantVisitor.java","lineNumber":97,"sourceCode":"\n  @Override\n  public VectorizedReader<?> variant(\n      GroupType variant, VectorizedReader<?> metadataResult, VectorizedReader<?> valueResult) {\n    if (metadataResult instanceof VectorizedArrowReader\n        && valueResult instanceof VectorizedArrowReader) {\n      Types.NestedField field = findVariantField(variant);\n      if (field != null) {\n        return new VectorizedArrowReader.VectorizedVariantReader(\n            field, (VectorizedArrowReader) metadataResult, (VectorizedArrowReader) valueResult);\n      }\n    }\n\n    return null;\n  }\n\n  @Override\n  public VectorizedReader<?> primitive(PrimitiveType primitive) {\n    throw new UnsupportedOperationException(\"Unsupported variant: shredded typed_value primitive\");\n  }\n\n  @Override\n  public VectorizedReader<?> value(\n      GroupType value, VectorizedReader<?> valueResult, VectorizedReader<?> typedResult) {\n    if (typedResult != null) {\n      throw new UnsupportedOperationException(\n          \"Unsupported variant: shredded typed_value primitive\");\n    }\n    return valueResult;\n  }\n\n  @Override\n  public VectorizedReader<?> object(\n      GroupType object, VectorizedReader<?> valueResult, List<VectorizedReader<?>> fieldResults) {\n    throw new UnsupportedOperationException(\n        \"Unsupported variant: shredded typed_value object with \" + fieldResults.size() + \" fields\");\n  }","sourceCodeStart":79,"sourceCodeEnd":115,"githubUrl":"https://github.com/apache/iceberg/blob/86d9c8fc543e7c56c9f624eb725f76c9baff9570/arrow/src/main/java/org/apache/iceberg/arrow/vectorized/VectorizedVariantVisitor.java#L79-L115","documentation":"VectorizedVariantVisitor.primitive handles the Variant shredded typed_value column. When the typed_value is shredded as a bare primitive type, this visitor cannot produce a reader and throws UnsupportedOperationException — primitive shredding of Variant typed_value is not supported by this vectorized visitor.","triggerScenarios":"Reading a table with Variant columns whose Parquet shredding encodes typed_value as a primitive (per newer shred-variant specs) via the vectorized variant reader; the visitor's primitive() callback fires and throws.","commonSituations":"Variant data shredded by a newer writer/Spark version while the reader's Iceberg version lacks primitive-shredding support; version mismatch between writer and reader shred encodings.","solutions":["Upgrade Iceberg on the reader side to a version supporting primitive-typed_value shredding","Disable vectorized reads for variant columns / read via the non-vectorized path","Rewrite (compaction) with shredding disabled or with a supported shred layout"],"exampleFix":"// before\nspark.read.option(\"vectorized-reader-enabled\", \"true\").load(\"variant_table\")\n// after\nspark.read.option(\"vectorized-reader-enabled\", \"false\").load(\"variant_table\")","handlingStrategy":"fallback","validationCode":"// inspect shredding schema of typed_value\nif (typedValueField.getType().isPrimitive()) {\n  // unsupported: use non-vectorized variant reader\n}","typeGuard":null,"tryCatchPattern":"try {\n  return variantVisitor.build();\n} catch (UnsupportedOperationException e) {\n  return nonVectorizedVariantReader();\n}","preventionTips":["Keep writer and reader Iceberg versions consistent for Variant shredding","Disable vectorization on tables with shredded Variant columns","Upgrade before enabling primitive shredding on writers"],"tags":["variant","shredding","vectorized-reads"],"backgroundTag":"unsupported-operation","analyzedSha":"86d9c8fc543e7c56c9f624eb725f76c9baff9570","analyzedAt":"2026-09-12T00:46:39.097Z","contentChangedAt":"2026-09-12T00:46:39.097Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}