apache/iceberg · error · UnsupportedOperationException

skip is not supported

Error message

skip is not supported

What it means

VectorizedDeltaByteArrayValuesReader does not implement skip(): DELTA_BYTE_ARRAY decoding maintains previous-value state (prefix lengths), so skipping a single value would desynchronize the decoder. It throws UnsupportedOperationException with this message.

Source

Thrown at arrow/src/main/java/org/apache/iceberg/arrow/vectorized/parquet/VectorizedDeltaByteArrayValuesReader.java:81

    this.currentRow++;

    if (prefixLength == 0) {
      this.previous = suffix;
      return suffix;
    }

    byte[] prefixBytes = previous.getBytes();
    byte[] suffixBytes = suffix.getBytes();
    byte[] out = new byte[prefixLength + suffixBytes.length];
    System.arraycopy(prefixBytes, 0, out, 0, prefixLength);
    System.arraycopy(suffixBytes, 0, out, prefixLength, suffixBytes.length);
    this.previous = Binary.fromConstantByteArray(out);
    return previous;
  }

  @Override
  public void skip() {
    throw new UnsupportedOperationException("skip is not supported");
  }
}

View on GitHub (pinned to 86d9c8fc54)

Solutions

  1. Read the value (readBytes/readBinary) and discard it instead of skipping.
  2. Rewrite the data with PLAIN encoding if skip semantics are required.
  3. Use the non-vectorized DeltaByteArrayReader, which supports skipping while maintaining state.

Example fix

// before
reader.skip();
// after
reader.readBytes(); // consume to keep decoder state, discard result
Defensive patterns

Strategy: fallback

Try / catch

// catch (UnsupportedOperationException e) {
//   if ("skip is not supported".equals(e.getMessage())) { readAndDiscardValue(); }
//   else throw e;
// }

Prevention

When it happens

Trigger: Calling skip() while decoding a DELTA_BYTE_ARRAY (DELTA_LENGTH_BYTE_ARRAY prefix) encoded binary column.

Common situations: Predicate/skip paths in engine integrations over STRING/BINARY columns written with DELTA_BYTE_ARRAY encoding.

Related errors


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