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

  1. Disable vectorized reads for the scan (e.g. read.split.vectorization.enabled=false) so the non-vectorized reader, which supports skipping, is used.
  2. Rewrite the data files with a supported encoding (e.g. plain or dictionary) so skipping works under vectorized reads.
  3. 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

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


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