Skip to content

Commit d93dbe2

Browse files
cpcloudkszucs
authored andcommitted
fix(duckdb): ensure that parameter names are unlikely to overlap with column names
1 parent 424c973 commit d93dbe2

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

ibis/backends/duckdb/registry.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ def _array_filter(t, op):
318318

319319

320320
def _array_intersect(t, op):
321-
name = "x"
321+
name = "__array_filter_param__"
322322
parameter = ops.Argument(
323323
name=name, shape=op.left.shape, dtype=op.left.dtype.value_type
324324
)
@@ -423,10 +423,12 @@ def _to_json_collection(t, op):
423423
t,
424424
ops.ArrayFilter(
425425
op.arg,
426-
param="x",
426+
param="__array_filter_param__",
427427
body=ops.NotEquals(
428428
ops.Argument(
429-
name="x", shape=op.arg.shape, dtype=op.arg.dtype.value_type
429+
name="__array_filter_param__",
430+
shape=op.arg.shape,
431+
dtype=op.arg.dtype.value_type,
430432
),
431433
op.other,
432434
),

ibis/expr/types/arrays.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -425,7 +425,8 @@ def map(self, func: Callable[[ir.Value], ir.Value]) -> ir.ArrayValue:
425425
│ [] │
426426
└────────────────────────┘
427427
"""
428-
param = next(iter(inspect.signature(func).parameters.keys()))
428+
name = next(iter(inspect.signature(func).parameters.keys()))
429+
param = f"__array_map_param_{name}__"
429430
parameter = ops.Argument(
430431
name=param, shape=self.op().shape, dtype=self.type().value_type
431432
).to_expr()
@@ -502,9 +503,12 @@ def filter(
502503
│ [] │
503504
└───────────────────────────────┘
504505
"""
505-
param = next(iter(inspect.signature(predicate).parameters.keys()))
506+
name = next(iter(inspect.signature(predicate).parameters.keys()))
507+
param = f"__array_filter_param_{name}__"
506508
parameter = ops.Argument(
507-
name=param, shape=self.op().shape, dtype=self.type().value_type
509+
name=param,
510+
shape=self.op().shape,
511+
dtype=self.type().value_type,
508512
).to_expr()
509513
return ops.ArrayFilter(self, param=param, body=predicate(parameter)).to_expr()
510514

0 commit comments

Comments
 (0)