From f3da09df0f4147223ab76a00a841586ccf11005d Mon Sep 17 00:00:00 2001 From: Hannes Ljungberg Date: Fri, 20 Mar 2020 23:08:32 +0100 Subject: Fixed #31396 -- Added binary XOR operator to F expressions. --- django/db/backends/sqlite3/base.py | 1 + django/db/backends/sqlite3/operations.py | 2 ++ 2 files changed, 3 insertions(+) (limited to 'django/db/backends/sqlite3') diff --git a/django/db/backends/sqlite3/base.py b/django/db/backends/sqlite3/base.py index 7b3f90a2fd..fcc9d31b37 100644 --- a/django/db/backends/sqlite3/base.py +++ b/django/db/backends/sqlite3/base.py @@ -218,6 +218,7 @@ class DatabaseWrapper(BaseDatabaseWrapper): conn.create_function('ASIN', 1, none_guard(math.asin)) conn.create_function('ATAN', 1, none_guard(math.atan)) conn.create_function('ATAN2', 2, none_guard(math.atan2)) + conn.create_function('BITXOR', 2, none_guard(operator.xor)) conn.create_function('CEILING', 1, none_guard(math.ceil)) conn.create_function('COS', 1, none_guard(math.cos)) conn.create_function('COT', 1, none_guard(lambda x: 1 / math.tan(x))) diff --git a/django/db/backends/sqlite3/operations.py b/django/db/backends/sqlite3/operations.py index 80c32f6fcd..fcc2a06d7a 100644 --- a/django/db/backends/sqlite3/operations.py +++ b/django/db/backends/sqlite3/operations.py @@ -312,6 +312,8 @@ class DatabaseOperations(BaseDatabaseOperations): # function that's registered in connect(). if connector == '^': return 'POWER(%s)' % ','.join(sub_expressions) + elif connector == '#': + return 'BITXOR(%s)' % ','.join(sub_expressions) return super().combine_expression(connector, sub_expressions) def combine_duration_expression(self, connector, sub_expressions): -- cgit v1.3