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
- Read the value (readBytes/readBinary) and discard it instead of skipping.
- Rewrite the data with PLAIN encoding if skip semantics are required.
- 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
- Do not call skip() on delta-encoded vectorized readers — state depends on all values.
- Use the non-vectorized DeltaByteArrayReader when skipping is required.
- Rewrite data with PLAIN encoding if skip-heavy workloads are expected.
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
- Unsupported variant: shredded typed_value array
- skip is not supported
- skip is not supported
- Non-supported bytesWidth: " + bytesWidth
- not a valid mode " + this.mode
AI-assisted analysis of apache/iceberg@86d9c8fc54 (2026-09-12).
Data as JSON: /api/errors/d6076e739d661aa0.
Report an issue: GitHub.