--- 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: