apache/iceberg · error · UnsupportedOperationException
skip is not supported
Error message
skip is not supported
What it means
VectorizedDeltaLengthByteArrayValuesReader.skip() is not implemented; skipping values in DELTA_LENGTH_BYTE_ARRAY-encoded columns is unsupported in Iceberg's vectorized reader. Any call throws UnsupportedOperationException immediately. It is a fail-fast marker for an unimplemented reader capability.
Source
Thrown at arrow/src/main/java/org/apache/iceberg/arrow/vectorized/parquet/VectorizedDeltaLengthByteArrayValuesReader.java:81
buffer.array(), buffer.arrayOffset() + buffer.position(), len);
} else {
byte[] bytes = new byte[len];
buffer.get(bytes);
return Binary.fromConstantByteArray(bytes);
}
} catch (IOException e) {
throw new UncheckedIOException("Failed to read binary data", e);
}
}
@Override
public int readInteger() {
return lengths[currentRow];
}
@Override
public void skip() {
throw new UnsupportedOperationException("skip is not supported");
}
}
View on GitHub (pinned to 86d9c8fc54)
Solutions
- Disable vectorized reads for the scan (e.g. read.split.vectorization.enabled=false) so the non-vectorized reader, which supports skipping, is used.
- Rewrite the data files with a supported encoding (e.g. plain or dictionary) so skipping works under vectorized reads.
- Avoid scan configurations that require row skipping over these columns.
Example fix
// before SELECT ... FROM tbl WHERE ... -- vectorized read hits skip on DELTA_LENGTH_BYTE_ARRAY column // after SET spark.sql.iceberg.vectorization.enabled=false; SELECT ... FROM tbl WHERE ...
Defensive patterns
Strategy: fallback
Validate before calling
// Check whether vectorized reads are on and data may use DELTA_LENGTH_BYTE_ARRAY
boolean vectorized = conf.getBoolean("spark.sql.iceberg.vectorization.enabled", true); Try / catch
try {
// vectorized read
} catch (UnsupportedOperationException e) {
if (e.getMessage().contains("skip is not supported")) {
// rerun with vectorization disabled
} else throw e;
} Prevention
- Disable vectorization for tables with delta-length-encoded string/binary columns
- Prefer dictionary/plain encodings when writing files intended for vectorized reads
- Avoid filters that force row skipping in vectorized mode
When it happens
Trigger: A vectorized scan needs to skip values in a DELTA_LENGTH_BYTE_ARRAY column (e.g. via row skipping in filtering or null-value handling paths).
Common situations: Queries with filters triggering skip paths over delta-length-encoded string columns read via the vectorized reader.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- skip is not supported
- ${className} doesn't implement setRowGroupInfo(PageReadStore
- Unsupported variant: shredded typed_value array
- 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/ca58a02e2a3f35a6.
Report an issue: GitHub.