diff --git a/crates/polars-mem-engine/src/executors/sort.rs b/crates/polars-mem-engine/src/executors/sort.rs index 4c3303dbae32..d20cbb0e0c70 100644 --- a/crates/polars-mem-engine/src/executors/sort.rs +++ b/crates/polars-mem-engine/src/executors/sort.rs @@ -13,10 +13,9 @@ impl SortExec { fn execute_impl( &mut self, state: &ExecutionState, - mut df: DataFrame, + df: DataFrame, ) -> PolarsResult { state.should_stop()?; - df.rechunk_mut_par(); let height = df.height(); diff --git a/py-polars/tests/unit/operations/test_sort.py b/py-polars/tests/unit/operations/test_sort.py index 7424776e0321..621133080b85 100644 --- a/py-polars/tests/unit/operations/test_sort.py +++ b/py-polars/tests/unit/operations/test_sort.py @@ -1289,3 +1289,13 @@ def test_sort_by_empty_list_eval_25433() -> None: out = df.select(pl.col.a.list.eval(pl.element().sort_by(pl.element()))) expected = pl.DataFrame({"a": [sorted(some_list), []]}) assert_frame_equal(out, expected) + + +def test_sort_already_sorted_no_rechunk_25733() -> None: + df1 = pl.DataFrame({"a": [1, 2], "b": [3, 4]}) + df2 = pl.DataFrame({"a": [3, 4], "b": [5, 6]}) + df = pl.concat([df1, df2], rechunk=False).with_columns(pl.col("a").set_sorted()) + assert df.n_chunks() == 2 + + result = df.sort("a") + assert result.n_chunks() == 2 # No rechunk happened