Skip to content

Support range partitioning - #24

Open
gene-bordegaray wants to merge 1 commit into
arrow-58-59-dd-04-08-2026from
gene.bordegaray/2026/08/06/range-partitioning
Open

Support range partitioning#24
gene-bordegaray wants to merge 1 commit into
arrow-58-59-dd-04-08-2026from
gene.bordegaray/2026/08/06/range-partitioning

Conversation

@gene-bordegaray

Copy link
Copy Markdown

adding range support for cherry pick

@gene-bordegaray gene-bordegaray changed the title Support range partitioning metadata Support range partitioning Aug 7, 2026
match partitioning {
Partitioning::RoundRobinBatch(_) => Partitioning::RoundRobinBatch(scaled_count),
Partitioning::Hash(hash, _) => Partitioning::Hash(hash.clone(), scaled_count),
Partitioning::Range(range) if scaled_count == partition_count => {

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

this is why I cant just have the default fallback paths in upstream

@gene-bordegaray
gene-bordegaray force-pushed the gene.bordegaray/2026/08/06/range-partitioning branch from 32ff88a to 8e884e8 Compare August 7, 2026 14:26
Comment thread tests/tpcds_plans_test.rs
@@ -165,7 +165,7 @@ mod tests {
│ DistributedUnionExec: t0:[c0(0/2)] t1:[c0(1/2)] t2:[c1(0/2)] t3:[c1(1/2)]
│ DistributedLeafExec:
│ t0: DataSourceExec: file_groups={3 groups: [[/testdata/tpcds/plans_sf1_partitions4/web_sales/part-0.parquet:<int>..<int>], [/testdata/tpcds/plans_sf1_partitions4/web_sales/part-1.parquet:<int>..<int>], [/testdata/tpcds/plans_sf1_partitions4/web_sales/part-2.parquet:<int>..<int>, /testdata/tpcds/plans_sf1_partitions4/web_sales/part-3.parquet:<int>..<int>]]}, projection=[ws_sold_date_sk@0 as sold_date_sk, ws_ext_sales_price@23 as sales_price], file_type=parquet, predicate=DynamicFilter [ empty ]
│ t1: DataSourceExec: file_groups={3 groups: [[/testdata/tpcds/plans_sf1_partitions4/web_sales/part-0.parquet:<int>..<int>, /testdata/tpcds/plans_sf1_partitions4/web_sales/part-1.parquet:<int>..<int>, /testdata/tpcds/plans_sf1_partitions4/web_sales/part-1.parquet:<int>..<int>], [/testdata/tpcds/plans_sf1_partitions4/web_sales/part-1.parquet:<int>..<int>, /testdata/tpcds/plans_sf1_partitions4/web_sales/part-2.parquet:<int>..<int>, /testdata/tpcds/plans_sf1_partitions4/web_sales/part-2.parquet:<int>..<int>], [/testdata/tpcds/plans_sf1_partitions4/web_sales/part-3.parquet:<int>..<int>]]}, projection=[ws_sold_date_sk@0 as sold_date_sk, ws_ext_sales_price@23 as sales_price], file_type=parquet, predicate=DynamicFilter [ empty ]
│ t1: DataSourceExec: file_groups={3 groups: [[/testdata/tpcds/plans_sf1_partitions4/web_sales/part-0.parquet:<int>..<int>, /testdata/tpcds/plans_sf1_partitions4/web_sales/part-1.parquet:<int>..<int>], [/testdata/tpcds/plans_sf1_partitions4/web_sales/part-1.parquet:<int>..<int>, /testdata/tpcds/plans_sf1_partitions4/web_sales/part-2.parquet:<int>..<int>], [/testdata/tpcds/plans_sf1_partitions4/web_sales/part-3.parquet:<int>..<int>]]}, projection=[ws_sold_date_sk@0 as sold_date_sk, ws_ext_sales_price@23 as sales_price], file_type=parquet, predicate=DynamicFilter [ empty ]

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

most of these just due to new arrow / parquet, these are generated at runtime so layout and file sizes changed a bit

@gene-bordegaray
gene-bordegaray marked this pull request as ready for review August 7, 2026 14:57
Comment thread tests/tpcds_plans_test.rs
@@ -942,10 +942,10 @@ mod tests {
│ [Stage 2] => NetworkBroadcastExec: partitions_per_consumer=3, stage_partitions=12, input_tasks=4
│ RepartitionExec: partitioning=RoundRobinBatch(3), input_partitions=2
│ DistributedLeafExec:
│ t0: DataSourceExec: file_groups={2 groups: [[/testdata/tpcds/plans_sf1_partitions4/customer_address/part-0.parquet:<int>..<int>], [/testdata/tpcds/plans_sf1_partitions4/customer_address/part-1.parquet:<int>..<int>]]}, projection=[ca_address_sk, ca_zip], file_type=parquet, predicate=DynamicFilter [ empty ] AND DynamicFilter [ empty ]
│ t1: DataSourceExec: file_groups={2 groups: [[/testdata/tpcds/plans_sf1_partitions4/customer_address/part-0.parquet:<int>..<int>], [/testdata/tpcds/plans_sf1_partitions4/customer_address/part-1.parquet:<int>..<int>, /testdata/tpcds/plans_sf1_partitions4/customer_address/part-2.parquet:<int>..<int>]]}, projection=[ca_address_sk, ca_zip], file_type=parquet, predicate=DynamicFilter [ empty ] AND DynamicFilter [ empty ]
│ t2: DataSourceExec: file_groups={2 groups: [[/testdata/tpcds/plans_sf1_partitions4/customer_address/part-0.parquet:<int>..<int>, /testdata/tpcds/plans_sf1_partitions4/customer_address/part-1.parquet:<int>..<int>], [/testdata/tpcds/plans_sf1_partitions4/customer_address/part-2.parquet:<int>..<int>, /testdata/tpcds/plans_sf1_partitions4/customer_address/part-3.parquet:<int>..<int>]]}, projection=[ca_address_sk, ca_zip], file_type=parquet, predicate=DynamicFilter [ empty ] AND DynamicFilter [ empty ]

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

all the dyn fitler changes are from upstream fixes that disable dyn filters for joins with NullEqual: true

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