server/test/unittest_rql2sql.py
branchstable
changeset 3587 5b3725f315fc
parent 3520 eb508952ee81
child 3589 a5432f99f2d9
child 3632 874f5a73e89f
equal deleted inserted replaced
3586:52b00c5e441a 3587:5b3725f315fc
   334     ('Any L WHERE X login "admin", X identity Y?, Y login L',
   334     ('Any L WHERE X login "admin", X identity Y?, Y login L',
   335      '''SELECT Y.cw_login
   335      '''SELECT Y.cw_login
   336 FROM cw_CWUser AS X LEFT OUTER JOIN cw_CWUser AS Y ON (X.cw_eid=Y.cw_eid)
   336 FROM cw_CWUser AS X LEFT OUTER JOIN cw_CWUser AS Y ON (X.cw_eid=Y.cw_eid)
   337 WHERE X.cw_login=admin'''),
   337 WHERE X.cw_login=admin'''),
   338 
   338 
   339     ('Any XN ORDERBY XN WHERE X name XN',
   339     ('Any XN ORDERBY XN WHERE X name XN, X is IN (Basket,Folder,Tag)',
   340      '''SELECT X.cw_name
   340      '''SELECT X.cw_name
   341 FROM cw_BaseTransition AS X
       
   342 UNION ALL
       
   343 SELECT X.cw_name
       
   344 FROM cw_Basket AS X
   341 FROM cw_Basket AS X
   345 UNION ALL
       
   346 SELECT X.cw_name
       
   347 FROM cw_CWCache AS X
       
   348 UNION ALL
       
   349 SELECT X.cw_name
       
   350 FROM cw_CWConstraintType AS X
       
   351 UNION ALL
       
   352 SELECT X.cw_name
       
   353 FROM cw_CWEType AS X
       
   354 UNION ALL
       
   355 SELECT X.cw_name
       
   356 FROM cw_CWGroup AS X
       
   357 UNION ALL
       
   358 SELECT X.cw_name
       
   359 FROM cw_CWPermission AS X
       
   360 UNION ALL
       
   361 SELECT X.cw_name
       
   362 FROM cw_CWRType AS X
       
   363 UNION ALL
       
   364 SELECT X.cw_name
       
   365 FROM cw_File AS X
       
   366 UNION ALL
   342 UNION ALL
   367 SELECT X.cw_name
   343 SELECT X.cw_name
   368 FROM cw_Folder AS X
   344 FROM cw_Folder AS X
   369 UNION ALL
   345 UNION ALL
   370 SELECT X.cw_name
   346 SELECT X.cw_name
   371 FROM cw_Image AS X
       
   372 UNION ALL
       
   373 SELECT X.cw_name
       
   374 FROM cw_State AS X
       
   375 UNION ALL
       
   376 SELECT X.cw_name
       
   377 FROM cw_Tag AS X
   347 FROM cw_Tag AS X
   378 UNION ALL
       
   379 SELECT X.cw_name
       
   380 FROM cw_Transition AS X
       
   381 UNION ALL
       
   382 SELECT X.cw_name
       
   383 FROM cw_Workflow AS X
       
   384 UNION ALL
       
   385 SELECT X.cw_name
       
   386 FROM cw_WorkflowTransition AS X
       
   387 ORDER BY 1'''),
   348 ORDER BY 1'''),
   388 
   349 
   389     # DISTINCT, can use relation under exists scope as principal
   350     # DISTINCT, can use relation under exists scope as principal
   390     ('DISTINCT Any X,Y WHERE X name "CWGroup", Y eid IN(1, 2, 3), EXISTS(X read_permission Y)',
   351     ('DISTINCT Any X,Y WHERE X name "CWGroup", Y eid IN(1, 2, 3), EXISTS(X read_permission Y)',
   391      '''SELECT DISTINCT X.cw_eid, rel_read_permission0.eid_to
   352      '''SELECT DISTINCT X.cw_eid, rel_read_permission0.eid_to
   466 UNION ALL
   427 UNION ALL
   467 SELECT X.cw_eid, Y.cw_eid
   428 SELECT X.cw_eid, Y.cw_eid
   468 FROM cw_CWRType AS X, cw_RQLExpression AS Y
   429 FROM cw_CWRType AS X, cw_RQLExpression AS Y
   469 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)'''),
   430 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 
   431 
   471     ('Any MAX(X)+MIN(X), N GROUPBY N WHERE X name N;',
   432     ('Any MAX(X)+MIN(X), N GROUPBY N WHERE X name N, X is IN (Basket, Folder, Tag);',
   472      '''SELECT (MAX(T1.C0) + MIN(T1.C0)), T1.C1 FROM (SELECT X.cw_eid AS C0, X.cw_name AS C1
   433      '''SELECT (MAX(T1.C0) + MIN(T1.C0)), T1.C1 FROM (SELECT X.cw_eid AS C0, X.cw_name AS C1
   473 FROM cw_BaseTransition AS X
       
   474 UNION ALL
       
   475 SELECT X.cw_eid AS C0, X.cw_name AS C1
       
   476 FROM cw_Basket AS X
   434 FROM cw_Basket AS X
   477 UNION ALL
       
   478 SELECT X.cw_eid AS C0, X.cw_name AS C1
       
   479 FROM cw_CWCache AS X
       
   480 UNION ALL
       
   481 SELECT X.cw_eid AS C0, X.cw_name AS C1
       
   482 FROM cw_CWConstraintType AS X
       
   483 UNION ALL
       
   484 SELECT X.cw_eid AS C0, X.cw_name AS C1
       
   485 FROM cw_CWEType AS X
       
   486 UNION ALL
       
   487 SELECT X.cw_eid AS C0, X.cw_name AS C1
       
   488 FROM cw_CWGroup AS X
       
   489 UNION ALL
       
   490 SELECT X.cw_eid AS C0, X.cw_name AS C1
       
   491 FROM cw_CWPermission AS X
       
   492 UNION ALL
       
   493 SELECT X.cw_eid AS C0, X.cw_name AS C1
       
   494 FROM cw_CWRType AS X
       
   495 UNION ALL
       
   496 SELECT X.cw_eid AS C0, X.cw_name AS C1
       
   497 FROM cw_File AS X
       
   498 UNION ALL
   435 UNION ALL
   499 SELECT X.cw_eid AS C0, X.cw_name AS C1
   436 SELECT X.cw_eid AS C0, X.cw_name AS C1
   500 FROM cw_Folder AS X
   437 FROM cw_Folder AS X
   501 UNION ALL
   438 UNION ALL
   502 SELECT X.cw_eid AS C0, X.cw_name AS C1
   439 SELECT X.cw_eid AS C0, X.cw_name AS C1
   503 FROM cw_Image AS X
   440 FROM cw_Tag AS X) AS T1
   504 UNION ALL
       
   505 SELECT X.cw_eid AS C0, X.cw_name AS C1
       
   506 FROM cw_State AS X
       
   507 UNION ALL
       
   508 SELECT X.cw_eid AS C0, X.cw_name AS C1
       
   509 FROM cw_Tag AS X
       
   510 UNION ALL
       
   511 SELECT X.cw_eid AS C0, X.cw_name AS C1
       
   512 FROM cw_Transition AS X
       
   513 UNION ALL
       
   514 SELECT X.cw_eid AS C0, X.cw_name AS C1
       
   515 FROM cw_Workflow AS X
       
   516 UNION ALL
       
   517 SELECT X.cw_eid AS C0, X.cw_name AS C1
       
   518 FROM cw_WorkflowTransition AS X) AS T1
       
   519 GROUP BY T1.C1'''),
   441 GROUP BY T1.C1'''),
   520 
   442 
   521     ('Any MAX(X)+MIN(LENGTH(D)), N GROUPBY N ORDERBY 1, N, DF WHERE X name N, X data D, X data_format DF;',
   443     ('Any MAX(X)+MIN(LENGTH(D)), N GROUPBY N ORDERBY 1, N, DF WHERE X data_name N, X data D, X data_format DF;',
   522      '''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
   444      '''SELECT (MAX(T1.C1) + MIN(LENGTH(T1.C0))), T1.C2 FROM (SELECT X.cw_data AS C0, X.cw_eid AS C1, X.cw_data_name AS C2, X.cw_data_format AS C3
   523 FROM cw_File AS X
   445 FROM cw_File AS X
   524 UNION ALL
   446 UNION ALL
   525 SELECT X.cw_data AS C0, X.cw_eid AS C1, X.cw_name AS C2, X.cw_data_format AS C3
   447 SELECT X.cw_data AS C0, X.cw_eid AS C1, X.cw_data_name AS C2, X.cw_data_format AS C3
   526 FROM cw_Image AS X) AS T1
   448 FROM cw_Image AS X) AS T1
   527 GROUP BY T1.C2
   449 GROUP BY T1.C2
   528 ORDER BY 1,2,T1.C3'''),
   450 ORDER BY 1,2,T1.C3'''),
   529 
   451 
   530     ('DISTINCT Any S ORDERBY R WHERE A is Affaire, A sujet S, A ref R',
   452     ('DISTINCT Any S ORDERBY R WHERE A is Affaire, A sujet S, A ref R',
   531      '''SELECT T1.C0 FROM (SELECT DISTINCT A.cw_sujet AS C0, A.cw_ref AS C1
   453      '''SELECT T1.C0 FROM (SELECT DISTINCT A.cw_sujet AS C0, A.cw_ref AS C1
   532 FROM cw_Affaire AS A
   454 FROM cw_Affaire AS A
   533 ORDER BY 2) AS T1'''),
   455 ORDER BY 2) AS T1'''),
   534 
   456 
   535     ('DISTINCT Any MAX(X)+MIN(LENGTH(D)), N GROUPBY N ORDERBY 2, DF WHERE X name N, X data D, X data_format DF;',
   457     ('DISTINCT Any MAX(X)+MIN(LENGTH(D)), N GROUPBY N ORDERBY 2, DF WHERE X data_name N, X data D, X data_format DF;',
   536      '''SELECT T1.C0,T1.C1 FROM (SELECT DISTINCT (MAX(T1.C1) + MIN(LENGTH(T1.C0))) AS C0, T1.C2 AS C1, T1.C3 AS C2 FROM (SELECT DISTINCT X.cw_data AS C0, X.cw_eid AS C1, X.cw_name AS C2, X.cw_data_format AS C3
   458      '''SELECT T1.C0,T1.C1 FROM (SELECT DISTINCT (MAX(T1.C1) + MIN(LENGTH(T1.C0))) AS C0, T1.C2 AS C1, T1.C3 AS C2 FROM (SELECT DISTINCT X.cw_data AS C0, X.cw_eid AS C1, X.cw_data_name AS C2, X.cw_data_format AS C3
   537 FROM cw_File AS X
   459 FROM cw_File AS X
   538 UNION
   460 UNION
   539 SELECT DISTINCT X.cw_data AS C0, X.cw_eid AS C1, X.cw_name AS C2, X.cw_data_format AS C3
   461 SELECT DISTINCT X.cw_data AS C0, X.cw_eid AS C1, X.cw_data_name AS C2, X.cw_data_format AS C3
   540 FROM cw_Image AS X) AS T1
   462 FROM cw_Image AS X) AS T1
   541 GROUP BY T1.C2,T1.C3
   463 GROUP BY T1.C2,T1.C3
   542 ORDER BY 2,3) AS T1
   464 ORDER BY 2,3) AS T1
   543 '''),
   465 '''),
   544 
   466 
  1406             ('Personne X WHERE X has_text %(text)s',
  1328             ('Personne X WHERE X has_text %(text)s',
  1407              """SELECT X.eid
  1329              """SELECT X.eid
  1408 FROM appears AS appears0, entities AS X
  1330 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'"""),
  1331 WHERE appears0.words @@ to_tsquery('default', 'hip&hop&momo') AND appears0.uid=X.eid AND X.type='Personne'"""),
  1410 
  1332 
  1411             ('Any X WHERE X has_text "toto tata", X name "tutu", X is IN (Basket,File,Folder)',
  1333             ('Any X WHERE X has_text "toto tata", X name "tutu", X is IN (Basket,Folder)',
  1412              """SELECT X.cw_eid
  1334              """SELECT X.cw_eid
  1413 FROM appears AS appears0, cw_Basket AS X
  1335 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
       
  1415 UNION ALL
       
  1416 SELECT X.cw_eid
       
  1417 FROM appears AS appears0, cw_File AS X
       
  1418 WHERE appears0.words @@ to_tsquery('default', 'toto&tata') AND appears0.uid=X.cw_eid AND X.cw_name=tutu
  1336 WHERE appears0.words @@ to_tsquery('default', 'toto&tata') AND appears0.uid=X.cw_eid AND X.cw_name=tutu
  1419 UNION ALL
  1337 UNION ALL
  1420 SELECT X.cw_eid
  1338 SELECT X.cw_eid
  1421 FROM appears AS appears0, cw_Folder AS X
  1339 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
  1340 WHERE appears0.words @@ to_tsquery('default', 'toto&tata') AND appears0.uid=X.cw_eid AND X.cw_name=tutu
  1555             ('Personne X WHERE X has_text "toto tata"',
  1473             ('Personne X WHERE X has_text "toto tata"',
  1556              """SELECT X.eid
  1474              """SELECT X.eid
  1557 FROM appears AS appears0, entities AS X
  1475 FROM appears AS appears0, entities AS X
  1558 WHERE appears0.word_id IN (SELECT word_id FROM word WHERE word in ('toto', 'tata')) AND appears0.uid=X.eid AND X.type='Personne'"""),
  1476 WHERE appears0.word_id IN (SELECT word_id FROM word WHERE word in ('toto', 'tata')) AND appears0.uid=X.eid AND X.type='Personne'"""),
  1559 
  1477 
  1560             ('Any X WHERE X has_text "toto tata", X name "tutu", X is IN (Basket,File,Folder)',
  1478             ('Any X WHERE X has_text "toto tata", X name "tutu", X is IN (Basket,Folder)',
  1561              """SELECT X.cw_eid
  1479              """SELECT X.cw_eid
  1562 FROM appears AS appears0, cw_Basket AS X
  1480 FROM appears AS appears0, cw_Basket AS X
  1563 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
       
  1564 UNION ALL
       
  1565 SELECT X.cw_eid
       
  1566 FROM appears AS appears0, cw_File AS X
       
  1567 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
  1481 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
  1568 UNION ALL
  1482 UNION ALL
  1569 SELECT X.cw_eid
  1483 SELECT X.cw_eid
  1570 FROM appears AS appears0, cw_Folder AS X
  1484 FROM appears AS appears0, cw_Folder AS X
  1571 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
  1485 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
  1616 WHERE MATCH (appears0.words) AGAINST ('toto tata' IN BOOLEAN MODE) AND appears0.uid=X.eid AND X.type='Personne'"""),
  1530 WHERE MATCH (appears0.words) AGAINST ('toto tata' IN BOOLEAN MODE) AND appears0.uid=X.eid AND X.type='Personne'"""),
  1617             ('Personne X WHERE X has_text %(text)s',
  1531             ('Personne X WHERE X has_text %(text)s',
  1618              """SELECT X.eid
  1532              """SELECT X.eid
  1619 FROM appears AS appears0, entities AS X
  1533 FROM appears AS appears0, entities AS X
  1620 WHERE MATCH (appears0.words) AGAINST ('hip hop momo' IN BOOLEAN MODE) AND appears0.uid=X.eid AND X.type='Personne'"""),
  1534 WHERE MATCH (appears0.words) AGAINST ('hip hop momo' IN BOOLEAN MODE) AND appears0.uid=X.eid AND X.type='Personne'"""),
  1621             ('Any X WHERE X has_text "toto tata", X name "tutu", X is IN (Basket,File,Folder)',
  1535             ('Any X WHERE X has_text "toto tata", X name "tutu", X is IN (Basket,Folder)',
  1622              """SELECT X.cw_eid
  1536              """SELECT X.cw_eid
  1623 FROM appears AS appears0, cw_Basket AS X
  1537 FROM appears AS appears0, cw_Basket AS X
  1624 WHERE MATCH (appears0.words) AGAINST ('toto tata' IN BOOLEAN MODE) AND appears0.uid=X.cw_eid AND X.cw_name=tutu
       
  1625 UNION ALL
       
  1626 SELECT X.cw_eid
       
  1627 FROM appears AS appears0, cw_File AS X
       
  1628 WHERE MATCH (appears0.words) AGAINST ('toto tata' IN BOOLEAN MODE) AND appears0.uid=X.cw_eid AND X.cw_name=tutu
  1538 WHERE MATCH (appears0.words) AGAINST ('toto tata' IN BOOLEAN MODE) AND appears0.uid=X.cw_eid AND X.cw_name=tutu
  1629 UNION ALL
  1539 UNION ALL
  1630 SELECT X.cw_eid
  1540 SELECT X.cw_eid
  1631 FROM appears AS appears0, cw_Folder AS X
  1541 FROM appears AS appears0, cw_Folder AS X
  1632 WHERE MATCH (appears0.words) AGAINST ('toto tata' IN BOOLEAN MODE) AND appears0.uid=X.cw_eid AND X.cw_name=tutu
  1542 WHERE MATCH (appears0.words) AGAINST ('toto tata' IN BOOLEAN MODE) AND appears0.uid=X.cw_eid AND X.cw_name=tutu