summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/dialects/mssql
diff options
context:
space:
mode:
authorGord Thompson <gord@gordthompson.com>2020-04-02 11:51:11 -0600
committerGord Thompson <gord@gordthompson.com>2020-04-02 11:51:11 -0600
commit207e0b2fc0b36acca398b163c698412deec7077e (patch)
tree1bd3b739655cefd2d67b8a01bbaf961c1a708d57 /lib/sqlalchemy/dialects/mssql
parenta9b62055bfa61c11e9fe0b2984437e2c3e32bf0e (diff)
downloadsqlalchemy-207e0b2fc0b36acca398b163c698412deec7077e.tar.gz
Broaden is[not]_distinct_from support
Added support for .is[not]_distinct_from to SQL Server, MySQL, and Oracle. Fixes: #5137 Change-Id: I3b4d3b199821a55687f83c9a5b63a95d07a64cd5
Diffstat (limited to 'lib/sqlalchemy/dialects/mssql')
-rw-r--r--lib/sqlalchemy/dialects/mssql/base.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/sqlalchemy/dialects/mssql/base.py b/lib/sqlalchemy/dialects/mssql/base.py
index 526e6e8ab..69e6834d2 100644
--- a/lib/sqlalchemy/dialects/mssql/base.py
+++ b/lib/sqlalchemy/dialects/mssql/base.py
@@ -1955,6 +1955,18 @@ class MSSQLCompiler(compiler.SQLCompiler):
def visit_empty_set_expr(self, type_):
return "SELECT 1 WHERE 1!=1"
+ def visit_is_distinct_from_binary(self, binary, operator, **kw):
+ return "NOT EXISTS (SELECT %s INTERSECT SELECT %s)" % (
+ self.process(binary.left),
+ self.process(binary.right),
+ )
+
+ def visit_isnot_distinct_from_binary(self, binary, operator, **kw):
+ return "EXISTS (SELECT %s INTERSECT SELECT %s)" % (
+ self.process(binary.left),
+ self.process(binary.right),
+ )
+
class MSSQLStrictCompiler(MSSQLCompiler):