{"record":{"id":"d6076e739d661aa0","repo":"apache/iceberg","slug":"skip-is-not-supported-d6076e","errorCode":null,"errorMessage":"skip is not supported","messagePattern":"skip is not supported","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"arrow/src/main/java/org/apache/iceberg/arrow/vectorized/parquet/VectorizedDeltaByteArrayValuesReader.java","lineNumber":81,"sourceCode":"    this.currentRow++;\n\n    if (prefixLength == 0) {\n      this.previous = suffix;\n      return suffix;\n    }\n\n    byte[] prefixBytes = previous.getBytes();\n    byte[] suffixBytes = suffix.getBytes();\n    byte[] out = new byte[prefixLength + suffixBytes.length];\n    System.arraycopy(prefixBytes, 0, out, 0, prefixLength);\n    System.arraycopy(suffixBytes, 0, out, prefixLength, suffixBytes.length);\n    this.previous = Binary.fromConstantByteArray(out);\n    return previous;\n  }\n\n  @Override\n  public void skip() {\n    throw new UnsupportedOperationException(\"skip is not supported\");\n  }\n}\n","sourceCodeStart":63,"sourceCodeEnd":84,"githubUrl":"https://github.com/apache/iceberg/blob/86d9c8fc543e7c56c9f624eb725f76c9baff9570/arrow/src/main/java/org/apache/iceberg/arrow/vectorized/parquet/VectorizedDeltaByteArrayValuesReader.java#L63-L84","documentation":"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.","triggerScenarios":"Calling skip() while decoding a DELTA_BYTE_ARRAY (DELTA_LENGTH_BYTE_ARRAY prefix) encoded binary column.","commonSituations":"Predicate/skip paths in engine integrations over STRING/BINARY columns written with DELTA_BYTE_ARRAY encoding.","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."],"exampleFix":"// before\nreader.skip();\n// after\nreader.readBytes(); // consume to keep decoder state, discard result","handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"// catch (UnsupportedOperationException e) {\n//   if (\"skip is not supported\".equals(e.getMessage())) { readAndDiscardValue(); }\n//   else throw e;\n// }","preventionTips":["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."],"tags":["parquet","delta-byte-array","vectorized-reader","unsupported-feature"],"backgroundTag":"method-not-implemented","analyzedSha":"86d9c8fc543e7c56c9f624eb725f76c9baff9570","analyzedAt":"2026-09-12T00:46:39.097Z","contentChangedAt":"2026-09-12T00:46:39.097Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}