From 13d675e7de3409fb1d221a39ebf2dc330cec67ec Mon Sep 17 00:00:00 2001 From: Phillip Cloud <417981+cpcloud@users.noreply.github.com> Date: Thu, 15 Feb 2024 10:06:30 -0500 Subject: [PATCH] fix(ir): compute `InSubquery.shape` property from `needle` input (#8364) Fixes #8361. --- ibis/expr/operations/subqueries.py | 2 +- ibis/tests/expr/test_value_exprs.py | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ibis/expr/operations/subqueries.py b/ibis/expr/operations/subqueries.py index 76f3cd8a9cc6..229c5bb56c61 100644 --- a/ibis/expr/operations/subqueries.py +++ b/ibis/expr/operations/subqueries.py @@ -53,7 +53,7 @@ class InSubquery(Subquery): needle: Value dtype = dt.boolean - shape = ds.columnar + shape = rlz.shape_like("needle") def __init__(self, rel, needle): if len(rel.schema) != 1: diff --git a/ibis/tests/expr/test_value_exprs.py b/ibis/tests/expr/test_value_exprs.py index ebb86c7a4d11..aec143083ff5 100644 --- a/ibis/tests/expr/test_value_exprs.py +++ b/ibis/tests/expr/test_value_exprs.py @@ -1713,3 +1713,13 @@ def test_deferred_doesnt_convert_callables(): b=t.b.split(",").filter(lambda pp: ~pp.isin(("word1", "word2"))) ) assert expr.equals(expected) + + +def test_in_subquery_shape(): + t = ibis.table([("a", "int64"), ("b", "string")]) + + expr = t.a.cast("string").isin(t.b) + assert expr.op().shape.is_columnar() + + expr = ibis.literal(2).isin(t.a) + assert expr.op().shape.is_scalar()