Skip to content

upgrade to df55 - #83

Merged
jayshrivastava merged 4 commits into
gabotechs:mainfrom
jayshrivastava:js/upgrade-df-55
Sep 14, 2026
Merged

jayshrivastava merged 4 commits into
gabotechs:mainfrom
jayshrivastava:js/upgrade-df-55

Conversation

@jayshrivastava

@jayshrivastava jayshrivastava commented Sep 14, 2026 •

Copy link
Copy Markdown
Collaborator

Minor Changes

Similar changes to what we say in datafusion-distributed

Code Changes

  • deprecate ExecutionPlan::as_any()
  • implement ExecutionPlan::apply_expressions()
  • upgrade to tpchgen makes it so that the generators (ex. RegionArrow) return a Result ex. `Iterator<Item = Result<RecordBatch, ArrowError>>,

Plan Changes

Significant Changes

  1. Join projections. Joins in CUDF did not support out of order indexes. This change adds support for that. We now store the output projection and reorder columns in the output RecordBatches as they are produced. This is a schema-level operation on existing GPU buffers / cudf::columns.
  2. Support ScalarSubqueryExpr. These are supported automatically. We just had to make sure they aren't blocked by our expr_to_cudf_expr gate.
  3. Join types. See Support RightSemi, LeftSemi, LeftAnti, and RightAnti joins #85. 3 new queries use Semi joins which are unsupported, so we see some new CuDFLoad/CuDFUnload in plans.

@jayshrivastava
jayshrivastava marked this pull request as ready for review September 14, 2026 16:21
DataSourceExec: file_groups={1 group: [[/data/tpch/plan_sf0.02/region/1.parquet, /data/tpch/plan_sf0.02/region/10.parquet, /data/tpch/plan_sf0.02/region/11.parquet, /data/tpch/plan_sf0.02/region/12.parquet, /data/tpch/plan_sf0.02/region/13.parquet, /data/tpch/plan_sf0.02/region/14.parquet, /data/tpch/plan_sf0.02/region/15.parquet, /data/tpch/plan_sf0.02/region/16.parquet, /data/tpch/plan_sf0.02/region/2.parquet, /data/tpch/plan_sf0.02/region/3.parquet, /data/tpch/plan_sf0.02/region/4.parquet, /data/tpch/plan_sf0.02/region/5.parquet, /data/tpch/plan_sf0.02/region/6.parquet, /data/tpch/plan_sf0.02/region/7.parquet, /data/tpch/plan_sf0.02/region/8.parquet, /data/tpch/plan_sf0.02/region/9.parquet]]}, projection=[r_regionkey, r_name], file_type=parquet, predicate=r_name@1 = EUROPE, pruning_predicate=r_name_null_count@2 != row_count@3 AND r_name_min@0 <= EUROPE AND EUROPE <= r_name_max@1, required_guarantees=[r_name in (EUROPE)]
CuDFProjectionExec: expr=[p_partkey@2 as p_partkey, p_mfgr@3 as p_mfgr, s_name@4 as s_name, s_address@5 as s_address, s_phone@6 as s_phone, s_acctbal@7 as s_acctbal, s_comment@8 as s_comment, ps_supplycost@9 as ps_supplycost, n_name@0 as n_name, n_regionkey@1 as n_regionkey]
CuDFLoadExec
HashJoinExec: mode=CollectLeft, join_type=LeftSemi, on=[(p_partkey@0, ps_partkey@1), (ps_supplycost@7, min(partsupp.ps_supplycost)@0)], projection=[s_acctbal@5, s_name@2, n_name@8, p_partkey@0, p_mfgr@1, s_address@3, s_phone@4, s_comment@6]

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Example of a new left semi join which isn't supported, so we have to Load and Unload.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant