diff -r 00a78298d30d -r 3f55f0f10a22 server/test/unittest_rql2sql.py --- 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={})