@@ -1258,37 +1258,49 @@ def execute_union(op, **kw):
1258
1258
1259
1259
@translate .register (ops .Intersection )
1260
1260
def execute_intersection (op , * , ctx , ** kw ):
1261
+ left = gen_name ("polars_intersect_left" )
1262
+ right = gen_name ("polars_intersect_right" )
1263
+
1261
1264
ctx .register_many (
1262
1265
frames = {
1263
- " left" : translate (op .left , ctx = ctx ** kw ),
1264
- " right" : translate (op .right , ctx = ctx , ** kw ),
1266
+ left : translate (op .left , ctx = ctx , ** kw ),
1267
+ right : translate (op .right , ctx = ctx , ** kw ),
1265
1268
}
1266
1269
)
1270
+
1267
1271
sql = (
1268
1272
sg .select (STAR )
1269
- .from_ (sg .to_identifier (" left" , quoted = True ))
1270
- .intersect (sg .select (STAR ).from_ (sg .to_identifier (" right" , quoted = True )))
1273
+ .from_ (sg .to_identifier (left , quoted = True ))
1274
+ .intersect (sg .select (STAR ).from_ (sg .to_identifier (right , quoted = True )))
1271
1275
)
1276
+
1272
1277
result = ctx .execute (sql .sql (Polars ), eager = False )
1278
+
1273
1279
if op .distinct is True :
1274
1280
return result .unique ()
1275
1281
return result
1276
1282
1277
1283
1278
1284
@translate .register (ops .Difference )
1279
1285
def execute_difference (op , * , ctx , ** kw ):
1286
+ left = gen_name ("polars_diff_left" )
1287
+ right = gen_name ("polars_diff_right" )
1288
+
1280
1289
ctx .register_many (
1281
1290
frames = {
1282
- " left" : translate (op .left , ctx = ctx , ** kw ),
1283
- " right" : translate (op .right , ctx = ctx , ** kw ),
1291
+ left : translate (op .left , ctx = ctx , ** kw ),
1292
+ right : translate (op .right , ctx = ctx , ** kw ),
1284
1293
}
1285
1294
)
1295
+
1286
1296
sql = (
1287
1297
sg .select (STAR )
1288
- .from_ (sg .to_identifier (" left" , quoted = True ))
1289
- .except_ (sg .select (STAR ).from_ (sg .to_identifier (" right" , quoted = True )))
1298
+ .from_ (sg .to_identifier (left , quoted = True ))
1299
+ .except_ (sg .select (STAR ).from_ (sg .to_identifier (right , quoted = True )))
1290
1300
)
1301
+
1291
1302
result = ctx .execute (sql .sql (Polars ), eager = False )
1303
+
1292
1304
if op .distinct is True :
1293
1305
return result .unique ()
1294
1306
return result
0 commit comments