You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When a query uses pl.col(...).over(...) (or pl.len().over(...)) inside .filter(...) on a multi-rank streaming engine (RayEngine, DaskEngine, or SPMDEngine with num_ranks > 1), cudf-polars falls back to in-memory evaluation; see cudf_polars/experimental/utils.py:88.
The fallback executes independently on each rank, then concatenates the per-rank results. This preserves the correct set of rows, but not the original global row order from the input scan/concat.
As a result, assert_gpu_result_equal(..., check_row_order=True) (the default) fails with a row-order mismatch.
Following up on @wence-'s point that this is really the concat ordering bug: #24685 fixes #22376 by making an ordered multi-rank Union preserve global row order. With that PR the reproducer above passes on RayEngine(num_ranks=2) (on main it fails with a value mismatch on column k), and I added test_over_in_filter_after_concat_preserves_order so it's covered on all engines.
The existing xfails that point at this issue fail for other reasons, so I left them in place:
test_over_in_filter_unsupported and test_over_noncol_key_fallback (test_rolling.py): the fallback warning is raised on the Dask/Ray workers, so pytest.warns never sees it.
test_join_and_slice (test_join.py): flaky on main too, the zlice1 cases pass or fail from run to run.
Should those move to their own issue(s)? Happy to open them and update the xfail reasons, and this one could then be closed once #24685 lands.
Activity
wence- commentedon May 19, 2026
This is really an issue with
concat, not filter. See #22376Add regression test for NVIDIA#22405 order after concat
aryansri05 commentedon Oct 19, 2026
Following up on @wence-'s point that this is really the
concatordering bug: #24685 fixes #22376 by making an ordered multi-rankUnionpreserve global row order. With that PR the reproducer above passes onRayEngine(num_ranks=2)(onmainit fails with a value mismatch on columnk), and I addedtest_over_in_filter_after_concat_preserves_orderso it's covered on all engines.The existing xfails that point at this issue fail for other reasons, so I left them in place:
test_over_in_filter_unsupportedandtest_over_noncol_key_fallback(test_rolling.py): the fallback warning is raised on the Dask/Ray workers, sopytest.warnsnever sees it.test_join_and_slice(test_join.py): flaky onmaintoo, thezlice1cases pass or fail from run to run.Should those move to their own issue(s)? Happy to open them and update the xfail reasons, and this one could then be closed once #24685 lands.
Address review feedback on ordered Union