diff --git a/crates/polars-plan/src/plans/conversion/join.rs b/crates/polars-plan/src/plans/conversion/join.rs index 53a7bbd2274a..0a073934b5d3 100644 --- a/crates/polars-plan/src/plans/conversion/join.rs +++ b/crates/polars-plan/src/plans/conversion/join.rs @@ -44,6 +44,7 @@ pub fn resolve_join( if matches!(options.args.how, JoinType::Cross) { polars_ensure!(left_on.len() + right_on.len() == 0, InvalidOperation: "a 'cross' join doesn't expect any join keys"); } else { + polars_ensure!(left_on.len() + right_on.len() > 0, InvalidOperation: "expected join keys/predicates"); check_join_keys(&left_on)?; check_join_keys(&right_on)?; diff --git a/py-polars/tests/unit/operations/test_inequality_join.py b/py-polars/tests/unit/operations/test_inequality_join.py index 242a0e1f5e8e..171b9b770410 100644 --- a/py-polars/tests/unit/operations/test_inequality_join.py +++ b/py-polars/tests/unit/operations/test_inequality_join.py @@ -460,3 +460,11 @@ def test_raise_on_multiple_binary_comparisons() -> None: df.join_where( df, (pl.col("id") < pl.col("id")) & (pl.col("id") >= pl.col("id")) ) + + +def test_raise_invalid_input_join_where() -> None: + df = pl.DataFrame({"id": [1, 2]}) + with pytest.raises(pl.exceptions.InvalidOperationError): + df.join_where( + df + )