174 rql, solutions = partrqls[1] |
174 rql, solutions = partrqls[1] |
175 self.assertRQLEqual(rql, 'Any ETN,X WHERE X is ET, ET name ETN, ET is CWEType, ' |
175 self.assertRQLEqual(rql, 'Any ETN,X WHERE X is ET, ET name ETN, ET is CWEType, ' |
176 'X is IN(BaseTransition, Bookmark, CWAttribute, CWCache, CWComputedRType, ' |
176 'X is IN(BaseTransition, Bookmark, CWAttribute, CWCache, CWComputedRType, ' |
177 ' CWConstraint, CWConstraintType, CWEType, CWGroup, CWPermission, CWProperty, ' |
177 ' CWConstraint, CWConstraintType, CWEType, CWGroup, CWPermission, CWProperty, ' |
178 ' CWRType, CWRelation, CWSource, CWUniqueTogetherConstraint, CWUser, Card, ' |
178 ' CWRType, CWRelation, CWSource, CWUniqueTogetherConstraint, CWUser, Card, ' |
179 ' Comment, Division, Email, EmailPart, EmailThread, ExternalUri, File, ' |
179 ' Comment, Division, Email, EmailPart, EmailThread, ExternalUri, File, Folder, ' |
180 ' Folder, Note, Old, Personne, RQLExpression, Societe, State, SubDivision, ' |
180 ' Frozable, Note, Old, Personne, RQLExpression, Societe, State, SubDivision, ' |
181 ' SubWorkflowExitPoint, Tag, TrInfo, Transition, Workflow, WorkflowTransition)') |
181 ' SubWorkflowExitPoint, Tag, TrInfo, Transition, Workflow, WorkflowTransition)') |
182 self.assertListEqual(sorted(solutions), |
182 self.assertListEqual(sorted(solutions), |
183 sorted([{'X': 'BaseTransition', 'ETN': 'String', 'ET': 'CWEType'}, |
183 sorted([{'X': 'BaseTransition', 'ETN': 'String', 'ET': 'CWEType'}, |
184 {'X': 'Bookmark', 'ETN': 'String', 'ET': 'CWEType'}, |
184 {'X': 'Bookmark', 'ETN': 'String', 'ET': 'CWEType'}, |
185 {'X': 'Card', 'ETN': 'String', 'ET': 'CWEType'}, |
185 {'X': 'Card', 'ETN': 'String', 'ET': 'CWEType'}, |
203 {'X': 'EmailPart', 'ETN': 'String', 'ET': 'CWEType'}, |
203 {'X': 'EmailPart', 'ETN': 'String', 'ET': 'CWEType'}, |
204 {'X': 'EmailThread', 'ETN': 'String', 'ET': 'CWEType'}, |
204 {'X': 'EmailThread', 'ETN': 'String', 'ET': 'CWEType'}, |
205 {'X': 'ExternalUri', 'ETN': 'String', 'ET': 'CWEType'}, |
205 {'X': 'ExternalUri', 'ETN': 'String', 'ET': 'CWEType'}, |
206 {'X': 'File', 'ETN': 'String', 'ET': 'CWEType'}, |
206 {'X': 'File', 'ETN': 'String', 'ET': 'CWEType'}, |
207 {'X': 'Folder', 'ETN': 'String', 'ET': 'CWEType'}, |
207 {'X': 'Folder', 'ETN': 'String', 'ET': 'CWEType'}, |
|
208 {'X': 'Frozable', 'ETN': 'String', 'ET': 'CWEType'}, |
208 {'X': 'Note', 'ETN': 'String', 'ET': 'CWEType'}, |
209 {'X': 'Note', 'ETN': 'String', 'ET': 'CWEType'}, |
209 {'X': 'Old', 'ETN': 'String', 'ET': 'CWEType'}, |
210 {'X': 'Old', 'ETN': 'String', 'ET': 'CWEType'}, |
210 {'X': 'Personne', 'ETN': 'String', 'ET': 'CWEType'}, |
211 {'X': 'Personne', 'ETN': 'String', 'ET': 'CWEType'}, |
211 {'X': 'RQLExpression', 'ETN': 'String', 'ET': 'CWEType'}, |
212 {'X': 'RQLExpression', 'ETN': 'String', 'ET': 'CWEType'}, |
212 {'X': 'Societe', 'ETN': 'String', 'ET': 'CWEType'}, |
213 {'X': 'Societe', 'ETN': 'String', 'ET': 'CWEType'}, |
603 'WHERE RT name N, RDEF relation_type RT ' |
604 'WHERE RT name N, RDEF relation_type RT ' |
604 'HAVING COUNT(RDEF) > 10') |
605 'HAVING COUNT(RDEF) > 10') |
605 self.assertListEqual(rset.rows, |
606 self.assertListEqual(rset.rows, |
606 [[u'description_format', 13], |
607 [[u'description_format', 13], |
607 [u'description', 14], |
608 [u'description', 14], |
608 [u'name', 18], |
609 [u'name', 19], |
609 [u'created_by', 44], |
610 [u'created_by', 45], |
610 [u'creation_date', 44], |
611 [u'creation_date', 45], |
611 [u'cw_source', 44], |
612 [u'cw_source', 45], |
612 [u'cwuri', 44], |
613 [u'cwuri', 45], |
613 [u'in_basket', 44], |
614 [u'in_basket', 45], |
614 [u'is', 44], |
615 [u'is', 45], |
615 [u'is_instance_of', 44], |
616 [u'is_instance_of', 45], |
616 [u'modification_date', 44], |
617 [u'modification_date', 45], |
617 [u'owned_by', 44]]) |
618 [u'owned_by', 45]]) |
618 |
619 |
619 def test_select_aggregat_having_dumb(self): |
620 def test_select_aggregat_having_dumb(self): |
620 # dumb but should not raise an error |
621 # dumb but should not raise an error |
621 rset = self.qexecute('Any U,COUNT(X) GROUPBY U ' |
622 rset = self.qexecute('Any U,COUNT(X) GROUPBY U ' |
622 'WHERE U eid %(x)s, X owned_by U ' |
623 'WHERE U eid %(x)s, X owned_by U ' |