Skip to content

Commit 58c42f9

Browse files
cpcloudkszucs
authored andcommitted
feat(sqlite): implement bitwise xor and bitwise not
1 parent 33cadb1 commit 58c42f9

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

ibis/backends/sqlite/registry.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,5 +359,8 @@ def _time_from_hms(t, expr):
359359
ops.Degrees: unary(sa.func._ibis_sqlite_degrees),
360360
ops.Radians: unary(sa.func._ibis_sqlite_radians),
361361
ops.Clip: _clip(min_func=sa.func.min, max_func=sa.func.max),
362+
# sqlite doesn't implement a native xor operator
363+
ops.BitwiseXor: fixed_arity(sa.func._ibis_sqlite_xor, 2),
364+
ops.BitwiseNot: unary(sa.func._ibis_sqlite_inv),
362365
}
363366
)

ibis/backends/sqlite/udf.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,16 @@ def _ibis_sqlite_radians(x):
291291
return None if x is None else math.radians(x)
292292

293293

294+
@udf
295+
def _ibis_sqlite_xor(x, y):
296+
return None if x is None or y is None else x ^ y
297+
298+
299+
@udf
300+
def _ibis_sqlite_inv(x):
301+
return None if x is None else ~x
302+
303+
294304
class _ibis_sqlite_var:
295305
def __init__(self, offset):
296306
self.mean = 0.0

0 commit comments

Comments
 (0)