{"record":{"id":"5a210285bebc6506","repo":"apache/iceberg","slug":"readdouble-is-not-supported","errorCode":null,"errorMessage":"readDouble is not supported","messagePattern":"readDouble 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":71,"sourceCode":"\n  /** Read a single integer */\n  default int readInteger() {\n    throw new UnsupportedOperationException(\"readInteger is not supported\");\n  }\n\n  /** Read a single long */\n  default long readLong() {\n    throw new UnsupportedOperationException(\"readLong is not supported\");\n  }\n\n  /** Read a single float */\n  default float readFloat() {\n    throw new UnsupportedOperationException(\"readFloat is not supported\");\n  }\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) {","sourceCodeStart":53,"sourceCodeEnd":89,"githubUrl":"https://github.com/apache/iceberg/blob/86d9c8fc543e7c56c9f624eb725f76c9baff9570/arrow/src/main/java/org/apache/iceberg/arrow/vectorized/parquet/VectorizedValuesReader.java#L53-L89","documentation":"readDouble() on VectorizedValuesReader has a default implementation that throws UnsupportedOperationException because the interface cannot know how to decode doubles from every page encoding. Only subclasses that support double decoding override it. Hitting this error means the vectorized decoder was asked to read a DOUBLE column through a reader class that does not implement double reads.","triggerScenarios":"VectorizedPageReader.nextVal() dispatches to readDouble() for a Parquet DOUBLE column while the active reader is the default/unimplemented one, e.g. because the reader factory had no vectorized implementation for this physical type or encoding (such as certain dictionary encodings).","commonSituations":"Queries over double columns with Arrow vectorized reads enabled on an Iceberg version lacking that support path; encodings (e.g. plain/dictionary combinations) whose dedicated reader omits readDouble; custom readers.","solutions":["Disable vectorized reads for the read (read.arrow.enabled=false) to fall back to the generic Parquet reader.","Upgrade Iceberg; vectorized support for this type/encoding may exist in newer releases.","If implementing a reader, override readDouble() to decode from the initialized page stream."],"exampleFix":"// before\n// default readDouble() throws\n// after\n@Override\npublic double readDouble() { return Double.longBitsToDouble(readLong()); }","handlingStrategy":"fallback","validationCode":"// avoid vectorized path for double columns when unsupported\nif (schema.columns().stream().anyMatch(c -> c.type().equals(Types.DoubleType.get())) && !doubleBatchSupported) {\n  props.put(\"read.arrow.enabled\", \"false\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Match read.arrow.enabled to types known to be vectorized in your release.","Test scan of every column type in your schema with vectorization on before production.","Wrap vectorized scans with a fallback to the generic Parquet reader."],"tags":["arrow","parquet","vectorized-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"}