174 'J': 'Affaire', |
174 'J': 'Affaire', |
175 'X': 'Affaire', |
175 'X': 'Affaire', |
176 'ET': 'CWEType', 'ETN': 'String'}]) |
176 'ET': 'CWEType', 'ETN': 'String'}]) |
177 rql, solutions = partrqls[1] |
177 rql, solutions = partrqls[1] |
178 self.assertRQLEqual(rql, 'Any ETN,X WHERE X is ET, ET name ETN, ET is CWEType, ' |
178 self.assertRQLEqual(rql, 'Any ETN,X WHERE X is ET, ET name ETN, ET is CWEType, ' |
179 'X is IN(BaseTransition, Bookmark, CWAttribute, CWCache, CWComputedRType, ' |
179 'X is IN(BaseTransition, Bookmark, CWAttribute, CWComputedRType, ' |
180 ' CWConstraint, CWConstraintType, CWEType, CWGroup, CWPermission, CWProperty, ' |
180 ' CWConstraint, CWConstraintType, CWEType, CWGroup, CWPermission, CWProperty, ' |
181 ' CWRType, CWRelation, CWSource, CWUniqueTogetherConstraint, CWUser, Card, ' |
181 ' CWRType, CWRelation, CWSource, CWUniqueTogetherConstraint, CWUser, Card, ' |
182 ' Comment, Division, Email, EmailPart, EmailThread, ExternalUri, File, Folder, ' |
182 ' Comment, Division, Email, EmailPart, EmailThread, ExternalUri, File, Folder, ' |
183 ' Frozable, Note, Old, Personne, RQLExpression, Societe, State, SubDivision, ' |
183 ' Frozable, Note, Old, Personne, RQLExpression, Societe, State, SubDivision, ' |
184 ' SubWorkflowExitPoint, Tag, TrInfo, Transition, Workflow, WorkflowTransition)') |
184 ' SubWorkflowExitPoint, Tag, TrInfo, Transition, Workflow, WorkflowTransition)') |
186 [{'X': 'BaseTransition', 'ETN': 'String', 'ET': 'CWEType'}, |
186 [{'X': 'BaseTransition', 'ETN': 'String', 'ET': 'CWEType'}, |
187 {'X': 'Bookmark', 'ETN': 'String', 'ET': 'CWEType'}, |
187 {'X': 'Bookmark', 'ETN': 'String', 'ET': 'CWEType'}, |
188 {'X': 'Card', 'ETN': 'String', 'ET': 'CWEType'}, |
188 {'X': 'Card', 'ETN': 'String', 'ET': 'CWEType'}, |
189 {'X': 'Comment', 'ETN': 'String', 'ET': 'CWEType'}, |
189 {'X': 'Comment', 'ETN': 'String', 'ET': 'CWEType'}, |
190 {'X': 'Division', 'ETN': 'String', 'ET': 'CWEType'}, |
190 {'X': 'Division', 'ETN': 'String', 'ET': 'CWEType'}, |
191 {'X': 'CWCache', 'ETN': 'String', 'ET': 'CWEType'}, |
|
192 {'X': 'CWComputedRType', 'ETN': 'String', 'ET': 'CWEType'}, |
191 {'X': 'CWComputedRType', 'ETN': 'String', 'ET': 'CWEType'}, |
193 {'X': 'CWConstraint', 'ETN': 'String', 'ET': 'CWEType'}, |
192 {'X': 'CWConstraint', 'ETN': 'String', 'ET': 'CWEType'}, |
194 {'X': 'CWConstraintType', 'ETN': 'String', 'ET': 'CWEType'}, |
193 {'X': 'CWConstraintType', 'ETN': 'String', 'ET': 'CWEType'}, |
195 {'X': 'CWEType', 'ETN': 'String', 'ET': 'CWEType'}, |
194 {'X': 'CWEType', 'ETN': 'String', 'ET': 'CWEType'}, |
196 {'X': 'CWAttribute', 'ETN': 'String', 'ET': 'CWEType'}, |
195 {'X': 'CWAttribute', 'ETN': 'String', 'ET': 'CWEType'}, |
613 'WHERE RT name N, RDEF relation_type RT ' |
612 'WHERE RT name N, RDEF relation_type RT ' |
614 'HAVING COUNT(RDEF) > 10') |
613 'HAVING COUNT(RDEF) > 10') |
615 self.assertListEqual(rset.rows, |
614 self.assertListEqual(rset.rows, |
616 [[u'description_format', 13], |
615 [[u'description_format', 13], |
617 [u'description', 14], |
616 [u'description', 14], |
618 [u'name', 19], |
617 [u'name', 18], |
619 [u'created_by', 45], |
618 [u'created_by', 44], |
620 [u'creation_date', 45], |
619 [u'creation_date', 44], |
621 [u'cw_source', 45], |
620 [u'cw_source', 44], |
622 [u'cwuri', 45], |
621 [u'cwuri', 44], |
623 [u'in_basket', 45], |
622 [u'in_basket', 44], |
624 [u'is', 45], |
623 [u'is', 44], |
625 [u'is_instance_of', 45], |
624 [u'is_instance_of', 44], |
626 [u'modification_date', 45], |
625 [u'modification_date', 44], |
627 [u'owned_by', 45]]) |
626 [u'owned_by', 44]]) |
628 |
627 |
629 def test_select_aggregat_having_dumb(self): |
628 def test_select_aggregat_having_dumb(self): |
630 # dumb but should not raise an error |
629 # dumb but should not raise an error |
631 rset = self.qexecute('Any U,COUNT(X) GROUPBY U ' |
630 rset = self.qexecute('Any U,COUNT(X) GROUPBY U ' |
632 'WHERE U eid %(x)s, X owned_by U ' |
631 'WHERE U eid %(x)s, X owned_by U ' |