diff -r 45c38bd3e96d -r 1913a3e8816a cubicweb/server/test/unittest_rql2sql.py --- a/cubicweb/server/test/unittest_rql2sql.py Wed Jun 01 17:04:33 2016 +0200 +++ b/cubicweb/server/test/unittest_rql2sql.py Thu Sep 22 16:21:51 2016 +0200 @@ -1512,17 +1512,39 @@ FROM cw_Affaire AS _T LEFT OUTER JOIN tags_relation AS rel_tags0 ON (rel_tags0.eid_to=_T.cw_eid) LEFT OUTER JOIN cw_Tag AS _TAG ON (rel_tags0.eid_from=_TAG.cw_eid AND _TAG.cw_name=t) GROUP BY _T.cw_eid) AS _T0 ON (_T1.C0=_T0.C0)'''), + ('''Any TT1,STD,STDD WHERE TT2 identity TT1? + WITH TT1,STDD BEING (Any T,SUM(TD) GROUPBY T WHERE T is Affaire, T duration TD, TAG? tags T, TAG name "t"), + TT2,STD BEING (Any T,SUM(TD) GROUPBY T WHERE T is Affaire, T duration TD)''', + '''SELECT _T0.C0, _T1.C1, _T0.C1 +FROM (SELECT _T.cw_eid AS C0, SUM(_T.cw_duration) AS C1 +FROM cw_Affaire AS _T +GROUP BY _T.cw_eid) AS _T1 LEFT OUTER JOIN (SELECT _T.cw_eid AS C0, SUM(_T.cw_duration) AS C1 +FROM cw_Affaire AS _T LEFT OUTER JOIN tags_relation AS rel_tags0 ON (rel_tags0.eid_to=_T.cw_eid) LEFT OUTER JOIN cw_Tag AS _TAG ON (rel_tags0.eid_from=_TAG.cw_eid AND _TAG.cw_name=t) +GROUP BY _T.cw_eid) AS _T0 ON (_T1.C0=_T0.C0)'''), + + (''' Any X WHERE X eid >= 1200 WITH X BEING ((Any X WHERE X is CWUser) UNION (Any X WHERE X is CWGroup))''', + '''SELECT _T0.C0 +FROM ((SELECT _X.cw_eid AS C0 +FROM cw_CWUser AS _X) +UNION ALL +(SELECT _X.cw_eid AS C0 +FROM cw_CWGroup AS _X)) AS _T0 +WHERE _T0.C0>=1200'''), + ]: with self.subTest(rql=rql): self._check(rql, sql) def test_subquery_error(self): - rql = ('Any N WHERE X name N WITH X BEING ' - '((Any X WHERE X is State)' - ' UNION ' - ' (Any X WHERE X is Transition))') - rqlst = self._prepare(rql) - self.assertRaises(BadRQLQuery, self.o.generate, rqlst) + for rql in ( + 'Any N WHERE X name N WITH X BEING ' + '((Any X WHERE X is State) UNION (Any X WHERE X is Transition))', + + 'Any X WHERE X modification_date >= TODAY WITH X BEING ' + '((Any X WHERE X is CWUser) UNION (Any X WHERE X is CWGroup))''', + ): + rqlst = self._prepare(rql) + self.assertRaises(BadRQLQuery, self.o.generate, rqlst) def test_inline(self): for rql, sql in INLINE: