You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@asterixdb.apache.org by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu> on 2026/10/12 10:21:56 UTC

[XL] Change in asterixdb[master]: [ASTERIXDB-3945][EXT]: Guard numeric pushdown

From Hussain Towaileb <hu...@gmail.com>:

Attention is currently required from: Hussain Towaileb, Ian Maxon.

Hello Ian Maxon, Jenkins, 

I'd like you to reexamine a change. Please visit

    https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/22009?usp=email

to look at the new patch set (#2).

The following approvals got outdated and were removed:
Code-Review+1 by Hussain Towaileb, Code-Review+2 by Ian Maxon, Integration-Tests+1 by Jenkins, Verified+1 by Jenkins

The change is no longer submittable: Code-Review and Verified are unsatisfied now.


Change subject: [ASTERIXDB-3945][EXT]: Guard numeric pushdown
......................................................................

[ASTERIXDB-3945][EXT]: Guard numeric pushdown

- user model changes: no
- storage format changes: no
- interface changes: no

Details: Iceberg skips files by comparing a pushed literal with each
file's bounds, and disagrees with the engine in four cases, so a numeric
predicate could skip Iceberg files holding matching rows. Binding rounds
the literal to a float or decimal column's type while the engine
compares against the literal as written; decimals wider than 15 digits
can read back as the same double, which the engine then calls equal;
Iceberg orders -0.0 below 0.0, which the engine treats as equal; and the
engine orders NaN above every number while Iceberg never matches NaN in
an ordering comparison. Once the schema is known, pushdown now gives up
the comparisons Iceberg would decide differently, using Iceberg's own
literal conversion to tell, and pushes > and >= on float and double
columns together with isNaN. AND keeps its other side; OR and NOT are
given up whole.

Added tests checking pushed numeric predicates and their negations over
real Iceberg tables, NaN included, against the engine's comparator, the
weakening rules, and an end-to-end case comparing pushed predicates with
unpushable ones.

Ext-ref: MB-74469
Generated-by: Claude Opus 5.5 <no...@anthropic.com>
Change-Id: Ie7f3ae5b6ed9f379eb3409190ffe5df208cb1d3e
---
M asterixdb/asterix-app/src/test/java/org/apache/asterix/test/iceberg/IcebergTest.java
A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/iceberg/numeric-pushdown/test.000.ddl.sqlpp
A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/iceberg/numeric-pushdown/test.010.ddl.sqlpp
A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/iceberg/numeric-pushdown/test.020.query.sqlpp
A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/iceberg/numeric-pushdown/test.030.query.sqlpp
A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/iceberg/numeric-pushdown/test.040.query.sqlpp
A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/iceberg/numeric-pushdown/test.050.query.sqlpp
A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/iceberg/numeric-pushdown/test.060.query.sqlpp
A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/iceberg/numeric-pushdown/test.070.query.sqlpp
A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/iceberg/numeric-pushdown/test.080.query.sqlpp
A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/iceberg/numeric-pushdown/test.090.query.sqlpp
A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/iceberg/numeric-pushdown/test.100.query.sqlpp
A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/iceberg/numeric-pushdown/test.110.query.sqlpp
A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/iceberg/numeric-pushdown/test.120.query.sqlpp
A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/iceberg/numeric-pushdown/test.130.query.sqlpp
A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/iceberg/numeric-pushdown/test.999.ddl.sqlpp
A asterixdb/asterix-app/src/test/resources/runtimets/results/iceberg/numeric-pushdown/result.020.adm
A asterixdb/asterix-app/src/test/resources/runtimets/results/iceberg/numeric-pushdown/result.030.adm
A asterixdb/asterix-app/src/test/resources/runtimets/results/iceberg/numeric-pushdown/result.040.adm
A asterixdb/asterix-app/src/test/resources/runtimets/results/iceberg/numeric-pushdown/result.050.adm
A asterixdb/asterix-app/src/test/resources/runtimets/results/iceberg/numeric-pushdown/result.060.adm
A asterixdb/asterix-app/src/test/resources/runtimets/results/iceberg/numeric-pushdown/result.070.adm
A asterixdb/asterix-app/src/test/resources/runtimets/results/iceberg/numeric-pushdown/result.080.adm
A asterixdb/asterix-app/src/test/resources/runtimets/results/iceberg/numeric-pushdown/result.090.adm
A asterixdb/asterix-app/src/test/resources/runtimets/results/iceberg/numeric-pushdown/result.100.adm
A asterixdb/asterix-app/src/test/resources/runtimets/results/iceberg/numeric-pushdown/result.110.adm
A asterixdb/asterix-app/src/test/resources/runtimets/results/iceberg/numeric-pushdown/result.120.adm
A asterixdb/asterix-app/src/test/resources/runtimets/results/iceberg/numeric-pushdown/result.130.adm
M asterixdb/asterix-app/src/test/resources/runtimets/testsuite_iceberg.xml
M asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/iceberg/IcebergParquetRecordReaderFactory.java
A asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/iceberg/NumericLiteralPredicateRewriter.java
A asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/util/iceberg/NumericLiteralPredicateRewriterTest.java
A asterixdb/asterix-metadata/src/test/java/org/apache/asterix/metadata/utils/filter/IcebergNumericLiteralPushdownTest.java
33 files changed, 1,122 insertions(+), 0 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/09/22009/2
-- 
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/22009?usp=email
To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings?usp=email

Gerrit-MessageType: newpatchset
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: Ie7f3ae5b6ed9f379eb3409190ffe5df208cb1d3e
Gerrit-Change-Number: 22009
Gerrit-PatchSet: 2
Gerrit-Owner: Hussain Towaileb <hu...@gmail.com>
Gerrit-Reviewer: Hussain Towaileb <hu...@gmail.com>
Gerrit-Reviewer: Ian Maxon <im...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Attention: Ian Maxon <im...@apache.org>
Gerrit-Attention: Hussain Towaileb <hu...@gmail.com>