--- a/server/test/unittest_rql2sql.py Mon Jul 05 17:06:11 2010 +0200
+++ b/server/test/unittest_rql2sql.py Mon Jul 05 17:55:37 2010 +0200
@@ -1430,6 +1430,12 @@
'''SELECT (A || _X.cw_ref)
FROM cw_Affaire AS _X''')
+ def test_or_having_fake_terms(self):
+ self._check('Any X WHERE X is CWUser, X creation_date D HAVING YEAR(D) = "2010" OR D = NULL',
+ '''SELECT _X.cw_eid
+FROM cw_CWUser AS _X
+WHERE ((CAST(EXTRACT(YEAR from _X.cw_creation_date) AS INTEGER)=2010) OR (_X.cw_creation_date IS NULL))''')
+
class SqliteSQLGeneratorTC(PostgresSQLGeneratorTC):
@@ -1538,6 +1544,13 @@
yield t
+ def test_or_having_fake_terms(self):
+ self._check('Any X WHERE X is CWUser, X creation_date D HAVING YEAR(D) = "2010" OR D = NULL',
+ '''SELECT _X.cw_eid
+FROM cw_CWUser AS _X
+WHERE ((YEAR(_X.cw_creation_date)=2010) OR (_X.cw_creation_date IS NULL))''')
+
+
class MySQLGenerator(PostgresSQLGeneratorTC):
@@ -1623,6 +1636,14 @@
'''SELECT SUBSTRING(_P.cw_nom, 1, 1)
FROM cw_Personne AS _P''')
+
+ def test_or_having_fake_terms(self):
+ self._check('Any X WHERE X is CWUser, X creation_date D HAVING YEAR(D) = "2010" OR D = NULL',
+ '''SELECT _X.cw_eid
+FROM cw_CWUser AS _X
+WHERE ((EXTRACT(YEAR from _X.cw_creation_date)=2010) OR (_X.cw_creation_date IS NULL))''')
+
+
class removeUnsusedSolutionsTC(TestCase):
def test_invariant_not_varying(self):
rqlst = mock_object(defined_vars={})