server/sources/rql2sql.py
changeset 1889 874a055c373b
parent 1862 94dc8ccd320b
child 1977 606923dff11b
--- a/server/sources/rql2sql.py	Thu May 21 00:44:57 2009 +0200
+++ b/server/sources/rql2sql.py	Thu May 21 00:50:24 2009 +0200
@@ -901,6 +901,7 @@
     def visit_comparison(self, cmp, contextrels=None):
         """generate SQL for a comparaison"""
         if len(cmp.children) == 2:
+            # XXX occurs ?
             lhs, rhs = cmp.children
         else:
             lhs = None
@@ -911,6 +912,11 @@
                 operator = ' LIKE '
             else:
                 operator = ' %s ' % operator
+        elif (operator == '=' and isinstance(rhs, Constant)
+              and rhs.eval(self._args) is None):
+            if lhs is None:
+                return ' IS NULL'
+            return '%s IS NULL' % lhs.accept(self, contextrels)
         elif isinstance(rhs, Function) and rhs.name == 'IN':
             assert operator == '='
             operator = ' '