{"record":{"id":"5b8bc4fc6afecce4","repo":"apache/iceberg","slug":"readintegers-is-not-supported","errorCode":null,"errorMessage":"readIntegers is not supported","messagePattern":"readIntegers is not supported","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"arrow/src/main/java/org/apache/iceberg/arrow/vectorized/parquet/VectorizedValuesReader.java","lineNumber":85,"sourceCode":"  }\n\n  /** Read a single double */\n  default double readDouble() {\n    throw new UnsupportedOperationException(\"readDouble is not supported\");\n  }\n\n  /**\n   * Read binary data of some length\n   *\n   * @param len The number of bytes to read\n   */\n  default Binary readBinary(int len) {\n    throw new UnsupportedOperationException(\"readBinary is not supported\");\n  }\n\n  /** Read `total` integers into `vec` starting at `vec[rowId]` */\n  default void readIntegers(int total, FieldVector vec, int rowId) {\n    throw new UnsupportedOperationException(\"readIntegers is not supported\");\n  }\n\n  /** Read `total` longs into `vec` starting at `vec[rowId]` */\n  default void readLongs(int total, FieldVector vec, int rowId) {\n    throw new UnsupportedOperationException(\"readLongs is not supported\");\n  }\n\n  /** Read `total` floats into `vec` starting at `vec[rowId]` */\n  default void readFloats(int total, FieldVector vec, int rowId) {\n    throw new UnsupportedOperationException(\"readFloats is not supported\");\n  }\n\n  /** Read `total` doubles into `vec` starting at `vec[rowId]` */\n  default void readDoubles(int total, FieldVector vec, int rowId) {\n    throw new UnsupportedOperationException(\"readDoubles is not supported\");\n  }\n\n  /**","sourceCodeStart":67,"sourceCodeEnd":103,"githubUrl":"https://github.com/apache/iceberg/blob/86d9c8fc543e7c56c9f624eb725f76c9baff9570/arrow/src/main/java/org/apache/iceberg/arrow/vectorized/parquet/VectorizedValuesReader.java#L67-L103","documentation":"readIntegers(total, vec, rowId) is a batch-read default method on VectorizedValuesReader that throws UnsupportedOperationException. Concrete vectorized readers override it to bulk-decode integers directly into an Arrow IntVector. Reaching the default means nextVals() batch dispatch selected a reader class that never implemented the integer batch path.","triggerScenarios":"VectorizedPageReader.nextVals(total) calls readIntegers(total, vec, rowId) to fill an Arrow integer vector in bulk, but the active reader subclass does not override the batch integer method (e.g. it only implements per-value reads).","commonSituations":"Scanning INT columns with vectorized reads enabled where the reader falls back to a base implementation; dictionary-encoded or delta-encoded pages whose reader omits the batch path; custom or older reader implementations.","solutions":["Disable vectorized reads (read.arrow.enabled=false) to avoid the batch vectorized path.","Upgrade Iceberg for vectorized batch support for this type/encoding.","Implement readIntegers() in the concrete reader, filling vec[rowId..rowId+total)."],"exampleFix":"// before\n// default readIntegers throws\n// after\n@Override\npublic void readIntegers(int total, FieldVector vec, int rowId) {\n  for (int i = 0; i < total; i++) ((IntVector) vec).setSafe(rowId + i, readInteger());\n}","handlingStrategy":"try-catch","validationCode":"// precheck column type before batch vectorized scan\nboolean isInt = columnType.equals(Types.IntegerType.get());\nif (!isInt) throw new IllegalStateException(\"batch int read requested for non-int column\");","typeGuard":null,"tryCatchPattern":"try {\n  scan = table.newScan().includeColumnStats();\n  tasks = Tasks.foreach(tasks)\n} catch (UnsupportedOperationException e) {\n  // fall back: rerun with read.arrow.enabled=false\n  props.put(\"read.arrow.enabled\", \"false\");\n}","preventionTips":["Only use batch vectorized reads for INT columns with a reader that overrides readIntegers.","Keep custom VectorizedValuesReader implementations in sync with all dispatch sites.","Test with the exact Parquet encodings your writers produce."],"tags":["arrow","parquet","vectorized-read","batch-read","unsupported-operation"],"backgroundTag":"unsupported-operation","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"}