Skip to content

Commit 69e3824

Browse files
authored
fix: properly catch not found explode cols (#17020)
1 parent 4a34528 commit 69e3824

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

crates/polars-plan/src/logical_plan/functions/dsl.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,13 @@ impl DslFunction {
5555
let columns = columns
5656
.iter()
5757
.map(|e| {
58-
if let Expr::Column(name) = e {
59-
Ok(name.clone())
60-
} else {
58+
let Expr::Column(name) = e else {
6159
polars_bail!(InvalidOperation: "expected column expression")
62-
}
60+
};
61+
62+
polars_ensure!(input_schema.contains(name), ColumnNotFound: "{name}");
63+
64+
Ok(name.clone())
6365
})
6466
.collect::<PolarsResult<Arc<[Arc<str>]>>>()?;
6567
FunctionNode::Explode {

py-polars/tests/unit/operations/test_explode.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,3 +430,10 @@ def test_expr_str_explode_deprecated() -> None:
430430

431431
expected = pl.Series("a", ["H", "e", "l", "l", "o", "W", "o", "r", "l", "d"])
432432
assert_series_equal(result, expected)
433+
434+
435+
def test_undefined_col_15852() -> None:
436+
lf = pl.LazyFrame({"foo": [1]})
437+
438+
with pytest.raises(pl.exceptions.ColumnNotFoundError):
439+
lf.explode("bar").join(lf, on="foo").collect()

0 commit comments

Comments
 (0)