Apache Iceberg version
1.10.1 (latest release)
Query engine
Other
Please describe the bug 🐞
ParquetFilters.getParquetPrimitive() (line 223) has a TODO:
// TODO: this needs to convert to handle BigDecimal and UUID
The method handles Number, CharSequence, and ByteBuffer literal types, but does not handle BigDecimal (used for Iceberg decimal type) or UUID. When a predicate on a decimal or UUID column reaches the Parquet filter pushdown path, the method throws:
UnsupportedOperationException: Type not supported yet: java.math.BigDecimal
This prevents filter pushdown for decimal/UUID columns and can crash queries instead of gracefully falling back to post-scan filtering.
Expected behavior
BigDecimal should be converted to Parquet's Binary representation (fixed-length byte array with unscaled value)
UUID should be converted to a 16-byte Binary (or the appropriate Parquet logical type representation)
- Alternatively, return
null for unsupported types to skip pushdown gracefully rather than throwing
Affected file
ParquetFilters.java (line 223–234)
Willingness to contribute
Apache Iceberg version
1.10.1 (latest release)
Query engine
Other
Please describe the bug 🐞
ParquetFilters.getParquetPrimitive()(line 223) has a TODO:// TODO: this needs to convert to handle BigDecimal and UUIDThe method handles
Number,CharSequence, andByteBufferliteral types, but does not handleBigDecimal(used for Icebergdecimaltype) orUUID. When a predicate on a decimal or UUID column reaches the Parquet filter pushdown path, the method throws:This prevents filter pushdown for decimal/UUID columns and can crash queries instead of gracefully falling back to post-scan filtering.
Expected behavior
BigDecimalshould be converted to Parquet'sBinaryrepresentation (fixed-length byte array with unscaled value)UUIDshould be converted to a 16-byteBinary(or the appropriate Parquet logical type representation)nullfor unsupported types to skip pushdown gracefully rather than throwingAffected file
ParquetFilters.java (line 223–234)
Willingness to contribute