thswlsqls opened a new issue, #17092:
URL: https://github.com/apache/iceberg/issues/17092
**Apache Iceberg version**
main @ 3038fde68
**Query engine**
None — engine-agnostic, reproducible via the Java Generic Read API
(`Parquet.read(...).filter(...)`).
**Please describe the bug**
`ParquetFilters.getParquetPrimitive()`
(`parquet/src/main/java/org/apache/iceberg/parquet/ParquetFilters.java` line
219) only handles `Number`, `CharSequence`, and `ByteBuffer` literal values, so
any `EQ`/`NOT_EQ` predicate on a `boolean` column falls through to the
exception on line 233. `Literals.BooleanLiteral`
(`api/.../expressions/Literals.java`) always returns a `java.lang.Boolean`, so
this path is unavoidable for any boolean predicate. The exception is thrown
while building the Parquet read builder (`Parquet.java` line 1635), before any
rows are read — the read fails outright instead of falling back to a full scan.
**Steps to reproduce**
1. Write a Parquet file for a schema containing a `required(N, "b",
Types.BooleanType.get())` column.
2. Read it back with
`Parquet.read(input).project(schema).filter(Expressions.equal("b",
true)).build()`.
3. Observe `java.lang.UnsupportedOperationException: Type not supported yet:
java.lang.Boolean` at `ParquetFilters.getParquetPrimitive`, called from
`ConvertFilterToParquet.predicate()`'s `case BOOLEAN` branch.
Expected: the reader returns only matching rows. Actual: the read throws
before returning any rows.
**Additional context**
Same failure occurs for `Expressions.notEqual("b", false)`. `Number` values
in the same method are returned via a direct cast; `Boolean` needs the
identical treatment since `FilterApi.eq(BooleanColumn, Boolean)` expects a
`Boolean` as-is.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]