188 |
188 |
189 ("Any X WHERE X prenom 'lulu'," |
189 ("Any X WHERE X prenom 'lulu'," |
190 "EXISTS(X owned_by U, U in_group G, G name 'lulufanclub' OR G name 'managers');", |
190 "EXISTS(X owned_by U, U in_group G, G name 'lulufanclub' OR G name 'managers');", |
191 '''SELECT _X.cw_eid |
191 '''SELECT _X.cw_eid |
192 FROM cw_Personne AS _X |
192 FROM cw_Personne AS _X |
193 WHERE _X.cw_prenom=lulu AND EXISTS(SELECT 1 FROM owned_by_relation AS rel_owned_by0, in_group_relation AS rel_in_group1, cw_CWGroup AS _G WHERE rel_owned_by0.eid_from=_X.cw_eid AND rel_in_group1.eid_from=rel_owned_by0.eid_to AND rel_in_group1.eid_to=_G.cw_eid AND ((_G.cw_name=lulufanclub) OR (_G.cw_name=managers)))'''), |
193 WHERE _X.cw_prenom=lulu AND EXISTS(SELECT 1 FROM cw_CWGroup AS _G, in_group_relation AS rel_in_group1, owned_by_relation AS rel_owned_by0 WHERE rel_owned_by0.eid_from=_X.cw_eid AND rel_in_group1.eid_from=rel_owned_by0.eid_to AND rel_in_group1.eid_to=_G.cw_eid AND ((_G.cw_name=lulufanclub) OR (_G.cw_name=managers)))'''), |
194 |
194 |
195 ("Any X WHERE X prenom 'lulu'," |
195 ("Any X WHERE X prenom 'lulu'," |
196 "NOT EXISTS(X owned_by U, U in_group G, G name 'lulufanclub' OR G name 'managers');", |
196 "NOT EXISTS(X owned_by U, U in_group G, G name 'lulufanclub' OR G name 'managers');", |
197 '''SELECT _X.cw_eid |
197 '''SELECT _X.cw_eid |
198 FROM cw_Personne AS _X |
198 FROM cw_Personne AS _X |
199 WHERE _X.cw_prenom=lulu AND NOT (EXISTS(SELECT 1 FROM owned_by_relation AS rel_owned_by0, in_group_relation AS rel_in_group1, cw_CWGroup AS _G WHERE rel_owned_by0.eid_from=_X.cw_eid AND rel_in_group1.eid_from=rel_owned_by0.eid_to AND rel_in_group1.eid_to=_G.cw_eid AND ((_G.cw_name=lulufanclub) OR (_G.cw_name=managers))))'''), |
199 WHERE _X.cw_prenom=lulu AND NOT (EXISTS(SELECT 1 FROM cw_CWGroup AS _G, in_group_relation AS rel_in_group1, owned_by_relation AS rel_owned_by0 WHERE rel_owned_by0.eid_from=_X.cw_eid AND rel_in_group1.eid_from=rel_owned_by0.eid_to AND rel_in_group1.eid_to=_G.cw_eid AND ((_G.cw_name=lulufanclub) OR (_G.cw_name=managers))))'''), |
200 |
200 |
201 ('Any X WHERE X title V, NOT X wikiid V, NOT X title "parent", X is Card', |
201 ('Any X WHERE X title V, NOT X wikiid V, NOT X title "parent", X is Card', |
202 '''SELECT _X.cw_eid |
202 '''SELECT _X.cw_eid |
203 FROM cw_Card AS _X |
203 FROM cw_Card AS _X |
204 WHERE NOT (_X.cw_wikiid=_X.cw_title) AND NOT (_X.cw_title=parent)''') |
204 WHERE NOT (_X.cw_wikiid=_X.cw_title) AND NOT (_X.cw_title=parent)''') |
450 |
450 |
451 # ambiguity in EXISTS() -> should union the sub-query |
451 # ambiguity in EXISTS() -> should union the sub-query |
452 ('Any T WHERE T is Tag, NOT T name in ("t1", "t2"), EXISTS(T tags X, X is IN (CWUser, CWGroup))', |
452 ('Any T WHERE T is Tag, NOT T name in ("t1", "t2"), EXISTS(T tags X, X is IN (CWUser, CWGroup))', |
453 '''SELECT _T.cw_eid |
453 '''SELECT _T.cw_eid |
454 FROM cw_Tag AS _T |
454 FROM cw_Tag AS _T |
455 WHERE NOT (_T.cw_name IN(t1, t2)) AND EXISTS(SELECT 1 FROM tags_relation AS rel_tags0, cw_CWGroup AS _X WHERE rel_tags0.eid_from=_T.cw_eid AND rel_tags0.eid_to=_X.cw_eid UNION SELECT 1 FROM tags_relation AS rel_tags1, cw_CWUser AS _X WHERE rel_tags1.eid_from=_T.cw_eid AND rel_tags1.eid_to=_X.cw_eid)'''), |
455 WHERE NOT (_T.cw_name IN(t1, t2)) AND EXISTS(SELECT 1 FROM cw_CWGroup AS _X, tags_relation AS rel_tags0 WHERE rel_tags0.eid_from=_T.cw_eid AND rel_tags0.eid_to=_X.cw_eid UNION SELECT 1 FROM cw_CWUser AS _X, tags_relation AS rel_tags1 WHERE rel_tags1.eid_from=_T.cw_eid AND rel_tags1.eid_to=_X.cw_eid)'''), |
456 |
456 |
457 # must not use a relation in EXISTS scope to inline a variable |
457 # must not use a relation in EXISTS scope to inline a variable |
458 ('Any U WHERE U eid IN (1,2), EXISTS(X owned_by U)', |
458 ('Any U WHERE U eid IN (1,2), EXISTS(X owned_by U)', |
459 '''SELECT _U.cw_eid |
459 '''SELECT _U.cw_eid |
460 FROM cw_CWUser AS _U |
460 FROM cw_CWUser AS _U |
466 WHERE EXISTS(SELECT 1 FROM owned_by_relation AS rel_owned_by0 WHERE _U.cw_eid IN(1, 2) AND rel_owned_by0.eid_to=_U.cw_eid)'''), |
466 WHERE EXISTS(SELECT 1 FROM owned_by_relation AS rel_owned_by0 WHERE _U.cw_eid IN(1, 2) AND rel_owned_by0.eid_to=_U.cw_eid)'''), |
467 |
467 |
468 ('Any COUNT(U) WHERE EXISTS (P owned_by U, P is IN (Note, Affaire))', |
468 ('Any COUNT(U) WHERE EXISTS (P owned_by U, P is IN (Note, Affaire))', |
469 '''SELECT COUNT(_U.cw_eid) |
469 '''SELECT COUNT(_U.cw_eid) |
470 FROM cw_CWUser AS _U |
470 FROM cw_CWUser AS _U |
471 WHERE EXISTS(SELECT 1 FROM owned_by_relation AS rel_owned_by0, cw_Affaire AS _P WHERE rel_owned_by0.eid_from=_P.cw_eid AND rel_owned_by0.eid_to=_U.cw_eid UNION SELECT 1 FROM owned_by_relation AS rel_owned_by1, cw_Note AS _P WHERE rel_owned_by1.eid_from=_P.cw_eid AND rel_owned_by1.eid_to=_U.cw_eid)'''), |
471 WHERE EXISTS(SELECT 1 FROM cw_Affaire AS _P, owned_by_relation AS rel_owned_by0 WHERE rel_owned_by0.eid_from=_P.cw_eid AND rel_owned_by0.eid_to=_U.cw_eid UNION SELECT 1 FROM cw_Note AS _P, owned_by_relation AS rel_owned_by1 WHERE rel_owned_by1.eid_from=_P.cw_eid AND rel_owned_by1.eid_to=_U.cw_eid)'''), |
472 |
472 |
473 ('Any MAX(X)', |
473 ('Any MAX(X)', |
474 '''SELECT MAX(_X.eid) |
474 '''SELECT MAX(_X.eid) |
475 FROM entities AS _X'''), |
475 FROM entities AS _X'''), |
476 |
476 |
565 |
565 |
566 ADVANCED_WITH_LIMIT_OR_ORDERBY = [ |
566 ADVANCED_WITH_LIMIT_OR_ORDERBY = [ |
567 ('Any COUNT(S),CS GROUPBY CS ORDERBY 1 DESC LIMIT 10 WHERE S is Affaire, C is Societe, S concerne C, C nom CS, (EXISTS(S owned_by 1)) OR (EXISTS(S documented_by N, N title "published"))', |
567 ('Any COUNT(S),CS GROUPBY CS ORDERBY 1 DESC LIMIT 10 WHERE S is Affaire, C is Societe, S concerne C, C nom CS, (EXISTS(S owned_by 1)) OR (EXISTS(S documented_by N, N title "published"))', |
568 '''SELECT COUNT(rel_concerne0.eid_from), _C.cw_nom |
568 '''SELECT COUNT(rel_concerne0.eid_from), _C.cw_nom |
569 FROM concerne_relation AS rel_concerne0, cw_Societe AS _C |
569 FROM concerne_relation AS rel_concerne0, cw_Societe AS _C |
570 WHERE rel_concerne0.eid_to=_C.cw_eid AND ((EXISTS(SELECT 1 FROM owned_by_relation AS rel_owned_by1 WHERE rel_concerne0.eid_from=rel_owned_by1.eid_from AND rel_owned_by1.eid_to=1)) OR (EXISTS(SELECT 1 FROM documented_by_relation AS rel_documented_by2, cw_Card AS _N WHERE rel_concerne0.eid_from=rel_documented_by2.eid_from AND rel_documented_by2.eid_to=_N.cw_eid AND _N.cw_title=published))) |
570 WHERE rel_concerne0.eid_to=_C.cw_eid AND ((EXISTS(SELECT 1 FROM owned_by_relation AS rel_owned_by1 WHERE rel_concerne0.eid_from=rel_owned_by1.eid_from AND rel_owned_by1.eid_to=1)) OR (EXISTS(SELECT 1 FROM cw_Card AS _N, documented_by_relation AS rel_documented_by2 WHERE rel_concerne0.eid_from=rel_documented_by2.eid_from AND rel_documented_by2.eid_to=_N.cw_eid AND _N.cw_title=published))) |
571 GROUP BY _C.cw_nom |
571 GROUP BY _C.cw_nom |
572 ORDER BY 1 DESC |
572 ORDER BY 1 DESC |
573 LIMIT 10'''), |
573 LIMIT 10'''), |
574 ('DISTINCT Any S ORDERBY stockproc(SI) WHERE NOT S ecrit_par O, S para SI', |
574 ('DISTINCT Any S ORDERBY stockproc(SI) WHERE NOT S ecrit_par O, S para SI', |
575 '''SELECT T1.C0 FROM (SELECT DISTINCT _S.cw_eid AS C0, STOCKPROC(_S.cw_para) AS C1 |
575 '''SELECT T1.C0 FROM (SELECT DISTINCT _S.cw_eid AS C0, STOCKPROC(_S.cw_para) AS C1 |
721 WHERE NOT (EXISTS(SELECT 1 FROM evaluee_relation AS rel_evaluee0 WHERE rel_evaluee0.eid_from=_Y.cw_eid))'''), |
721 WHERE NOT (EXISTS(SELECT 1 FROM evaluee_relation AS rel_evaluee0 WHERE rel_evaluee0.eid_from=_Y.cw_eid))'''), |
722 |
722 |
723 ('Any X WHERE NOT Y evaluee X, Y is CWUser', |
723 ('Any X WHERE NOT Y evaluee X, Y is CWUser', |
724 '''SELECT _X.cw_eid |
724 '''SELECT _X.cw_eid |
725 FROM cw_Note AS _X |
725 FROM cw_Note AS _X |
726 WHERE NOT (EXISTS(SELECT 1 FROM evaluee_relation AS rel_evaluee0, cw_CWUser AS _Y WHERE rel_evaluee0.eid_from=_Y.cw_eid AND rel_evaluee0.eid_to=_X.cw_eid))'''), |
726 WHERE NOT (EXISTS(SELECT 1 FROM cw_CWUser AS _Y, evaluee_relation AS rel_evaluee0 WHERE rel_evaluee0.eid_from=_Y.cw_eid AND rel_evaluee0.eid_to=_X.cw_eid))'''), |
727 |
727 |
728 ('Any X,RT WHERE X relation_type RT, NOT X is CWAttribute', |
728 ('Any X,RT WHERE X relation_type RT, NOT X is CWAttribute', |
729 '''SELECT _X.cw_eid, _X.cw_relation_type |
729 '''SELECT _X.cw_eid, _X.cw_relation_type |
730 FROM cw_CWRelation AS _X |
730 FROM cw_CWRelation AS _X |
731 WHERE _X.cw_relation_type IS NOT NULL'''), |
731 WHERE _X.cw_relation_type IS NOT NULL'''), |
814 ORDER BY 4 DESC'''), |
814 ORDER BY 4 DESC'''), |
815 |
815 |
816 ('Any X WHERE X is Affaire, S is Societe, EXISTS(X owned_by U OR (X concerne S?, S owned_by U))', |
816 ('Any X WHERE X is Affaire, S is Societe, EXISTS(X owned_by U OR (X concerne S?, S owned_by U))', |
817 '''SELECT _X.cw_eid |
817 '''SELECT _X.cw_eid |
818 FROM cw_Affaire AS _X |
818 FROM cw_Affaire AS _X |
819 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)'''), |
819 WHERE EXISTS(SELECT 1 FROM cw_CWUser AS _U, owned_by_relation AS rel_owned_by0, owned_by_relation AS rel_owned_by2, 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) 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)'''), |
820 |
820 |
821 ('Any C,M WHERE C travaille G?, G evaluee M?, G is Societe', |
821 ('Any C,M WHERE C travaille G?, G evaluee M?, G is Societe', |
822 '''SELECT _C.cw_eid, rel_evaluee1.eid_to |
822 '''SELECT _C.cw_eid, rel_evaluee1.eid_to |
823 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)''' |
823 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)''' |
824 ), |
824 ), |
825 |
825 |
826 ('Any A,C WHERE A documented_by C?, (C is NULL) OR (EXISTS(C require_permission F, ' |
826 ('Any A,C WHERE A documented_by C?, (C is NULL) OR (EXISTS(C require_permission F, ' |
827 'F name "read", F require_group E, U in_group E)), U eid 1', |
827 'F name "read", F require_group E, U in_group E)), U eid 1', |
828 '''SELECT _A.cw_eid, rel_documented_by0.eid_to |
828 '''SELECT _A.cw_eid, rel_documented_by0.eid_to |
829 FROM cw_Affaire AS _A LEFT OUTER JOIN documented_by_relation AS rel_documented_by0 ON (rel_documented_by0.eid_from=_A.cw_eid) |
829 FROM cw_Affaire AS _A LEFT OUTER JOIN documented_by_relation AS rel_documented_by0 ON (rel_documented_by0.eid_from=_A.cw_eid) |
830 WHERE ((rel_documented_by0.eid_to IS NULL) OR (EXISTS(SELECT 1 FROM require_permission_relation AS rel_require_permission1, cw_CWPermission AS _F, require_group_relation AS rel_require_group2, in_group_relation AS rel_in_group3 WHERE rel_documented_by0.eid_to=rel_require_permission1.eid_from AND rel_require_permission1.eid_to=_F.cw_eid AND _F.cw_name=read AND rel_require_group2.eid_from=_F.cw_eid AND rel_in_group3.eid_to=rel_require_group2.eid_to AND rel_in_group3.eid_from=1)))'''), |
830 WHERE ((rel_documented_by0.eid_to IS NULL) OR (EXISTS(SELECT 1 FROM cw_CWPermission AS _F, in_group_relation AS rel_in_group3, require_group_relation AS rel_require_group2, require_permission_relation AS rel_require_permission1 WHERE rel_documented_by0.eid_to=rel_require_permission1.eid_from AND rel_require_permission1.eid_to=_F.cw_eid AND _F.cw_name=read AND rel_require_group2.eid_from=_F.cw_eid AND rel_in_group3.eid_to=rel_require_group2.eid_to AND rel_in_group3.eid_from=1)))'''), |
831 |
831 |
832 ("Any X WHERE X eid 12, P? connait X", |
832 ("Any X WHERE X eid 12, P? connait X", |
833 '''SELECT _X.cw_eid |
833 '''SELECT _X.cw_eid |
834 FROM cw_Personne AS _X LEFT OUTER JOIN connait_relation AS rel_connait0 ON (rel_connait0.eid_to=12) |
834 FROM cw_Personne AS _X LEFT OUTER JOIN connait_relation AS rel_connait0 ON (rel_connait0.eid_to=_X.cw_eid) |
835 WHERE _X.cw_eid=12''' |
835 WHERE _X.cw_eid=12''' |
|
836 ), |
|
837 ("Any P WHERE X eid 12, P? concerne X, X todo_by S", |
|
838 '''SELECT rel_concerne0.eid_from |
|
839 FROM todo_by_relation AS rel_todo_by1 LEFT OUTER JOIN concerne_relation AS rel_concerne0 ON (rel_concerne0.eid_to=12) |
|
840 WHERE rel_todo_by1.eid_from=12''' |
836 ), |
841 ), |
837 |
842 |
838 ('Any GN, TN ORDERBY GN WHERE T tags G?, T name TN, G name GN', |
843 ('Any GN, TN ORDERBY GN WHERE T tags G?, T name TN, G name GN', |
839 ''' |
844 ''' |
840 SELECT _T0.C1, _T.cw_name |
845 SELECT _T0.C1, _T.cw_name |
897 UNION ALL |
902 UNION ALL |
898 SELECT _G.cw_eid AS C0, _S.cw_eid AS C1 |
903 SELECT _G.cw_eid AS C0, _S.cw_eid AS C1 |
899 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) |
904 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) |
900 UNION ALL |
905 UNION ALL |
901 SELECT _G.cw_eid AS C0, _S.cw_eid AS C1 |
906 SELECT _G.cw_eid AS C0, _S.cw_eid AS C1 |
902 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)'''), |
907 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)'''), |
903 |
908 |
904 ('Any O,AD WHERE NOT S inline1 O, S eid 123, O todo_by AD?', |
909 ('Any O,AD WHERE NOT S inline1 O, S eid 123, O todo_by AD?', |
905 '''SELECT _O.cw_eid, rel_todo_by0.eid_to |
910 '''SELECT _O.cw_eid, rel_todo_by0.eid_to |
906 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 |
911 FROM cw_Note AS _S, cw_Affaire AS _O LEFT OUTER JOIN todo_by_relation AS rel_todo_by0 ON (rel_todo_by0.eid_from=_O.cw_eid) |
907 WHERE (_S.cw_inline1 IS NULL OR _S.cw_inline1!=_O.cw_eid) AND _S.cw_eid=123''') |
912 WHERE (_S.cw_inline1 IS NULL OR _S.cw_inline1!=_O.cw_eid) AND _S.cw_eid=123''') |
908 ] |
913 ] |
909 |
914 |
910 VIRTUAL_VARS = [ |
915 VIRTUAL_VARS = [ |
911 |
916 |
1119 WHERE NOT (EXISTS(SELECT 1 FROM cw_Affaire AS _X WHERE _X.cw_in_state=_S.cw_eid UNION SELECT 1 FROM cw_Note AS _X WHERE _X.cw_in_state=_S.cw_eid UNION SELECT 1 FROM cw_CWUser AS _X WHERE _X.cw_in_state=_S.cw_eid))'''), |
1124 WHERE NOT (EXISTS(SELECT 1 FROM cw_Affaire AS _X WHERE _X.cw_in_state=_S.cw_eid UNION SELECT 1 FROM cw_Note AS _X WHERE _X.cw_in_state=_S.cw_eid UNION SELECT 1 FROM cw_CWUser AS _X WHERE _X.cw_in_state=_S.cw_eid))'''), |
1120 |
1125 |
1121 ('Any PN WHERE NOT X travaille S, X nom PN, S is IN(Division, Societe)', |
1126 ('Any PN WHERE NOT X travaille S, X nom PN, S is IN(Division, Societe)', |
1122 '''SELECT _X.cw_nom |
1127 '''SELECT _X.cw_nom |
1123 FROM cw_Personne AS _X |
1128 FROM cw_Personne AS _X |
1124 WHERE NOT (EXISTS(SELECT 1 FROM travaille_relation AS rel_travaille0, cw_Division AS _S WHERE rel_travaille0.eid_from=_X.cw_eid AND rel_travaille0.eid_to=_S.cw_eid UNION SELECT 1 FROM travaille_relation AS rel_travaille1, cw_Societe AS _S WHERE rel_travaille1.eid_from=_X.cw_eid AND rel_travaille1.eid_to=_S.cw_eid))'''), |
1129 WHERE NOT (EXISTS(SELECT 1 FROM cw_Division AS _S, travaille_relation AS rel_travaille0 WHERE rel_travaille0.eid_from=_X.cw_eid AND rel_travaille0.eid_to=_S.cw_eid UNION SELECT 1 FROM cw_Societe AS _S, travaille_relation AS rel_travaille1 WHERE rel_travaille1.eid_from=_X.cw_eid AND rel_travaille1.eid_to=_S.cw_eid))'''), |
1125 |
1130 |
1126 ('Any PN WHERE NOT X travaille S, S nom PN, S is IN(Division, Societe)', |
1131 ('Any PN WHERE NOT X travaille S, S nom PN, S is IN(Division, Societe)', |
1127 '''SELECT _S.cw_nom |
1132 '''SELECT _S.cw_nom |
1128 FROM cw_Division AS _S |
1133 FROM cw_Division AS _S |
1129 WHERE NOT (EXISTS(SELECT 1 FROM travaille_relation AS rel_travaille0 WHERE rel_travaille0.eid_to=_S.cw_eid)) |
1134 WHERE NOT (EXISTS(SELECT 1 FROM travaille_relation AS rel_travaille0 WHERE rel_travaille0.eid_to=_S.cw_eid)) |
1400 FROM ((SELECT _X.cw_eid AS C0 |
1406 FROM ((SELECT _X.cw_eid AS C0 |
1401 FROM cw_Societe AS _X) |
1407 FROM cw_Societe AS _X) |
1402 UNION ALL |
1408 UNION ALL |
1403 (SELECT _X.cw_eid AS C0 |
1409 (SELECT _X.cw_eid AS C0 |
1404 FROM cw_Affaire AS _X |
1410 FROM cw_Affaire AS _X |
1405 WHERE ((EXISTS(SELECT 1 FROM owned_by_relation AS rel_owned_by0 WHERE rel_owned_by0.eid_from=_X.cw_eid AND rel_owned_by0.eid_to=1)) OR (((EXISTS(SELECT 1 FROM cw_Affaire AS _D LEFT OUTER JOIN concerne_relation AS rel_concerne1 ON (rel_concerne1.eid_from=_D.cw_eid) LEFT OUTER JOIN cw_Note AS _B ON (rel_concerne1.eid_to=_B.cw_eid), owned_by_relation AS rel_owned_by2 WHERE rel_owned_by2.eid_from=_B.cw_eid AND rel_owned_by2.eid_to=1 AND _X.cw_eid=_D.cw_eid)) OR (EXISTS(SELECT 1 FROM cw_Affaire AS _F LEFT OUTER JOIN concerne_relation AS rel_concerne3 ON (rel_concerne3.eid_from=_F.cw_eid) LEFT OUTER JOIN cw_Societe AS _E ON (rel_concerne3.eid_to=_E.cw_eid), owned_by_relation AS rel_owned_by4 WHERE rel_owned_by4.eid_from=_E.cw_eid AND rel_owned_by4.eid_to=1 AND _X.cw_eid=_F.cw_eid))))))) AS _T0, cw_CWEType AS _ET, is_relation AS rel_is0 |
1411 WHERE ((EXISTS(SELECT 1 FROM owned_by_relation AS rel_owned_by0 WHERE rel_owned_by0.eid_from=_X.cw_eid AND rel_owned_by0.eid_to=1)) OR (((EXISTS(SELECT 1 FROM owned_by_relation AS rel_owned_by2, cw_Affaire AS _D LEFT OUTER JOIN concerne_relation AS rel_concerne1 ON (rel_concerne1.eid_from=_D.cw_eid) LEFT OUTER JOIN cw_Note AS _B ON (rel_concerne1.eid_to=_B.cw_eid) WHERE rel_owned_by2.eid_from=_B.cw_eid AND rel_owned_by2.eid_to=1 AND _X.cw_eid=_D.cw_eid)) OR (EXISTS(SELECT 1 FROM owned_by_relation AS rel_owned_by4, cw_Affaire AS _F LEFT OUTER JOIN concerne_relation AS rel_concerne3 ON (rel_concerne3.eid_from=_F.cw_eid) LEFT OUTER JOIN cw_Societe AS _E ON (rel_concerne3.eid_to=_E.cw_eid) WHERE rel_owned_by4.eid_from=_E.cw_eid AND rel_owned_by4.eid_to=1 AND _X.cw_eid=_F.cw_eid))))))) AS _T0, cw_CWEType AS _ET, is_relation AS rel_is0 |
1406 WHERE rel_is0.eid_from=_T0.C0 AND rel_is0.eid_to=_ET.cw_eid |
1412 WHERE rel_is0.eid_from=_T0.C0 AND rel_is0.eid_to=_ET.cw_eid |
1407 GROUP BY _ET.cw_name'''), |
1413 GROUP BY _ET.cw_name'''), |
1408 )): |
1414 )): |
1409 yield t |
1415 yield t |
1410 |
1416 |
1519 yield t |
1525 yield t |
1520 |
1526 |
1521 def test_ambigous_exists_no_from_clause(self): |
1527 def test_ambigous_exists_no_from_clause(self): |
1522 self._check('Any COUNT(U) WHERE U eid 1, EXISTS (P owned_by U, P is IN (Note, Affaire))', |
1528 self._check('Any COUNT(U) WHERE U eid 1, EXISTS (P owned_by U, P is IN (Note, Affaire))', |
1523 '''SELECT COUNT(1) |
1529 '''SELECT COUNT(1) |
1524 WHERE EXISTS(SELECT 1 FROM owned_by_relation AS rel_owned_by0, cw_Affaire AS _P WHERE rel_owned_by0.eid_from=_P.cw_eid AND rel_owned_by0.eid_to=1 UNION SELECT 1 FROM owned_by_relation AS rel_owned_by1, cw_Note AS _P WHERE rel_owned_by1.eid_from=_P.cw_eid AND rel_owned_by1.eid_to=1)''') |
1530 WHERE EXISTS(SELECT 1 FROM cw_Affaire AS _P, owned_by_relation AS rel_owned_by0 WHERE rel_owned_by0.eid_from=_P.cw_eid AND rel_owned_by0.eid_to=1 UNION SELECT 1 FROM cw_Note AS _P, owned_by_relation AS rel_owned_by1 WHERE rel_owned_by1.eid_from=_P.cw_eid AND rel_owned_by1.eid_to=1)''') |
1525 |
1531 |
1526 def test_attr_map_sqlcb(self): |
1532 def test_attr_map_sqlcb(self): |
1527 def generate_ref(gen, linkedvar, rel): |
1533 def generate_ref(gen, linkedvar, rel): |
1528 linkedvar.accept(gen) |
1534 linkedvar.accept(gen) |
1529 return 'VERSION_DATA(%s)' % linkedvar._q_sql |
1535 return 'VERSION_DATA(%s)' % linkedvar._q_sql |
1568 # X without in_group relation, or some G without it. |
1574 # X without in_group relation, or some G without it. |
1569 self._check('Any 1 WHERE NOT X in_group G, X is CWUser', |
1575 self._check('Any 1 WHERE NOT X in_group G, X is CWUser', |
1570 '''SELECT 1 |
1576 '''SELECT 1 |
1571 WHERE NOT (EXISTS(SELECT 1 FROM in_group_relation AS rel_in_group0))''') |
1577 WHERE NOT (EXISTS(SELECT 1 FROM in_group_relation AS rel_in_group0))''') |
1572 |
1578 |
|
1579 def test_nonregr_subquery_missing_join(self): |
|
1580 self._check('Any COUNT(P1148),G GROUPBY G ' |
|
1581 'WHERE G owned_by D, D eid 1122, K1148 bookmarked_by P1148, ' |
|
1582 'K1148 eid 1148, P1148? in_group G', |
|
1583 '''SELECT COUNT(rel_bookmarked_by1.eid_to), _G.cw_eid |
|
1584 FROM owned_by_relation AS rel_owned_by0, cw_CWGroup AS _G LEFT OUTER JOIN in_group_relation AS rel_in_group2 ON (rel_in_group2.eid_to=_G.cw_eid) LEFT OUTER JOIN bookmarked_by_relation AS rel_bookmarked_by1 ON (rel_in_group2.eid_from=rel_bookmarked_by1.eid_to) |
|
1585 WHERE rel_owned_by0.eid_from=_G.cw_eid AND rel_owned_by0.eid_to=1122 AND rel_bookmarked_by1.eid_from=1148 |
|
1586 GROUP BY _G.cw_eid''' |
|
1587 ) |
|
1588 |
|
1589 def test_nonregr_subquery_missing_join2(self): |
|
1590 self._check('Any COUNT(P1148),G GROUPBY G ' |
|
1591 'WHERE G owned_by D, D eid 1122, K1148 bookmarked_by P1148?, ' |
|
1592 'K1148 eid 1148, P1148? in_group G', |
|
1593 '''SELECT COUNT(rel_bookmarked_by1.eid_to), _G.cw_eid |
|
1594 FROM owned_by_relation AS rel_owned_by0, cw_CWGroup AS _G LEFT OUTER JOIN in_group_relation AS rel_in_group2 ON (rel_in_group2.eid_to=_G.cw_eid) LEFT OUTER JOIN bookmarked_by_relation AS rel_bookmarked_by1 ON (rel_bookmarked_by1.eid_from=1148 AND rel_in_group2.eid_from=rel_bookmarked_by1.eid_to) |
|
1595 WHERE rel_owned_by0.eid_from=_G.cw_eid AND rel_owned_by0.eid_to=1122 |
|
1596 GROUP BY _G.cw_eid''') |
|
1597 |
|
1598 |
1573 class SqlServer2005SQLGeneratorTC(PostgresSQLGeneratorTC): |
1599 class SqlServer2005SQLGeneratorTC(PostgresSQLGeneratorTC): |
1574 backend = 'sqlserver2005' |
1600 backend = 'sqlserver2005' |
1575 def _norm_sql(self, sql): |
1601 def _norm_sql(self, sql): |
1576 return sql.strip().replace(' SUBSTR', ' SUBSTRING').replace(' || ', ' + ').replace(' ILIKE ', ' LIKE ') |
1602 return sql.strip().replace(' SUBSTR', ' SUBSTRING').replace(' || ', ' + ').replace(' ILIKE ', ' LIKE ') |
1577 |
1603 |
1872 |
1898 |
1873 def test_ambigous_exists_no_from_clause(self): |
1899 def test_ambigous_exists_no_from_clause(self): |
1874 self._check('Any COUNT(U) WHERE U eid 1, EXISTS (P owned_by U, P is IN (Note, Affaire))', |
1900 self._check('Any COUNT(U) WHERE U eid 1, EXISTS (P owned_by U, P is IN (Note, Affaire))', |
1875 '''SELECT COUNT(1) |
1901 '''SELECT COUNT(1) |
1876 FROM (SELECT 1) AS _T |
1902 FROM (SELECT 1) AS _T |
1877 WHERE EXISTS(SELECT 1 FROM owned_by_relation AS rel_owned_by0, cw_Affaire AS _P WHERE rel_owned_by0.eid_from=_P.cw_eid AND rel_owned_by0.eid_to=1 UNION SELECT 1 FROM owned_by_relation AS rel_owned_by1, cw_Note AS _P WHERE rel_owned_by1.eid_from=_P.cw_eid AND rel_owned_by1.eid_to=1)''') |
1903 WHERE EXISTS(SELECT 1 FROM cw_Affaire AS _P, owned_by_relation AS rel_owned_by0 WHERE rel_owned_by0.eid_from=_P.cw_eid AND rel_owned_by0.eid_to=1 UNION SELECT 1 FROM cw_Note AS _P, owned_by_relation AS rel_owned_by1 WHERE rel_owned_by1.eid_from=_P.cw_eid AND rel_owned_by1.eid_to=1)''') |
1878 |
1904 |
1879 def test_groupby_multiple_outerjoins(self): |
1905 def test_groupby_multiple_outerjoins(self): |
1880 self._check('Any A,U,P,group_concat(TN) GROUPBY A,U,P WHERE A is Affaire, A concerne N, N todo_by U?, T? tags A, T name TN, A todo_by P?', |
1906 self._check('Any A,U,P,group_concat(TN) GROUPBY A,U,P WHERE A is Affaire, A concerne N, N todo_by U?, T? tags A, T name TN, A todo_by P?', |
1881 '''SELECT _A.cw_eid, rel_todo_by1.eid_to, rel_todo_by3.eid_to, GROUP_CONCAT(_T.cw_name) |
1907 '''SELECT _A.cw_eid, rel_todo_by1.eid_to, rel_todo_by3.eid_to, GROUP_CONCAT(_T.cw_name) |
1882 FROM concerne_relation AS rel_concerne0, cw_Affaire AS _A LEFT OUTER JOIN tags_relation AS rel_tags2 ON (rel_tags2.eid_to=_A.cw_eid) LEFT OUTER JOIN cw_Tag AS _T ON (rel_tags2.eid_from=_T.cw_eid) LEFT OUTER JOIN todo_by_relation AS rel_todo_by3 ON (rel_todo_by3.eid_from=_A.cw_eid), cw_Note AS _N LEFT OUTER JOIN todo_by_relation AS rel_todo_by1 ON (rel_todo_by1.eid_from=_N.cw_eid) |
1908 FROM concerne_relation AS rel_concerne0, cw_Affaire AS _A LEFT OUTER JOIN tags_relation AS rel_tags2 ON (rel_tags2.eid_to=_A.cw_eid) LEFT OUTER JOIN cw_Tag AS _T ON (rel_tags2.eid_from=_T.cw_eid) LEFT OUTER JOIN todo_by_relation AS rel_todo_by3 ON (rel_todo_by3.eid_from=_A.cw_eid), cw_Note AS _N LEFT OUTER JOIN todo_by_relation AS rel_todo_by1 ON (rel_todo_by1.eid_from=_N.cw_eid) |