{"record":{"id":"b6a9ad510a81c46d","repo":"apache/iceberg","slug":"skip-is-not-supported-b6a9ad","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/VectorizedByteStreamSplitValuesReader.java","lineNumber":111,"sourceCode":"\n  @Override\n  public void readLongs(int total, FieldVector vec, int rowId) {\n    readBatch(total, vec, rowId);\n  }\n\n  @Override\n  public void readFloats(int total, FieldVector vec, int rowId) {\n    readBatch(total, vec, rowId);\n  }\n\n  @Override\n  public void readDoubles(int total, FieldVector vec, int rowId) {\n    readBatch(total, vec, rowId);\n  }\n\n  @Override\n  public void skip() {\n    throw new UnsupportedOperationException(\"skip is not supported\");\n  }\n\n  private void readBatch(int total, FieldVector vec, int rowId) {\n    ensureDecoded();\n    int bytesToRead = total * elementSizeInBytes;\n    long destOffset = (long) rowId * elementSizeInBytes;\n    ByteBuffer slice = decodedDataStream.slice();\n    slice.limit(bytesToRead);\n    vec.getDataBuffer().setBytes(destOffset, slice);\n    decodedDataStream.position(decodedDataStream.position() + bytesToRead);\n  }\n\n  private void ensureDecoded() {\n    if (decodedDataStream == null) {\n      Preconditions.checkState(\n          totalBytesInStream % elementSizeInBytes == 0,\n          \"Stream size %s is not a multiple of element size %s\",\n          totalBytesInStream,","sourceCodeStart":93,"sourceCodeEnd":129,"githubUrl":"https://github.com/apache/iceberg/blob/86d9c8fc543e7c56c9f624eb725f76c9baff9570/arrow/src/main/java/org/apache/iceberg/arrow/vectorized/parquet/VectorizedByteStreamSplitValuesReader.java#L93-L129","documentation":"VectorizedByteStreamSplitValuesReader does not implement skip(): BYTE_STREAM_SPLIT decoding requires reading whole streams to maintain byte positions, so skip() throws UnsupportedOperationException with this message.","triggerScenarios":"Calling skip() while decoding a BYTE_STREAM_SPLIT encoded FLOAT/DOUBLE column.","commonSituations":"Engine integrations (e.g. predicate-pushdown skipping) over FLOAT/DOUBLE columns written with BYTE_STREAM_SPLIT encoding.","solutions":["Read the batch and ignore the values instead of skipping.","Rewrite the data with a different encoding (e.g. PLAIN) if skipping is required.","Use the non-vectorized reader path that supports BYTE_STREAM_SPLIT skipping."],"exampleFix":"// before\nreader.skip();\n// after\nreader.readDoubles(1, vec, rowId); // read and ignore","handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"// catch (UnsupportedOperationException e) {\n//   if (\"skip is not supported\".equals(e.getMessage())) { readBatchAndIgnore(); }\n//   else throw e;\n// }","preventionTips":["Avoid skip() with BYTE_STREAM_SPLIT columns; read and discard.","Prefer PLAIN encoding when skip paths are expected.","Route skip requests to the non-vectorized reader."],"tags":["parquet","byte-stream-split","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"}