server/test/unittest_rql2sql.py
branchstable
changeset 2199 bd0a0f219751
parent 2071 6ebada01a4a1
child 2354 9b4bac626977
equal deleted inserted replaced
2198:ac45d4dbaf76 2199:bd0a0f219751
   249 FROM cw_CWEType AS OE, cw_CWEType AS SE, cw_CWRType AS R, cw_CWRelation AS X
   249 FROM cw_CWEType AS OE, cw_CWEType AS SE, cw_CWRType AS R, cw_CWRelation AS X
   250 WHERE X.cw_from_entity=44 AND SE.cw_eid=44 AND X.cw_relation_type=139 AND R.cw_eid=139 AND X.cw_to_entity=42 AND OE.cw_eid=42'''),
   250 WHERE X.cw_from_entity=44 AND SE.cw_eid=44 AND X.cw_relation_type=139 AND R.cw_eid=139 AND X.cw_to_entity=42 AND OE.cw_eid=42'''),
   251 
   251 
   252     # Any O WHERE NOT S corrected_in O, S eid %(x)s, S concerns P, O version_of P, O in_state ST, NOT ST name "published", O modification_date MTIME ORDERBY MTIME DESC LIMIT 9
   252     # Any O WHERE NOT S corrected_in O, S eid %(x)s, S concerns P, O version_of P, O in_state ST, NOT ST name "published", O modification_date MTIME ORDERBY MTIME DESC LIMIT 9
   253     ('Any O WHERE NOT S ecrit_par O, S eid 1, S inline1 P, O inline2 P',
   253     ('Any O WHERE NOT S ecrit_par O, S eid 1, S inline1 P, O inline2 P',
   254      '''SELECT DISTINCT O.cw_eid
   254      '''SELECT O.cw_eid
   255 FROM cw_Note AS S, cw_Personne AS O
   255 FROM cw_Note AS S, cw_Personne AS O
   256 WHERE (S.cw_ecrit_par IS NULL OR S.cw_ecrit_par!=O.cw_eid) AND S.cw_eid=1 AND O.cw_inline2=S.cw_inline1'''),
   256 WHERE NOT EXISTS(SELECT 1 WHERE S.cw_ecrit_par=O.cw_eid) AND S.cw_eid=1 AND O.cw_inline2=S.cw_inline1'''),
   257 
   257 
   258     ('DISTINCT Any S ORDERBY stockproc(SI) WHERE NOT S ecrit_par O, S para SI',
   258     ('DISTINCT Any S ORDERBY stockproc(SI) WHERE NOT S ecrit_par O, S para SI',
   259      '''SELECT T1.C0 FROM (SELECT DISTINCT S.cw_eid AS C0, STOCKPROC(S.cw_para) AS C1
   259      '''SELECT T1.C0 FROM (SELECT DISTINCT S.cw_eid AS C0, STOCKPROC(S.cw_para) AS C1
   260 FROM cw_Note AS S
   260 FROM cw_Note AS S
   261 WHERE S.cw_ecrit_par IS NULL
   261 WHERE S.cw_ecrit_par IS NULL
   696 UNION ALL
   696 UNION ALL
   697 SELECT S.cw_eid
   697 SELECT S.cw_eid
   698 FROM cw_Tag AS S, cw_Tag AS T, tags_relation AS rel_tags0
   698 FROM cw_Tag AS S, cw_Tag AS T, tags_relation AS rel_tags0
   699 WHERE NOT (T.cw_eid=28258) AND rel_tags0.eid_from=T.cw_eid AND rel_tags0.eid_to=S.cw_eid'''),
   699 WHERE NOT (T.cw_eid=28258) AND rel_tags0.eid_from=T.cw_eid AND rel_tags0.eid_to=S.cw_eid'''),
   700 
   700 
   701 
       
   702     ('Any X,Y WHERE X created_by Y, X eid 5, NOT Y eid 6',
   701     ('Any X,Y WHERE X created_by Y, X eid 5, NOT Y eid 6',
   703      '''SELECT 5, rel_created_by0.eid_to
   702      '''SELECT 5, rel_created_by0.eid_to
   704 FROM created_by_relation AS rel_created_by0
   703 FROM created_by_relation AS rel_created_by0
   705 WHERE rel_created_by0.eid_from=5 AND NOT (rel_created_by0.eid_to=6)'''),
   704 WHERE rel_created_by0.eid_from=5 AND NOT (rel_created_by0.eid_to=6)'''),
   706 
   705 
   734      '''SELECT X.cw_eid
   733      '''SELECT X.cw_eid
   735 FROM cw_Note AS X
   734 FROM cw_Note AS X
   736 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)'''),
   735 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)'''),
   737 
   736 
   738     ('Any X,T WHERE X title T, NOT X is Bookmark',
   737     ('Any X,T WHERE X title T, NOT X is Bookmark',
   739      '''SELECT DISTINCT X.cw_eid, X.cw_title
   738      '''SELECT X.cw_eid, X.cw_title
   740 FROM cw_Card AS X
   739 FROM cw_Card AS X
   741 UNION
   740 UNION ALL
   742 SELECT DISTINCT X.cw_eid, X.cw_title
   741 SELECT X.cw_eid, X.cw_title
   743 FROM cw_EmailThread AS X'''),
   742 FROM cw_EmailThread AS X'''),
   744 
   743 
   745     ('Any K,V WHERE P is CWProperty, P pkey K, P value V, NOT P for_user U',
   744     ('Any K,V WHERE P is CWProperty, P pkey K, P value V, NOT P for_user U',
   746      '''SELECT DISTINCT P.cw_pkey, P.cw_value
   745      '''SELECT P.cw_pkey, P.cw_value
   747 FROM cw_CWProperty AS P
   746 FROM cw_CWProperty AS P
   748 WHERE P.cw_for_user IS NULL'''),
   747 WHERE P.cw_for_user IS NULL'''),
   749 
   748 
   750     ('Any S WHERE NOT X in_state S, X is IN(Affaire, CWUser)',
   749     ('Any S WHERE NOT X in_state S, X is IN(Affaire, CWUser)',
   751      '''SELECT DISTINCT S.cw_eid
   750      '''SELECT S.cw_eid
   752 FROM cw_Affaire AS X, cw_State AS S
   751 FROM cw_State AS S
   753 WHERE (X.cw_in_state IS NULL OR X.cw_in_state!=S.cw_eid)
   752 WHERE NOT EXISTS(SELECT 1 FROM cw_Affaire AS X WHERE X.cw_in_state=S.cw_eid)
   754 INTERSECT
   753 INTERSECT
   755 SELECT DISTINCT S.cw_eid
   754 SELECT S.cw_eid
   756 FROM cw_CWUser AS X, cw_State AS S
   755 FROM cw_State AS S
   757 WHERE (X.cw_in_state IS NULL OR X.cw_in_state!=S.cw_eid)'''),
   756 WHERE NOT EXISTS(SELECT 1 FROM cw_CWUser AS X WHERE X.cw_in_state=S.cw_eid)'''),
   758     ]
   757     ]
   759 
   758 
   760 OUTER_JOIN = [
   759 OUTER_JOIN = [
   761     ('Any X,S WHERE X travaille S?',
   760     ('Any X,S WHERE X travaille S?',
   762      '''SELECT X.cw_eid, rel_travaille0.eid_to
   761      '''SELECT X.cw_eid, rel_travaille0.eid_to
  1028      '''SELECT P.cw_eid, P.cw_nom
  1027      '''SELECT P.cw_eid, P.cw_nom
  1029 FROM cw_Note AS N, cw_Personne AS P
  1028 FROM cw_Note AS N, cw_Personne AS P
  1030 WHERE N.cw_ecrit_par=P.cw_eid AND N.cw_eid=0'''),
  1029 WHERE N.cw_ecrit_par=P.cw_eid AND N.cw_eid=0'''),
  1031 
  1030 
  1032     ('Any N WHERE NOT N ecrit_par P, P nom "toto"',
  1031     ('Any N WHERE NOT N ecrit_par P, P nom "toto"',
  1033      '''SELECT DISTINCT N.cw_eid
  1032      '''SELECT N.cw_eid
  1034 FROM cw_Note AS N, cw_Personne AS P
  1033 FROM cw_Note AS N, cw_Personne AS P
  1035 WHERE (N.cw_ecrit_par IS NULL OR N.cw_ecrit_par!=P.cw_eid) AND P.cw_nom=toto'''),
  1034 WHERE NOT EXISTS(SELECT 1 WHERE N.cw_ecrit_par=P.cw_eid) AND P.cw_nom=toto'''),
  1036 
  1035 
  1037     ('Any P WHERE N ecrit_par P, N eid 0',
  1036     ('Any P WHERE N ecrit_par P, N eid 0',
  1038     '''SELECT N.cw_ecrit_par
  1037     '''SELECT N.cw_ecrit_par
  1039 FROM cw_Note AS N
  1038 FROM cw_Note AS N
  1040 WHERE N.cw_ecrit_par IS NOT NULL AND N.cw_eid=0'''),
  1039 WHERE N.cw_ecrit_par IS NOT NULL AND N.cw_eid=0'''),
  1043     '''SELECT P.cw_eid
  1042     '''SELECT P.cw_eid
  1044 FROM cw_Note AS N, cw_Personne AS P
  1043 FROM cw_Note AS N, cw_Personne AS P
  1045 WHERE N.cw_ecrit_par=P.cw_eid AND N.cw_eid=0'''),
  1044 WHERE N.cw_ecrit_par=P.cw_eid AND N.cw_eid=0'''),
  1046 
  1045 
  1047     ('Any P WHERE NOT N ecrit_par P, P is Personne, N eid 512',
  1046     ('Any P WHERE NOT N ecrit_par P, P is Personne, N eid 512',
  1048      '''SELECT DISTINCT P.cw_eid
  1047      '''SELECT P.cw_eid
  1049 FROM cw_Note AS N, cw_Personne AS P
  1048 FROM cw_Note AS N, cw_Personne AS P
  1050 WHERE (N.cw_ecrit_par IS NULL OR N.cw_ecrit_par!=P.cw_eid) AND N.cw_eid=512'''),
  1049 WHERE NOT EXISTS(SELECT 1 WHERE N.cw_ecrit_par=P.cw_eid) AND N.cw_eid=512'''),
  1051 
  1050 
  1052     ('Any S,ES,T WHERE S state_of ET, ET name "CWUser", ES allowed_transition T, T destination_state S',
  1051     ('Any S,ES,T WHERE S state_of ET, ET name "CWUser", ES allowed_transition T, T destination_state S',
  1053      '''SELECT T.cw_destination_state, rel_allowed_transition1.eid_from, T.cw_eid
  1052      '''SELECT T.cw_destination_state, rel_allowed_transition1.eid_from, T.cw_eid
  1054 FROM allowed_transition_relation AS rel_allowed_transition1, cw_CWEType AS ET, cw_Transition AS T, state_of_relation AS rel_state_of0
  1053 FROM allowed_transition_relation AS rel_allowed_transition1, cw_CWEType AS ET, cw_Transition AS T, state_of_relation AS rel_state_of0
  1055 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'''),
  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'''),
  1068 
  1067 
  1069     ]
  1068     ]
  1070 
  1069 
  1071 INTERSECT = [
  1070 INTERSECT = [
  1072     ('Any SN WHERE NOT X in_state S, S name SN',
  1071     ('Any SN WHERE NOT X in_state S, S name SN',
  1073      '''SELECT DISTINCT S.cw_name
  1072      '''SELECT S.cw_name
  1074 FROM cw_Affaire AS X, cw_State AS S
  1073 FROM cw_State AS S
  1075 WHERE (X.cw_in_state IS NULL OR X.cw_in_state!=S.cw_eid)
  1074 WHERE NOT EXISTS(SELECT 1 FROM cw_Affaire AS X WHERE X.cw_in_state=S.cw_eid)
  1076 INTERSECT
  1075 INTERSECT
  1077 SELECT DISTINCT S.cw_name
  1076 SELECT S.cw_name
  1078 FROM cw_CWUser AS X, cw_State AS S
  1077 FROM cw_State AS S
  1079 WHERE (X.cw_in_state IS NULL OR X.cw_in_state!=S.cw_eid)
  1078 WHERE NOT EXISTS(SELECT 1 FROM cw_CWUser AS X WHERE X.cw_in_state=S.cw_eid)
  1080 INTERSECT
  1079 INTERSECT
  1081 SELECT DISTINCT S.cw_name
  1080 SELECT S.cw_name
  1082 FROM cw_Note AS X, cw_State AS S
  1081 FROM cw_State AS S
  1083 WHERE (X.cw_in_state IS NULL OR X.cw_in_state!=S.cw_eid)'''),
  1082 WHERE NOT EXISTS(SELECT 1 FROM cw_Note AS X WHERE X.cw_in_state=S.cw_eid)'''),
  1084 
  1083 
  1085     ('Any PN WHERE NOT X travaille S, X nom PN, S is IN(Division, Societe)',
  1084     ('Any PN WHERE NOT X travaille S, X nom PN, S is IN(Division, Societe)',
  1086      '''SELECT X.cw_nom
  1085      '''SELECT X.cw_nom
  1087 FROM cw_Personne AS X
  1086 FROM cw_Personne AS X
  1088 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)
  1087 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)
  1089 INTERSECT ALL
  1088 INTERSECT
  1090 SELECT X.cw_nom
  1089 SELECT X.cw_nom
  1091 FROM cw_Personne AS X
  1090 FROM cw_Personne AS X
  1092 WHERE NOT EXISTS(SELECT 1 FROM travaille_relation AS rel_travaille0,cw_Societe AS S WHERE rel_travaille0.eid_from=X.cw_eid AND rel_travaille0.eid_to=S.cw_eid)'''),
  1091 WHERE NOT EXISTS(SELECT 1 FROM travaille_relation AS rel_travaille0,cw_Societe AS S WHERE rel_travaille0.eid_from=X.cw_eid AND rel_travaille0.eid_to=S.cw_eid)'''),
  1093 
  1092 
  1094     ('Any PN WHERE NOT X travaille S, S nom PN, S is IN(Division, Societe)',
  1093     ('Any PN WHERE NOT X travaille S, S nom PN, S is IN(Division, Societe)',