changeset 2608 | 21856eda34f6 |
parent 1977 | 606923dff11b |
child 2773 | b2530e3e0afb |
child 2920 | 64322aa83a1d |
child 3109 | e7e1bb06b716 |
2607:5d889b4928bb | 2608:21856eda34f6 |
---|---|
108 'J': 'Affaire', |
108 'J': 'Affaire', |
109 'X': 'Affaire', |
109 'X': 'Affaire', |
110 'ET': 'CWEType', 'ETN': 'String'}]) |
110 'ET': 'CWEType', 'ETN': 'String'}]) |
111 rql, solutions = partrqls[1] |
111 rql, solutions = partrqls[1] |
112 self.assertEquals(rql, 'Any ETN,X WHERE X is ET, ET name ETN, ET is CWEType, ' |
112 self.assertEquals(rql, 'Any ETN,X WHERE X is ET, ET name ETN, ET is CWEType, ' |
113 'X is IN(Bookmark, CWAttribute, CWCache, CWConstraint, CWConstraintType, CWEType, CWGroup, CWPermission, CWProperty, CWRType, CWRelation, CWUser, Card, Comment, Division, Email, EmailAddress, EmailPart, EmailThread, File, Folder, Image, Note, Personne, RQLExpression, Societe, State, SubDivision, Tag, TrInfo, Transition)') |
113 'X is IN(Bookmark, CWAttribute, CWCache, CWConstraint, CWConstraintType, CWEType, CWGroup, CWPermission, CWProperty, CWRType, CWRelation, CWUser, Card, Comment, Division, Email, EmailAddress, EmailPart, EmailThread, ExternalUri, File, Folder, Image, Note, Personne, RQLExpression, Societe, State, SubDivision, Tag, TrInfo, Transition)') |
114 self.assertListEquals(sorted(solutions), |
114 self.assertListEquals(sorted(solutions), |
115 sorted([{'X': 'Bookmark', 'ETN': 'String', 'ET': 'CWEType'}, |
115 sorted([{'X': 'Bookmark', 'ETN': 'String', 'ET': 'CWEType'}, |
116 {'X': 'Card', 'ETN': 'String', 'ET': 'CWEType'}, |
116 {'X': 'Card', 'ETN': 'String', 'ET': 'CWEType'}, |
117 {'X': 'Comment', 'ETN': 'String', 'ET': 'CWEType'}, |
117 {'X': 'Comment', 'ETN': 'String', 'ET': 'CWEType'}, |
118 {'X': 'Division', 'ETN': 'String', 'ET': 'CWEType'}, |
118 {'X': 'Division', 'ETN': 'String', 'ET': 'CWEType'}, |
129 {'X': 'CWRelation', 'ETN': 'String', 'ET': 'CWEType'}, |
129 {'X': 'CWRelation', 'ETN': 'String', 'ET': 'CWEType'}, |
130 {'X': 'CWPermission', 'ETN': 'String', 'ET': 'CWEType'}, |
130 {'X': 'CWPermission', 'ETN': 'String', 'ET': 'CWEType'}, |
131 {'X': 'CWProperty', 'ETN': 'String', 'ET': 'CWEType'}, |
131 {'X': 'CWProperty', 'ETN': 'String', 'ET': 'CWEType'}, |
132 {'X': 'CWRType', 'ETN': 'String', 'ET': 'CWEType'}, |
132 {'X': 'CWRType', 'ETN': 'String', 'ET': 'CWEType'}, |
133 {'X': 'CWUser', 'ETN': 'String', 'ET': 'CWEType'}, |
133 {'X': 'CWUser', 'ETN': 'String', 'ET': 'CWEType'}, |
134 {'X': 'ExternalUri', 'ETN': 'String', 'ET': 'CWEType'}, |
|
134 {'X': 'File', 'ETN': 'String', 'ET': 'CWEType'}, |
135 {'X': 'File', 'ETN': 'String', 'ET': 'CWEType'}, |
135 {'X': 'Folder', 'ETN': 'String', 'ET': 'CWEType'}, |
136 {'X': 'Folder', 'ETN': 'String', 'ET': 'CWEType'}, |
136 {'X': 'Image', 'ETN': 'String', 'ET': 'CWEType'}, |
137 {'X': 'Image', 'ETN': 'String', 'ET': 'CWEType'}, |
137 {'X': 'Note', 'ETN': 'String', 'ET': 'CWEType'}, |
138 {'X': 'Note', 'ETN': 'String', 'ET': 'CWEType'}, |
138 {'X': 'Personne', 'ETN': 'String', 'ET': 'CWEType'}, |
139 {'X': 'Personne', 'ETN': 'String', 'ET': 'CWEType'}, |
224 self.assertEquals(tuplify(result), [(1,), (2,), (3,), (4,)]) |
225 self.assertEquals(tuplify(result), [(1,), (2,), (3,), (4,)]) |
225 self.assertEquals(descr, [('CWGroup',), ('CWGroup',), ('CWGroup',), ('CWGroup',)]) |
226 self.assertEquals(descr, [('CWGroup',), ('CWGroup',), ('CWGroup',), ('CWGroup',)]) |
226 |
227 |
227 def test_select_2(self): |
228 def test_select_2(self): |
228 rset = self.execute('Any X ORDERBY N WHERE X is CWGroup, X name N') |
229 rset = self.execute('Any X ORDERBY N WHERE X is CWGroup, X name N') |
229 self.assertEquals(tuplify(rset.rows), [(3,), (1,), (4,), (2,)]) |
230 self.assertEquals(tuplify(rset.rows), [(1,), (2,), (3,), (4,)]) |
230 self.assertEquals(rset.description, [('CWGroup',), ('CWGroup',), ('CWGroup',), ('CWGroup',)]) |
231 self.assertEquals(rset.description, [('CWGroup',), ('CWGroup',), ('CWGroup',), ('CWGroup',)]) |
231 rset = self.execute('Any X ORDERBY N DESC WHERE X is CWGroup, X name N') |
232 rset = self.execute('Any X ORDERBY N DESC WHERE X is CWGroup, X name N') |
232 self.assertEquals(tuplify(rset.rows), [(2,), (4,), (1,), (3,)]) |
233 self.assertEquals(tuplify(rset.rows), [(4,), (3,), (2,), (1,)]) |
233 |
234 |
234 def test_select_3(self): |
235 def test_select_3(self): |
235 rset = self.execute('Any N GROUPBY N WHERE X is CWGroup, X name N') |
236 rset = self.execute('Any N GROUPBY N WHERE X is CWGroup, X name N') |
236 result, descr = rset.rows, rset.description |
237 result, descr = rset.rows, rset.description |
237 result.sort() |
238 result.sort() |
270 self.assertEquals(rset.rows[0][0], rset1.rows[1][0]) |
271 self.assertEquals(rset.rows[0][0], rset1.rows[1][0]) |
271 self.assertEquals(len(rset), 5) |
272 self.assertEquals(len(rset), 5) |
272 |
273 |
273 def test_select_5(self): |
274 def test_select_5(self): |
274 rset = self.execute('Any X, TMP ORDERBY TMP WHERE X name TMP, X is CWGroup') |
275 rset = self.execute('Any X, TMP ORDERBY TMP WHERE X name TMP, X is CWGroup') |
275 self.assertEquals(tuplify(rset.rows), [(3, 'guests',), (1, 'managers',), (4, 'owners',), (2, 'users',)]) |
276 self.assertEquals(tuplify(rset.rows), [(1, 'guests',), (2, 'managers',), (3, 'owners',), (4, 'users',)]) |
276 self.assertEquals(rset.description, [('CWGroup', 'String',), ('CWGroup', 'String',), ('CWGroup', 'String',), ('CWGroup', 'String',)]) |
277 self.assertEquals(rset.description, [('CWGroup', 'String',), ('CWGroup', 'String',), ('CWGroup', 'String',), ('CWGroup', 'String',)]) |
277 |
278 |
278 def test_select_6(self): |
279 def test_select_6(self): |
279 self.execute("INSERT Personne X: X nom 'bidule'")[0] |
280 self.execute("INSERT Personne X: X nom 'bidule'")[0] |
280 rset = self.execute('Any Y where X name TMP, Y nom in (TMP, "bidule")') |
281 rset = self.execute('Any Y where X name TMP, Y nom in (TMP, "bidule")') |
342 |
343 |
343 def test_select_outer_join_optimized(self): |
344 def test_select_outer_join_optimized(self): |
344 peid1 = self.execute("INSERT Personne X: X nom 'bidule'")[0][0] |
345 peid1 = self.execute("INSERT Personne X: X nom 'bidule'")[0][0] |
345 rset = self.execute('Any X WHERE X eid %(x)s, P? connait X', {'x':peid1}, 'x') |
346 rset = self.execute('Any X WHERE X eid %(x)s, P? connait X', {'x':peid1}, 'x') |
346 self.assertEquals(rset.rows, [[peid1]]) |
347 self.assertEquals(rset.rows, [[peid1]]) |
347 rset = self.execute('Any X WHERE X eid %(x)s, X require_permission P?', {'x':peid1}, 'x') |
348 rset = self.execute('Any X WHERE X eid %(x)s, X require_permission P?', |
349 {'x':peid1}, 'x') |
|
348 self.assertEquals(rset.rows, [[peid1]]) |
350 self.assertEquals(rset.rows, [[peid1]]) |
349 |
351 |
350 def test_select_left_outer_join(self): |
352 def test_select_left_outer_join(self): |
351 ueid = self.execute("INSERT CWUser X: X login 'bob', X upassword 'toto', X in_group G " |
353 ueid = self.execute("INSERT CWUser X: X login 'bob', X upassword 'toto', X in_group G " |
352 "WHERE G name 'users'")[0][0] |
354 "WHERE G name 'users'")[0][0] |
462 def test_select_aggregat_having(self): |
464 def test_select_aggregat_having(self): |
463 rset = self.execute('Any N,COUNT(RDEF) GROUPBY N ORDERBY 2,N ' |
465 rset = self.execute('Any N,COUNT(RDEF) GROUPBY N ORDERBY 2,N ' |
464 'WHERE RT name N, RDEF relation_type RT ' |
466 'WHERE RT name N, RDEF relation_type RT ' |
465 'HAVING COUNT(RDEF) > 10') |
467 'HAVING COUNT(RDEF) > 10') |
466 self.assertListEquals(rset.rows, |
468 self.assertListEquals(rset.rows, |
467 [[u'description', 11], ['in_basket', 11], |
469 [[u'description', 11], |
468 [u'name', 13], [u'created_by', 33], |
470 [u'name', 13], [u'created_by', 34], |
469 [u'creation_date', 33], [u'is', 33], [u'is_instance_of', 33], |
471 [u'creation_date', 34], [u'cwuri', 34], |
470 [u'modification_date', 33], [u'owned_by', 33]]) |
472 ['in_basket', 34], |
473 [u'is', 34], [u'is_instance_of', 34], |
|
474 [u'modification_date', 34], [u'owned_by', 34]]) |
|
471 |
475 |
472 def test_select_aggregat_having_dumb(self): |
476 def test_select_aggregat_having_dumb(self): |
473 # dumb but should not raise an error |
477 # dumb but should not raise an error |
474 rset = self.execute('Any U,COUNT(X) GROUPBY U ' |
478 rset = self.execute('Any U,COUNT(X) GROUPBY U ' |
475 'WHERE U eid %(x)s, X owned_by U ' |
479 'WHERE U eid %(x)s, X owned_by U ' |
551 self.assertEquals(tuplify(rset.rows), [(1,), (2,), (3,), (4,)]) |
555 self.assertEquals(tuplify(rset.rows), [(1,), (2,), (3,), (4,)]) |
552 self.assertEquals(rset.description, ()) |
556 self.assertEquals(rset.description, ()) |
553 |
557 |
554 def test_select_limit_offset(self): |
558 def test_select_limit_offset(self): |
555 rset = self.execute('CWGroup X ORDERBY N LIMIT 2 WHERE X name N') |
559 rset = self.execute('CWGroup X ORDERBY N LIMIT 2 WHERE X name N') |
556 self.assertEquals(tuplify(rset.rows), [(3,), (1,)]) |
560 self.assertEquals(tuplify(rset.rows), [(1,), (2,)]) |
557 self.assertEquals(rset.description, [('CWGroup',), ('CWGroup',)]) |
561 self.assertEquals(rset.description, [('CWGroup',), ('CWGroup',)]) |
558 rset = self.execute('CWGroup X ORDERBY N LIMIT 2 OFFSET 2 WHERE X name N') |
562 rset = self.execute('CWGroup X ORDERBY N LIMIT 2 OFFSET 2 WHERE X name N') |
559 self.assertEquals(tuplify(rset.rows), [(4,), (2,)]) |
563 self.assertEquals(tuplify(rset.rows), [(3,), (4,)]) |
560 |
564 |
561 def test_select_symetric(self): |
565 def test_select_symetric(self): |
562 self.execute("INSERT Personne X: X nom 'machin'") |
566 self.execute("INSERT Personne X: X nom 'machin'") |
563 self.execute("INSERT Personne X: X nom 'bidule'") |
567 self.execute("INSERT Personne X: X nom 'bidule'") |
564 self.execute("INSERT Personne X: X nom 'chouette'") |
568 self.execute("INSERT Personne X: X nom 'chouette'") |