374 SELECT X.cw_name |
377 SELECT X.cw_name |
375 FROM cw_Tag AS X |
378 FROM cw_Tag AS X |
376 UNION ALL |
379 UNION ALL |
377 SELECT X.cw_name |
380 SELECT X.cw_name |
378 FROM cw_Transition AS X |
381 FROM cw_Transition AS X |
|
382 UNION ALL |
|
383 SELECT X.cw_name |
|
384 FROM cw_Workflow AS X |
|
385 UNION ALL |
|
386 SELECT X.cw_name |
|
387 FROM cw_WorkflowTransition AS X |
379 ORDER BY 1'''), |
388 ORDER BY 1'''), |
380 |
389 |
381 # ('Any XN WHERE X name XN GROUPBY XN', |
390 # DISTINCT, can use relation under exists scope as principal |
382 # ''''''), |
|
383 # ('Any XN, COUNT(X) WHERE X name XN GROUPBY XN', |
|
384 # ''''''), |
|
385 |
|
386 # DISTINCT, can use relatin under exists scope as principal |
|
387 ('DISTINCT Any X,Y WHERE X name "CWGroup", Y eid IN(1, 2, 3), EXISTS(X read_permission Y)', |
391 ('DISTINCT Any X,Y WHERE X name "CWGroup", Y eid IN(1, 2, 3), EXISTS(X read_permission Y)', |
388 '''SELECT DISTINCT X.cw_eid, rel_read_permission0.eid_to |
392 '''SELECT DISTINCT X.cw_eid, rel_read_permission0.eid_to |
389 FROM cw_CWEType AS X, read_permission_relation AS rel_read_permission0 |
393 FROM cw_CWEType AS X, read_permission_relation AS rel_read_permission0 |
390 WHERE X.cw_name=CWGroup AND rel_read_permission0.eid_to IN(1, 2, 3) AND EXISTS(SELECT 1 WHERE rel_read_permission0.eid_from=X.cw_eid) |
394 WHERE X.cw_name=CWGroup AND rel_read_permission0.eid_to IN(1, 2, 3) AND EXISTS(SELECT 1 WHERE rel_read_permission0.eid_from=X.cw_eid) |
391 UNION |
395 UNION |
465 FROM cw_CWRType AS X, cw_RQLExpression AS Y |
469 FROM cw_CWRType AS X, cw_RQLExpression AS Y |
466 WHERE X.cw_name=CWGroup AND Y.cw_eid IN(1, 2, 3) AND NOT EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid)'''), |
470 WHERE X.cw_name=CWGroup AND Y.cw_eid IN(1, 2, 3) AND NOT EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid)'''), |
467 |
471 |
468 ('Any MAX(X)+MIN(X), N GROUPBY N WHERE X name N;', |
472 ('Any MAX(X)+MIN(X), N GROUPBY N WHERE X name N;', |
469 '''SELECT (MAX(T1.C0) + MIN(T1.C0)), T1.C1 FROM (SELECT X.cw_eid AS C0, X.cw_name AS C1 |
473 '''SELECT (MAX(T1.C0) + MIN(T1.C0)), T1.C1 FROM (SELECT X.cw_eid AS C0, X.cw_name AS C1 |
|
474 FROM cw_BaseTransition AS X |
|
475 UNION ALL |
|
476 SELECT X.cw_eid AS C0, X.cw_name AS C1 |
470 FROM cw_Basket AS X |
477 FROM cw_Basket AS X |
471 UNION ALL |
478 UNION ALL |
472 SELECT X.cw_eid AS C0, X.cw_name AS C1 |
479 SELECT X.cw_eid AS C0, X.cw_name AS C1 |
473 FROM cw_CWCache AS X |
480 FROM cw_CWCache AS X |
474 UNION ALL |
481 UNION ALL |
501 UNION ALL |
508 UNION ALL |
502 SELECT X.cw_eid AS C0, X.cw_name AS C1 |
509 SELECT X.cw_eid AS C0, X.cw_name AS C1 |
503 FROM cw_Tag AS X |
510 FROM cw_Tag AS X |
504 UNION ALL |
511 UNION ALL |
505 SELECT X.cw_eid AS C0, X.cw_name AS C1 |
512 SELECT X.cw_eid AS C0, X.cw_name AS C1 |
506 FROM cw_Transition AS X) AS T1 |
513 FROM cw_Transition AS X |
|
514 UNION ALL |
|
515 SELECT X.cw_eid AS C0, X.cw_name AS C1 |
|
516 FROM cw_Workflow AS X |
|
517 UNION ALL |
|
518 SELECT X.cw_eid AS C0, X.cw_name AS C1 |
|
519 FROM cw_WorkflowTransition AS X) AS T1 |
507 GROUP BY T1.C1'''), |
520 GROUP BY T1.C1'''), |
508 |
521 |
509 ('Any MAX(X)+MIN(LENGTH(D)), N GROUPBY N ORDERBY 1, N, DF WHERE X name N, X data D, X data_format DF;', |
522 ('Any MAX(X)+MIN(LENGTH(D)), N GROUPBY N ORDERBY 1, N, DF WHERE X name N, X data D, X data_format DF;', |
510 '''SELECT (MAX(T1.C1) + MIN(LENGTH(T1.C0))), T1.C2 FROM (SELECT X.cw_data AS C0, X.cw_eid AS C1, X.cw_name AS C2, X.cw_data_format AS C3 |
523 '''SELECT (MAX(T1.C1) + MIN(LENGTH(T1.C0))), T1.C2 FROM (SELECT X.cw_data AS C0, X.cw_eid AS C1, X.cw_name AS C2, X.cw_data_format AS C3 |
511 FROM cw_File AS X |
524 FROM cw_File AS X |
758 |
771 |
759 OUTER_JOIN = [ |
772 OUTER_JOIN = [ |
760 ('Any X,S WHERE X travaille S?', |
773 ('Any X,S WHERE X travaille S?', |
761 '''SELECT X.cw_eid, rel_travaille0.eid_to |
774 '''SELECT X.cw_eid, rel_travaille0.eid_to |
762 FROM cw_Personne AS X LEFT OUTER JOIN travaille_relation AS rel_travaille0 ON (rel_travaille0.eid_from=X.cw_eid)''' |
775 FROM cw_Personne AS X LEFT OUTER JOIN travaille_relation AS rel_travaille0 ON (rel_travaille0.eid_from=X.cw_eid)''' |
763 #SELECT X.cw_eid, S.cw_eid |
|
764 #FROM cw_Personne AS X LEFT OUTER JOIN travaille_relation AS rel_travaille0 ON (rel_travaille0.eid_from=X.cw_eid) LEFT OUTER JOIN cw_Societe AS S ON (rel_travaille0.eid_to=S.cw_eid)''' |
|
765 ), |
776 ), |
766 ('Any S,X WHERE X? travaille S, S is Societe', |
777 ('Any S,X WHERE X? travaille S, S is Societe', |
767 '''SELECT S.cw_eid, rel_travaille0.eid_from |
778 '''SELECT S.cw_eid, rel_travaille0.eid_from |
768 FROM cw_Societe AS S LEFT OUTER JOIN travaille_relation AS rel_travaille0 ON (rel_travaille0.eid_to=S.cw_eid)''' |
779 FROM cw_Societe AS S LEFT OUTER JOIN travaille_relation AS rel_travaille0 ON (rel_travaille0.eid_to=S.cw_eid)''' |
769 #SELECT S.cw_eid, X.cw_eid |
|
770 #FROM cw_Societe AS S LEFT OUTER JOIN travaille_relation AS rel_travaille0 ON (rel_travaille0.eid_to=S.cw_eid) LEFT OUTER JOIN cw_Personne AS X ON (rel_travaille0.eid_from=X.cw_eid)''' |
|
771 ), |
780 ), |
772 |
781 |
773 ('Any N,A WHERE N inline1 A?', |
782 ('Any N,A WHERE N inline1 A?', |
774 '''SELECT N.cw_eid, N.cw_inline1 |
783 '''SELECT N.cw_eid, N.cw_inline1 |
775 FROM cw_Note AS N'''), |
784 FROM cw_Note AS N'''), |
801 WHERE EXISTS(SELECT 1 FROM owned_by_relation AS rel_owned_by0, cw_CWUser AS U, cw_Affaire AS A LEFT OUTER JOIN concerne_relation AS rel_concerne1 ON (rel_concerne1.eid_from=A.cw_eid) LEFT OUTER JOIN cw_Societe AS S ON (rel_concerne1.eid_to=S.cw_eid), owned_by_relation AS rel_owned_by2 WHERE ((rel_owned_by0.eid_from=A.cw_eid AND rel_owned_by0.eid_to=U.cw_eid) OR (rel_owned_by2.eid_from=S.cw_eid AND rel_owned_by2.eid_to=U.cw_eid)) AND X.cw_eid=A.cw_eid)'''), |
810 WHERE EXISTS(SELECT 1 FROM owned_by_relation AS rel_owned_by0, cw_CWUser AS U, cw_Affaire AS A LEFT OUTER JOIN concerne_relation AS rel_concerne1 ON (rel_concerne1.eid_from=A.cw_eid) LEFT OUTER JOIN cw_Societe AS S ON (rel_concerne1.eid_to=S.cw_eid), owned_by_relation AS rel_owned_by2 WHERE ((rel_owned_by0.eid_from=A.cw_eid AND rel_owned_by0.eid_to=U.cw_eid) OR (rel_owned_by2.eid_from=S.cw_eid AND rel_owned_by2.eid_to=U.cw_eid)) AND X.cw_eid=A.cw_eid)'''), |
802 |
811 |
803 ('Any C,M WHERE C travaille G?, G evaluee M?, G is Societe', |
812 ('Any C,M WHERE C travaille G?, G evaluee M?, G is Societe', |
804 '''SELECT C.cw_eid, rel_evaluee1.eid_to |
813 '''SELECT C.cw_eid, rel_evaluee1.eid_to |
805 FROM cw_Personne AS C LEFT OUTER JOIN travaille_relation AS rel_travaille0 ON (rel_travaille0.eid_from=C.cw_eid) LEFT OUTER JOIN cw_Societe AS G ON (rel_travaille0.eid_to=G.cw_eid) LEFT OUTER JOIN evaluee_relation AS rel_evaluee1 ON (rel_evaluee1.eid_from=G.cw_eid)''' |
814 FROM cw_Personne AS C LEFT OUTER JOIN travaille_relation AS rel_travaille0 ON (rel_travaille0.eid_from=C.cw_eid) LEFT OUTER JOIN cw_Societe AS G ON (rel_travaille0.eid_to=G.cw_eid) LEFT OUTER JOIN evaluee_relation AS rel_evaluee1 ON (rel_evaluee1.eid_from=G.cw_eid)''' |
806 #SELECT C.cw_eid, M.cw_eid |
|
807 #FROM cw_Personne AS C LEFT OUTER JOIN travaille_relation AS rel_travaille0 ON (rel_travaille0.eid_from=C.cw_eid) LEFT OUTER JOIN cw_Societe AS G ON (rel_travaille0.eid_to=G.cw_eid) LEFT OUTER JOIN evaluee_relation AS rel_evaluee1 ON (rel_evaluee1.eid_from=G.cw_eid) LEFT OUTER JOIN cw_Note AS M ON (rel_evaluee1.eid_to=M.cw_eid)''' |
|
808 ), |
815 ), |
809 |
816 |
810 ('Any A,C WHERE A documented_by C?, (C is NULL) OR (EXISTS(C require_permission F, ' |
817 ('Any A,C WHERE A documented_by C?, (C is NULL) OR (EXISTS(C require_permission F, ' |
811 'F name "read", F require_group E, U in_group E)), U eid 1', |
818 'F name "read", F require_group E, U in_group E)), U eid 1', |
812 '''SELECT A.cw_eid, rel_documented_by0.eid_to |
819 '''SELECT A.cw_eid, rel_documented_by0.eid_to |
815 |
822 |
816 ("Any X WHERE X eid 12, P? connait X", |
823 ("Any X WHERE X eid 12, P? connait X", |
817 '''SELECT X.cw_eid |
824 '''SELECT X.cw_eid |
818 FROM cw_Personne AS X LEFT OUTER JOIN connait_relation AS rel_connait0 ON (rel_connait0.eid_to=12) |
825 FROM cw_Personne AS X LEFT OUTER JOIN connait_relation AS rel_connait0 ON (rel_connait0.eid_to=12) |
819 WHERE X.cw_eid=12''' |
826 WHERE X.cw_eid=12''' |
820 #SELECT 12 |
|
821 #FROM cw_Personne AS X LEFT OUTER JOIN connait_relation AS rel_connait0 ON (rel_connait0.eid_to=12) LEFT OUTER JOIN Personne AS P ON (rel_connait0.eid_from=P.cw_eid) |
|
822 #WHERE X.cw_eid=12''' |
|
823 ), |
827 ), |
824 |
828 |
825 ('Any GN, TN ORDERBY GN WHERE T tags G?, T name TN, G name GN', |
829 ('Any GN, TN ORDERBY GN WHERE T tags G?, T name TN, G name GN', |
826 ''' |
830 ''' |
827 SELECT _T0.C1, T.cw_name |
831 SELECT _T0.C1, T.cw_name |
878 # two optional variables with additional restriction on an ambigous inlined relation |
882 # two optional variables with additional restriction on an ambigous inlined relation |
879 ('Any T,G,S WHERE T tags G?, G in_state S?, S name "hop"', |
883 ('Any T,G,S WHERE T tags G?, G in_state S?, S name "hop"', |
880 ''' |
884 ''' |
881 SELECT T.cw_eid, _T0.C0, _T0.C1 |
885 SELECT T.cw_eid, _T0.C0, _T0.C1 |
882 FROM cw_Tag AS T LEFT OUTER JOIN tags_relation AS rel_tags0 ON (rel_tags0.eid_from=T.cw_eid) LEFT OUTER JOIN (SELECT G.cw_eid AS C0, S.cw_eid AS C1 |
886 FROM cw_Tag AS T LEFT OUTER JOIN tags_relation AS rel_tags0 ON (rel_tags0.eid_from=T.cw_eid) LEFT OUTER JOIN (SELECT G.cw_eid AS C0, S.cw_eid AS C1 |
883 FROM cw_Affaire AS G LEFT OUTER JOIN cw_State AS S ON (G.cw_in_state=S.cw_eid AND S.cw_name=hop) |
887 FROM cw_Affaire AS G LEFT OUTER JOIN cw_State AS S ON (G.cw_in_state=S.cw_eid AND S.cw_name=hop) |
884 UNION ALL |
888 UNION ALL |
885 SELECT G.cw_eid AS C0, S.cw_eid AS C1 |
889 SELECT G.cw_eid AS C0, S.cw_eid AS C1 |
886 FROM cw_CWUser AS G LEFT OUTER JOIN cw_State AS S ON (G.cw_in_state=S.cw_eid AND S.cw_name=hop) |
890 FROM cw_CWUser AS G LEFT OUTER JOIN cw_State AS S ON (G.cw_in_state=S.cw_eid AND S.cw_name=hop) |
887 UNION ALL |
891 UNION ALL |
888 SELECT G.cw_eid AS C0, S.cw_eid AS C1 |
892 SELECT G.cw_eid AS C0, S.cw_eid AS C1 |
889 FROM cw_Note AS G LEFT OUTER JOIN cw_State AS S ON (G.cw_in_state=S.cw_eid AND S.cw_name=hop) ) AS _T0 ON (rel_tags0.eid_to=_T0.C0)'''), |
893 FROM cw_Note AS G LEFT OUTER JOIN cw_State AS S ON (G.cw_in_state=S.cw_eid AND S.cw_name=hop) ) AS _T0 ON (rel_tags0.eid_to=_T0.C0)'''), |
890 |
894 |
|
895 ('Any O,AD WHERE NOT S inline1 O, S eid 123, O todo_by AD?', |
|
896 '''SELECT O.cw_eid, rel_todo_by0.eid_to |
|
897 FROM cw_Affaire AS O LEFT OUTER JOIN todo_by_relation AS rel_todo_by0 ON (rel_todo_by0.eid_from=O.cw_eid), cw_Note AS S |
|
898 WHERE NOT EXISTS(SELECT 1 WHERE S.cw_inline1=O.cw_eid) AND S.cw_eid=123''') |
891 ] |
899 ] |
892 |
900 |
893 VIRTUAL_VARS = [ |
901 VIRTUAL_VARS = [ |
894 ("Personne P WHERE P travaille S, S tel T, S fax T, S is Societe;", |
902 ("Personne P WHERE P travaille S, S tel T, S fax T, S is Societe;", |
895 '''SELECT rel_travaille0.eid_from |
903 '''SELECT rel_travaille0.eid_from |
947 |
955 |
948 FUNCS = [ |
956 FUNCS = [ |
949 ("Any COUNT(P) WHERE P is Personne", |
957 ("Any COUNT(P) WHERE P is Personne", |
950 '''SELECT COUNT(P.cw_eid) |
958 '''SELECT COUNT(P.cw_eid) |
951 FROM cw_Personne AS P'''), |
959 FROM cw_Personne AS P'''), |
952 ## ("Personne X where X nom upper('TOTO')", |
|
953 ## '''SELECT X.cw_eid\nFROM cw_Personne AS X\nWHERE UPPER(X.cw_nom) = TOTO'''), |
|
954 ## ("Personne X where X nom Y, UPPER(X) prenom upper(Y)", |
|
955 ## '''SELECT X.cw_eid\nFROM cw_Personne AS X\nWHERE UPPER(X.cw_prenom) = UPPER(X.cw_nom)'''), |
|
956 ] |
960 ] |
957 |
961 |
958 SYMETRIC = [ |
962 SYMETRIC = [ |
959 ('Any P WHERE X eid 0, X connait P', |
963 ('Any P WHERE X eid 0, X connait P', |
960 '''SELECT DISTINCT P.cw_eid |
964 '''SELECT DISTINCT P.cw_eid |
961 FROM connait_relation AS rel_connait0, cw_Personne AS P |
965 FROM connait_relation AS rel_connait0, cw_Personne AS P |
962 WHERE (rel_connait0.eid_from=0 AND rel_connait0.eid_to=P.cw_eid OR rel_connait0.eid_to=0 AND rel_connait0.eid_from=P.cw_eid)''' |
966 WHERE (rel_connait0.eid_from=0 AND rel_connait0.eid_to=P.cw_eid OR rel_connait0.eid_to=0 AND rel_connait0.eid_from=P.cw_eid)''' |
963 # '''SELECT rel_connait0.eid_to |
|
964 # FROM connait_relation AS rel_connait0 |
|
965 # WHERE rel_connait0.eid_from=0 |
|
966 # UNION |
|
967 # SELECT rel_connait0.eid_from |
|
968 # FROM connait_relation AS rel_connait0 |
|
969 # WHERE rel_connait0.eid_to=0''' |
|
970 ), |
967 ), |
971 |
968 |
972 ('Any P WHERE X connait P', |
969 ('Any P WHERE X connait P', |
973 '''SELECT DISTINCT P.cw_eid |
970 '''SELECT DISTINCT P.cw_eid |
974 FROM connait_relation AS rel_connait0, cw_Personne AS P |
971 FROM connait_relation AS rel_connait0, cw_Personne AS P |
1048 FROM cw_Note AS N, cw_Personne AS P |
1045 FROM cw_Note AS N, cw_Personne AS P |
1049 WHERE NOT EXISTS(SELECT 1 WHERE N.cw_ecrit_par=P.cw_eid) AND N.cw_eid=512'''), |
1046 WHERE NOT EXISTS(SELECT 1 WHERE N.cw_ecrit_par=P.cw_eid) AND N.cw_eid=512'''), |
1050 |
1047 |
1051 ('Any S,ES,T WHERE S state_of ET, ET name "CWUser", ES allowed_transition T, T destination_state S', |
1048 ('Any S,ES,T WHERE S state_of ET, ET name "CWUser", ES allowed_transition T, T destination_state S', |
1052 '''SELECT T.cw_destination_state, rel_allowed_transition1.eid_from, T.cw_eid |
1049 '''SELECT T.cw_destination_state, rel_allowed_transition1.eid_from, T.cw_eid |
1053 FROM allowed_transition_relation AS rel_allowed_transition1, cw_CWEType AS ET, cw_Transition AS T, state_of_relation AS rel_state_of0 |
1050 FROM allowed_transition_relation AS rel_allowed_transition1, cw_Transition AS T, cw_Workflow AS ET, state_of_relation AS rel_state_of0 |
1054 WHERE T.cw_destination_state=rel_state_of0.eid_from AND rel_state_of0.eid_to=ET.cw_eid AND ET.cw_name=CWUser AND rel_allowed_transition1.eid_to=T.cw_eid'''), |
1051 WHERE T.cw_destination_state=rel_state_of0.eid_from AND rel_state_of0.eid_to=ET.cw_eid AND ET.cw_name=CWUser AND rel_allowed_transition1.eid_to=T.cw_eid'''), |
|
1052 |
1055 ('Any O WHERE S eid 0, S in_state O', |
1053 ('Any O WHERE S eid 0, S in_state O', |
1056 '''SELECT S.cw_in_state |
1054 '''SELECT S.cw_in_state |
1057 FROM cw_Affaire AS S |
1055 FROM cw_Affaire AS S |
1058 WHERE S.cw_eid=0 AND S.cw_in_state IS NOT NULL |
1056 WHERE S.cw_eid=0 AND S.cw_in_state IS NOT NULL |
1059 UNION ALL |
1057 UNION ALL |
1125 |
1123 |
1126 def test_nonregr_sol(self): |
1124 def test_nonregr_sol(self): |
1127 delete = self.rqlhelper.parse( |
1125 delete = self.rqlhelper.parse( |
1128 'DELETE X read_permission READ_PERMISSIONSUBJECT,X add_permission ADD_PERMISSIONSUBJECT,' |
1126 'DELETE X read_permission READ_PERMISSIONSUBJECT,X add_permission ADD_PERMISSIONSUBJECT,' |
1129 'X in_basket IN_BASKETSUBJECT,X delete_permission DELETE_PERMISSIONSUBJECT,' |
1127 'X in_basket IN_BASKETSUBJECT,X delete_permission DELETE_PERMISSIONSUBJECT,' |
1130 'X initial_state INITIAL_STATESUBJECT,X update_permission UPDATE_PERMISSIONSUBJECT,' |
1128 'X update_permission UPDATE_PERMISSIONSUBJECT,' |
1131 'X created_by CREATED_BYSUBJECT,X is ISSUBJECT,X is_instance_of IS_INSTANCE_OFSUBJECT,' |
1129 'X created_by CREATED_BYSUBJECT,X is ISSUBJECT,X is_instance_of IS_INSTANCE_OFSUBJECT,' |
1132 'X owned_by OWNED_BYSUBJECT,X specializes SPECIALIZESSUBJECT,ISOBJECT is X,' |
1130 'X owned_by OWNED_BYSUBJECT,X specializes SPECIALIZESSUBJECT,ISOBJECT is X,' |
1133 'SPECIALIZESOBJECT specializes X,STATE_OFOBJECT state_of X,IS_INSTANCE_OFOBJECT is_instance_of X,' |
1131 'SPECIALIZESOBJECT specializes X,IS_INSTANCE_OFOBJECT is_instance_of X,' |
1134 'TO_ENTITYOBJECT to_entity X,TRANSITION_OFOBJECT transition_of X,FROM_ENTITYOBJECT from_entity X ' |
1132 'TO_ENTITYOBJECT to_entity X,FROM_ENTITYOBJECT from_entity X ' |
1135 'WHERE X is CWEType') |
1133 'WHERE X is CWEType') |
1136 self.rqlhelper.compute_solutions(delete) |
1134 self.rqlhelper.compute_solutions(delete) |
1137 def var_sols(var): |
1135 def var_sols(var): |
1138 s = set() |
1136 s = set() |
1139 for sol in delete.solutions: |
1137 for sol in delete.solutions: |
1169 try: |
1167 try: |
1170 union = self._prepare(rql) |
1168 union = self._prepare(rql) |
1171 r, nargs = self.o.generate(union, args, |
1169 r, nargs = self.o.generate(union, args, |
1172 varmap=varmap) |
1170 varmap=varmap) |
1173 args.update(nargs) |
1171 args.update(nargs) |
1174 self.assertLinesEquals((r % args).strip(), self._norm_sql(sql)) |
1172 self.assertLinesEquals((r % args).strip(), self._norm_sql(sql), striplines=True) |
1175 except Exception, ex: |
1173 except Exception, ex: |
1176 if 'r' in locals(): |
1174 if 'r' in locals(): |
1177 try: |
1175 try: |
1178 print (r%args).strip() |
1176 print (r%args).strip() |
1179 except KeyError: |
1177 except KeyError: |
1198 print r.strip() |
1196 print r.strip() |
1199 print '!=' |
1197 print '!=' |
1200 print sql[0].strip() |
1198 print sql[0].strip() |
1201 raise |
1199 raise |
1202 return |
1200 return |
1203 # rqlst, solutions = self._prepare(rql) |
|
1204 # for i, sol in enumerate(solutions): |
|
1205 # try: |
|
1206 # r, args = self.o.generate([(rqlst, sol)]) |
|
1207 # self.assertEqual((r.strip(), args), sqls[i]) |
|
1208 # except Exception, ex: |
|
1209 # print rql |
|
1210 # raise |
|
1211 |
1201 |
1212 def test1(self): |
1202 def test1(self): |
1213 self._checkall('Any count(RDEF) WHERE RDEF relation_type X, X eid %(x)s', |
1203 self._checkall('Any count(RDEF) WHERE RDEF relation_type X, X eid %(x)s', |
1214 ("""SELECT COUNT(T1.C0) FROM (SELECT RDEF.cw_eid AS C0 |
1204 ("""SELECT COUNT(T1.C0) FROM (SELECT RDEF.cw_eid AS C0 |
1215 FROM cw_CWAttribute AS RDEF |
1205 FROM cw_CWAttribute AS RDEF |
1406 ('Personne X WHERE X has_text %(text)s', |
1396 ('Personne X WHERE X has_text %(text)s', |
1407 """SELECT X.eid |
1397 """SELECT X.eid |
1408 FROM appears AS appears0, entities AS X |
1398 FROM appears AS appears0, entities AS X |
1409 WHERE appears0.words @@ to_tsquery('default', 'hip&hop&momo') AND appears0.uid=X.eid AND X.type='Personne'"""), |
1399 WHERE appears0.words @@ to_tsquery('default', 'hip&hop&momo') AND appears0.uid=X.eid AND X.type='Personne'"""), |
1410 |
1400 |
1411 ('Any X WHERE X has_text "toto tata", X name "tutu"', |
1401 ('Any X WHERE X has_text "toto tata", X name "tutu", X is IN (Basket,File,Folder)', |
1412 """SELECT X.cw_eid |
1402 """SELECT X.cw_eid |
1413 FROM appears AS appears0, cw_Basket AS X |
1403 FROM appears AS appears0, cw_Basket AS X |
1414 WHERE appears0.words @@ to_tsquery('default', 'toto&tata') AND appears0.uid=X.cw_eid AND X.cw_name=tutu |
1404 WHERE appears0.words @@ to_tsquery('default', 'toto&tata') AND appears0.uid=X.cw_eid AND X.cw_name=tutu |
1415 UNION ALL |
1405 UNION ALL |
1416 SELECT X.cw_eid |
1406 SELECT X.cw_eid |
1418 WHERE appears0.words @@ to_tsquery('default', 'toto&tata') AND appears0.uid=X.cw_eid AND X.cw_name=tutu |
1408 WHERE appears0.words @@ to_tsquery('default', 'toto&tata') AND appears0.uid=X.cw_eid AND X.cw_name=tutu |
1419 UNION ALL |
1409 UNION ALL |
1420 SELECT X.cw_eid |
1410 SELECT X.cw_eid |
1421 FROM appears AS appears0, cw_Folder AS X |
1411 FROM appears AS appears0, cw_Folder AS X |
1422 WHERE appears0.words @@ to_tsquery('default', 'toto&tata') AND appears0.uid=X.cw_eid AND X.cw_name=tutu |
1412 WHERE appears0.words @@ to_tsquery('default', 'toto&tata') AND appears0.uid=X.cw_eid AND X.cw_name=tutu |
1423 UNION ALL |
1413 """), |
1424 SELECT X.cw_eid |
|
1425 FROM appears AS appears0, cw_Image AS X |
|
1426 WHERE appears0.words @@ to_tsquery('default', 'toto&tata') AND appears0.uid=X.cw_eid AND X.cw_name=tutu |
|
1427 UNION ALL |
|
1428 SELECT X.cw_eid |
|
1429 FROM appears AS appears0, cw_State AS X |
|
1430 WHERE appears0.words @@ to_tsquery('default', 'toto&tata') AND appears0.uid=X.cw_eid AND X.cw_name=tutu |
|
1431 UNION ALL |
|
1432 SELECT X.cw_eid |
|
1433 FROM appears AS appears0, cw_Tag AS X |
|
1434 WHERE appears0.words @@ to_tsquery('default', 'toto&tata') AND appears0.uid=X.cw_eid AND X.cw_name=tutu |
|
1435 UNION ALL |
|
1436 SELECT X.cw_eid |
|
1437 FROM appears AS appears0, cw_Transition AS X |
|
1438 WHERE appears0.words @@ to_tsquery('default', 'toto&tata') AND appears0.uid=X.cw_eid AND X.cw_name=tutu"""), |
|
1439 |
1414 |
1440 ('Personne X where X has_text %(text)s, X travaille S, S has_text %(text)s', |
1415 ('Personne X where X has_text %(text)s, X travaille S, S has_text %(text)s', |
1441 """SELECT X.eid |
1416 """SELECT X.eid |
1442 FROM appears AS appears0, appears AS appears2, entities AS X, travaille_relation AS rel_travaille1 |
1417 FROM appears AS appears0, appears AS appears2, entities AS X, travaille_relation AS rel_travaille1 |
1443 WHERE appears0.words @@ to_tsquery('default', 'hip&hop&momo') AND appears0.uid=X.eid AND X.type='Personne' AND X.eid=rel_travaille1.eid_from AND appears2.uid=rel_travaille1.eid_to AND appears2.words @@ to_tsquery('default', 'hip&hop&momo')"""), |
1418 WHERE appears0.words @@ to_tsquery('default', 'hip&hop&momo') AND appears0.uid=X.eid AND X.type='Personne' AND X.eid=rel_travaille1.eid_from AND appears2.uid=rel_travaille1.eid_to AND appears2.words @@ to_tsquery('default', 'hip&hop&momo')"""), |
1570 ('Personne X WHERE X has_text "toto tata"', |
1545 ('Personne X WHERE X has_text "toto tata"', |
1571 """SELECT X.eid |
1546 """SELECT X.eid |
1572 FROM appears AS appears0, entities AS X |
1547 FROM appears AS appears0, entities AS X |
1573 WHERE appears0.word_id IN (SELECT word_id FROM word WHERE word in ('toto', 'tata')) AND appears0.uid=X.eid AND X.type='Personne'"""), |
1548 WHERE appears0.word_id IN (SELECT word_id FROM word WHERE word in ('toto', 'tata')) AND appears0.uid=X.eid AND X.type='Personne'"""), |
1574 |
1549 |
1575 ('Any X WHERE X has_text "toto tata", X name "tutu"', |
1550 ('Any X WHERE X has_text "toto tata", X name "tutu", X is IN (Basket,File,Folder)', |
1576 """SELECT X.cw_eid |
1551 """SELECT X.cw_eid |
1577 FROM appears AS appears0, cw_Basket AS X |
1552 FROM appears AS appears0, cw_Basket AS X |
1578 WHERE appears0.word_id IN (SELECT word_id FROM word WHERE word in ('toto', 'tata')) AND appears0.uid=X.cw_eid AND X.cw_name=tutu |
1553 WHERE appears0.word_id IN (SELECT word_id FROM word WHERE word in ('toto', 'tata')) AND appears0.uid=X.cw_eid AND X.cw_name=tutu |
1579 UNION ALL |
1554 UNION ALL |
1580 SELECT X.cw_eid |
1555 SELECT X.cw_eid |
1582 WHERE appears0.word_id IN (SELECT word_id FROM word WHERE word in ('toto', 'tata')) AND appears0.uid=X.cw_eid AND X.cw_name=tutu |
1557 WHERE appears0.word_id IN (SELECT word_id FROM word WHERE word in ('toto', 'tata')) AND appears0.uid=X.cw_eid AND X.cw_name=tutu |
1583 UNION ALL |
1558 UNION ALL |
1584 SELECT X.cw_eid |
1559 SELECT X.cw_eid |
1585 FROM appears AS appears0, cw_Folder AS X |
1560 FROM appears AS appears0, cw_Folder AS X |
1586 WHERE appears0.word_id IN (SELECT word_id FROM word WHERE word in ('toto', 'tata')) AND appears0.uid=X.cw_eid AND X.cw_name=tutu |
1561 WHERE appears0.word_id IN (SELECT word_id FROM word WHERE word in ('toto', 'tata')) AND appears0.uid=X.cw_eid AND X.cw_name=tutu |
1587 UNION ALL |
1562 """), |
1588 SELECT X.cw_eid |
|
1589 FROM appears AS appears0, cw_Image AS X |
|
1590 WHERE appears0.word_id IN (SELECT word_id FROM word WHERE word in ('toto', 'tata')) AND appears0.uid=X.cw_eid AND X.cw_name=tutu |
|
1591 UNION ALL |
|
1592 SELECT X.cw_eid |
|
1593 FROM appears AS appears0, cw_State AS X |
|
1594 WHERE appears0.word_id IN (SELECT word_id FROM word WHERE word in ('toto', 'tata')) AND appears0.uid=X.cw_eid AND X.cw_name=tutu |
|
1595 UNION ALL |
|
1596 SELECT X.cw_eid |
|
1597 FROM appears AS appears0, cw_Tag AS X |
|
1598 WHERE appears0.word_id IN (SELECT word_id FROM word WHERE word in ('toto', 'tata')) AND appears0.uid=X.cw_eid AND X.cw_name=tutu |
|
1599 UNION ALL |
|
1600 SELECT X.cw_eid |
|
1601 FROM appears AS appears0, cw_Transition AS X |
|
1602 WHERE appears0.word_id IN (SELECT word_id FROM word WHERE word in ('toto', 'tata')) AND appears0.uid=X.cw_eid AND X.cw_name=tutu"""), |
|
1603 )): |
1563 )): |
1604 yield t |
1564 yield t |
1605 |
1565 |
1606 |
1566 |
1607 |
1567 |
1646 WHERE MATCH (appears0.words) AGAINST ('toto tata' IN BOOLEAN MODE) AND appears0.uid=X.eid AND X.type='Personne'"""), |
1606 WHERE MATCH (appears0.words) AGAINST ('toto tata' IN BOOLEAN MODE) AND appears0.uid=X.eid AND X.type='Personne'"""), |
1647 ('Personne X WHERE X has_text %(text)s', |
1607 ('Personne X WHERE X has_text %(text)s', |
1648 """SELECT X.eid |
1608 """SELECT X.eid |
1649 FROM appears AS appears0, entities AS X |
1609 FROM appears AS appears0, entities AS X |
1650 WHERE MATCH (appears0.words) AGAINST ('hip hop momo' IN BOOLEAN MODE) AND appears0.uid=X.eid AND X.type='Personne'"""), |
1610 WHERE MATCH (appears0.words) AGAINST ('hip hop momo' IN BOOLEAN MODE) AND appears0.uid=X.eid AND X.type='Personne'"""), |
1651 ('Any X WHERE X has_text "toto tata", X name "tutu"', |
1611 ('Any X WHERE X has_text "toto tata", X name "tutu", X is IN (Basket,File,Folder)', |
1652 """SELECT X.cw_eid |
1612 """SELECT X.cw_eid |
1653 FROM appears AS appears0, cw_Basket AS X |
1613 FROM appears AS appears0, cw_Basket AS X |
1654 WHERE MATCH (appears0.words) AGAINST ('toto tata' IN BOOLEAN MODE) AND appears0.uid=X.cw_eid AND X.cw_name=tutu |
1614 WHERE MATCH (appears0.words) AGAINST ('toto tata' IN BOOLEAN MODE) AND appears0.uid=X.cw_eid AND X.cw_name=tutu |
1655 UNION ALL |
1615 UNION ALL |
1656 SELECT X.cw_eid |
1616 SELECT X.cw_eid |
1658 WHERE MATCH (appears0.words) AGAINST ('toto tata' IN BOOLEAN MODE) AND appears0.uid=X.cw_eid AND X.cw_name=tutu |
1618 WHERE MATCH (appears0.words) AGAINST ('toto tata' IN BOOLEAN MODE) AND appears0.uid=X.cw_eid AND X.cw_name=tutu |
1659 UNION ALL |
1619 UNION ALL |
1660 SELECT X.cw_eid |
1620 SELECT X.cw_eid |
1661 FROM appears AS appears0, cw_Folder AS X |
1621 FROM appears AS appears0, cw_Folder AS X |
1662 WHERE MATCH (appears0.words) AGAINST ('toto tata' IN BOOLEAN MODE) AND appears0.uid=X.cw_eid AND X.cw_name=tutu |
1622 WHERE MATCH (appears0.words) AGAINST ('toto tata' IN BOOLEAN MODE) AND appears0.uid=X.cw_eid AND X.cw_name=tutu |
1663 UNION ALL |
1623 """) |
1664 SELECT X.cw_eid |
|
1665 FROM appears AS appears0, cw_Image AS X |
|
1666 WHERE MATCH (appears0.words) AGAINST ('toto tata' IN BOOLEAN MODE) AND appears0.uid=X.cw_eid AND X.cw_name=tutu |
|
1667 UNION ALL |
|
1668 SELECT X.cw_eid |
|
1669 FROM appears AS appears0, cw_State AS X |
|
1670 WHERE MATCH (appears0.words) AGAINST ('toto tata' IN BOOLEAN MODE) AND appears0.uid=X.cw_eid AND X.cw_name=tutu |
|
1671 UNION ALL |
|
1672 SELECT X.cw_eid |
|
1673 FROM appears AS appears0, cw_Tag AS X |
|
1674 WHERE MATCH (appears0.words) AGAINST ('toto tata' IN BOOLEAN MODE) AND appears0.uid=X.cw_eid AND X.cw_name=tutu |
|
1675 UNION ALL |
|
1676 SELECT X.cw_eid |
|
1677 FROM appears AS appears0, cw_Transition AS X |
|
1678 WHERE MATCH (appears0.words) AGAINST ('toto tata' IN BOOLEAN MODE) AND appears0.uid=X.cw_eid AND X.cw_name=tutu""") |
|
1679 ] |
1624 ] |
1680 for t in self._parse(queries): |
1625 for t in self._parse(queries): |
1681 yield t |
1626 yield t |
1682 |
1627 |
1683 |
1628 |