apache/iceberg · error · UnsupportedOperationException

Visitor does not support variant

Error message

Visitor does not support variant

What it means

Visitor guard in AvroWithPartnerByStructureVisitor: the schema contains a variant type (metadata+value pair), and this particular visitor implementation did not override the variant() visitor method. Unlike the sibling methods that return null for unneeded types, variant is a hard guard, so any Avro schema with variant fails traversal for this visitor.

Solutions

  1. Use a visitor implementation that overrides variant() when reading/writing variant data
  2. Remove variant-typed columns from the schema before the Avro conversion
  3. Upgrade Iceberg to a version whose visitors support variant
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at core/src/main/java/org/apache/iceberg/avro/AvroWithPartnerByStructureVisitor.java:221 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of apache/iceberg@86d9c8fc54 (2026-09-12). Data as JSON: /api/errors/d71f935d0f45a625. Report an issue: GitHub.

Appendix: source

Thrown at core/src/main/java/org/apache/iceberg/avro/AvroWithPartnerByStructureVisitor.java:221

  public T union(P type, Schema union, List<T> options) {
    return null;
  }

  public T array(P sArray, Schema array, T element) {
    return null;
  }

  public T map(P sMap, Schema map, T key, T value) {
    return null;
  }

  public T map(P sMap, Schema map, T value) {
    return null;
  }

  public T variant(P partner, T metadata, T value) {
    throw new UnsupportedOperationException("Visitor does not support variant");
  }

  public T primitive(P type, Schema primitive) {
    return null;
  }
}

View on GitHub (pinned to 86d9c8fc54)