@@ -1100,16 +1100,15 @@ CREATE EXTERNAL TABLE reversed_parquet(id INT, value INT)
11001100STORED AS PARQUET
11011101LOCATION 'test_files/scratch/sort_pushdown/reversed/';
11021102
1103- # Test 4.1: SortExec must be present because files are not in inter-file order
1103+ # Test 4.1: Files sorted by statistics → non-overlapping → SortExec eliminated
1104+ # (files reordered from [a_high, b_mid, c_low] to [c_low, b_mid, a_high])
11041105query TT
11051106EXPLAIN SELECT * FROM reversed_parquet ORDER BY id ASC;
11061107----
11071108logical_plan
1108110901)Sort: reversed_parquet.id ASC NULLS LAST
1109111002)--TableScan: reversed_parquet projection=[id, value]
1110- physical_plan
1111- 01)SortExec: expr=[id@0 ASC NULLS LAST], preserve_partitioning=[false]
1112- 02)--DataSourceExec: file_groups={1 group: [[WORKSPACE_ROOT/datafusion/sqllogictest/test_files/scratch/sort_pushdown/reversed/c_low.parquet, WORKSPACE_ROOT/datafusion/sqllogictest/test_files/scratch/sort_pushdown/reversed/b_mid.parquet, WORKSPACE_ROOT/datafusion/sqllogictest/test_files/scratch/sort_pushdown/reversed/a_high.parquet]]}, projection=[id, value], file_type=parquet
1111+ physical_plan DataSourceExec: file_groups={1 group: [[WORKSPACE_ROOT/datafusion/sqllogictest/test_files/scratch/sort_pushdown/reversed/c_low.parquet, WORKSPACE_ROOT/datafusion/sqllogictest/test_files/scratch/sort_pushdown/reversed/b_mid.parquet, WORKSPACE_ROOT/datafusion/sqllogictest/test_files/scratch/sort_pushdown/reversed/a_high.parquet]]}, projection=[id, value], output_ordering=[id@0 ASC NULLS LAST], file_type=parquet
11131112
11141113# Test 4.2: Results must be correct
11151114query II
@@ -1184,16 +1183,15 @@ STORED AS PARQUET
11841183LOCATION 'test_files/scratch/sort_pushdown/reversed/'
11851184WITH ORDER (id ASC);
11861185
1187- # Test 6.1: SortExec must be present despite WITH ORDER
1186+ # Test 6.1: Files sorted by statistics → non-overlapping → SortExec eliminated
1187+ # WITH ORDER declared + files reordered to correct order
11881188query TT
11891189EXPLAIN SELECT * FROM reversed_with_order_parquet ORDER BY id ASC;
11901190----
11911191logical_plan
1192119201)Sort: reversed_with_order_parquet.id ASC NULLS LAST
1193119302)--TableScan: reversed_with_order_parquet projection=[id, value]
1194- physical_plan
1195- 01)SortExec: expr=[id@0 ASC NULLS LAST], preserve_partitioning=[false]
1196- 02)--DataSourceExec: file_groups={1 group: [[WORKSPACE_ROOT/datafusion/sqllogictest/test_files/scratch/sort_pushdown/reversed/c_low.parquet, WORKSPACE_ROOT/datafusion/sqllogictest/test_files/scratch/sort_pushdown/reversed/b_mid.parquet, WORKSPACE_ROOT/datafusion/sqllogictest/test_files/scratch/sort_pushdown/reversed/a_high.parquet]]}, projection=[id, value], file_type=parquet
1194+ physical_plan DataSourceExec: file_groups={1 group: [[WORKSPACE_ROOT/datafusion/sqllogictest/test_files/scratch/sort_pushdown/reversed/c_low.parquet, WORKSPACE_ROOT/datafusion/sqllogictest/test_files/scratch/sort_pushdown/reversed/b_mid.parquet, WORKSPACE_ROOT/datafusion/sqllogictest/test_files/scratch/sort_pushdown/reversed/a_high.parquet]]}, projection=[id, value], output_ordering=[id@0 ASC NULLS LAST], file_type=parquet
11971195
11981196# Test 6.2: Results must be correct
11991197query II
@@ -1322,17 +1320,15 @@ STORED AS PARQUET
13221320LOCATION 'test_files/scratch/sort_pushdown/desc_reversed/'
13231321WITH ORDER (id DESC);
13241322
1325- # Test 8.1: SortExec must be present — files are in wrong inter-file DESC order
1326- # (a_low has 1-3, b_high has 7-9; for DESC, b_high should come first )
1323+ # Test 8.1: Files sorted by statistics → non-overlapping → SortExec eliminated
1324+ # (files reordered: b_high( 7-9) before a_low(1-3) for DESC order )
13271325query TT
13281326EXPLAIN SELECT * FROM desc_reversed_parquet ORDER BY id DESC;
13291327----
13301328logical_plan
1331132901)Sort: desc_reversed_parquet.id DESC NULLS FIRST
1332133002)--TableScan: desc_reversed_parquet projection=[id, value]
1333- physical_plan
1334- 01)SortExec: expr=[id@0 DESC], preserve_partitioning=[false]
1335- 02)--DataSourceExec: file_groups={1 group: [[WORKSPACE_ROOT/datafusion/sqllogictest/test_files/scratch/sort_pushdown/desc_reversed/b_high.parquet, WORKSPACE_ROOT/datafusion/sqllogictest/test_files/scratch/sort_pushdown/desc_reversed/a_low.parquet]]}, projection=[id, value], file_type=parquet
1331+ physical_plan DataSourceExec: file_groups={1 group: [[WORKSPACE_ROOT/datafusion/sqllogictest/test_files/scratch/sort_pushdown/desc_reversed/b_high.parquet, WORKSPACE_ROOT/datafusion/sqllogictest/test_files/scratch/sort_pushdown/desc_reversed/a_low.parquet]]}, projection=[id, value], output_ordering=[id@0 DESC], file_type=parquet
13361332
13371333# Test 8.2: Results must be correct
13381334query II
0 commit comments