Skip to content

Commit 62fa479

Browse files
committed
feat(polars): reuse existing ctx for set operations
1 parent 2742f44 commit 62fa479

File tree

1 file changed

+18
-16
lines changed

1 file changed

+18
-16
lines changed

ibis/backends/polars/compiler.py

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1258,37 +1258,39 @@ def execute_union(op, **kw):
12581258

12591259
@translate.register(ops.Intersection)
12601260
def execute_intersection(op, **kw):
1261-
with pl.SQLContext(
1261+
ctx = kw.get("ctx")
1262+
ctx.register_many(
12621263
frames={
12631264
"left": translate(op.left, **kw),
12641265
"right": translate(op.right, **kw),
12651266
}
1266-
) as ctx:
1267-
sql = (
1268-
sg.select(STAR)
1269-
.from_(sg.to_identifier("left", quoted=True))
1270-
.intersect(sg.select(STAR).from_(sg.to_identifier("right", quoted=True)))
1271-
)
1272-
result = ctx.execute(sql.sql())
1267+
)
1268+
sql = (
1269+
sg.select(STAR)
1270+
.from_(sg.to_identifier("left", quoted=True))
1271+
.intersect(sg.select(STAR).from_(sg.to_identifier("right", quoted=True)))
1272+
)
1273+
result = ctx.execute(sql.sql(Polars), eager=False)
12731274
if op.distinct is True:
12741275
return result.unique()
12751276
return result
12761277

12771278

12781279
@translate.register(ops.Difference)
12791280
def execute_difference(op, **kw):
1280-
with pl.SQLContext(
1281+
ctx = kw.get("ctx")
1282+
ctx.register_many(
12811283
frames={
12821284
"left": translate(op.left, **kw),
12831285
"right": translate(op.right, **kw),
12841286
}
1285-
) as ctx:
1286-
sql = (
1287-
sg.select(STAR)
1288-
.from_(sg.to_identifier("left", quoted=True))
1289-
.except_(sg.select(STAR).from_(sg.to_identifier("right", quoted=True)))
1290-
)
1291-
result = ctx.execute(sql.sql())
1287+
)
1288+
sql = (
1289+
sg.select(STAR)
1290+
.from_(sg.to_identifier("left", quoted=True))
1291+
.except_(sg.select(STAR).from_(sg.to_identifier("right", quoted=True)))
1292+
)
1293+
result = ctx.execute(sql.sql(Polars), eager=False)
12921294
if op.distinct is True:
12931295
return result.unique()
12941296
return result

0 commit comments

Comments
 (0)