server/test/unittest_rql2sql.py
changeset 6333 e3994fcc21c3
parent 6297 23c1e50ff97b
child 6340 470d8e828fda
equal deleted inserted replaced
6293:df44d7163582 6333:e3994fcc21c3
   564 SELECT _X.cw_eid AS C0, _T.cw_name AS C1, _X.cw_name AS C2
   564 SELECT _X.cw_eid AS C0, _T.cw_name AS C1, _X.cw_name AS C2
   565 FROM cw_Tag AS _T, cw_Tag AS _X, tags_relation AS rel_tags0
   565 FROM cw_Tag AS _T, cw_Tag AS _X, tags_relation AS rel_tags0
   566 WHERE rel_tags0.eid_from=_T.cw_eid AND rel_tags0.eid_to=_X.cw_eid) AS T1
   566 WHERE rel_tags0.eid_from=_T.cw_eid AND rel_tags0.eid_to=_X.cw_eid) AS T1
   567 GROUP BY T1.C0,T1.C2
   567 GROUP BY T1.C0,T1.C2
   568 ORDER BY T1.C2'''),
   568 ORDER BY T1.C2'''),
       
   569 
       
   570     ('Any 1 WHERE X in_group G, X is CWUser',
       
   571      '''SELECT 1
       
   572 FROM in_group_relation AS rel_in_group0'''),
       
   573 
   569 
   574 
   570     ]
   575     ]
   571 
   576 
   572 
   577 
   573 MULTIPLE_SEL = [
   578 MULTIPLE_SEL = [
  1464         self._check('Any X WHERE X is CWUser, X creation_date D HAVING YEAR(D) = "2010" OR D = NULL',
  1469         self._check('Any X WHERE X is CWUser, X creation_date D HAVING YEAR(D) = "2010" OR D = NULL',
  1465                     '''SELECT _X.cw_eid
  1470                     '''SELECT _X.cw_eid
  1466 FROM cw_CWUser AS _X
  1471 FROM cw_CWUser AS _X
  1467 WHERE ((CAST(EXTRACT(YEAR from _X.cw_creation_date) AS INTEGER)=2010) OR (_X.cw_creation_date IS NULL))''')
  1472 WHERE ((CAST(EXTRACT(YEAR from _X.cw_creation_date) AS INTEGER)=2010) OR (_X.cw_creation_date IS NULL))''')
  1468 
  1473 
       
  1474     def test_not_no_where(self):
       
  1475         # XXX will check if some in_group relation exists, that's it.
       
  1476         # We  can't actually know if we want to check if there are some
       
  1477         # X without in_group relation, or some G without it.
       
  1478         self._check('Any 1 WHERE NOT X in_group G, X is CWUser',
       
  1479                     '''SELECT 1
       
  1480 WHERE NOT (EXISTS(SELECT 1 FROM in_group_relation AS rel_in_group0))''')
       
  1481 
       
  1482 
  1469 
  1483 
  1470 class SqliteSQLGeneratorTC(PostgresSQLGeneratorTC):
  1484 class SqliteSQLGeneratorTC(PostgresSQLGeneratorTC):
  1471     backend = 'sqlite'
  1485     backend = 'sqlite'
  1472 
  1486 
  1473     def _norm_sql(self, sql):
  1487     def _norm_sql(self, sql):
  1684                     '''SELECT _X.cw_eid
  1698                     '''SELECT _X.cw_eid
  1685 FROM cw_CWUser AS _X
  1699 FROM cw_CWUser AS _X
  1686 WHERE ((EXTRACT(YEAR from _X.cw_creation_date)=2010) OR (_X.cw_creation_date IS NULL))''')
  1700 WHERE ((EXTRACT(YEAR from _X.cw_creation_date)=2010) OR (_X.cw_creation_date IS NULL))''')
  1687 
  1701 
  1688 
  1702 
       
  1703     def test_not_no_where(self):
       
  1704         self._check('Any 1 WHERE NOT X in_group G, X is CWUser',
       
  1705                     '''SELECT 1
       
  1706 FROM (SELECT 1) AS _T
       
  1707 WHERE NOT (EXISTS(SELECT 1 FROM in_group_relation AS rel_in_group0))''')
       
  1708 
       
  1709 
  1689 class removeUnsusedSolutionsTC(TestCase):
  1710 class removeUnsusedSolutionsTC(TestCase):
  1690     def test_invariant_not_varying(self):
  1711     def test_invariant_not_varying(self):
  1691         rqlst = mock_object(defined_vars={})
  1712         rqlst = mock_object(defined_vars={})
  1692         rqlst.defined_vars['A'] = mock_object(scope=rqlst, stinfo={}, _q_invariant=True)
  1713         rqlst.defined_vars['A'] = mock_object(scope=rqlst, stinfo={}, _q_invariant=True)
  1693         rqlst.defined_vars['B'] = mock_object(scope=rqlst, stinfo={}, _q_invariant=False)
  1714         rqlst.defined_vars['B'] = mock_object(scope=rqlst, stinfo={}, _q_invariant=False)