server/sources/rql2sql.py
branchstable
changeset 1862 94dc8ccd320b
parent 1802 d628defebc17
child 1977 606923dff11b
--- a/server/sources/rql2sql.py	Tue May 19 11:18:05 2009 +0200
+++ b/server/sources/rql2sql.py	Tue May 19 13:08:51 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 = ' '