158 UNION ALL |
158 UNION ALL |
159 SELECT rel_evaluee0.eid_to |
159 SELECT rel_evaluee0.eid_to |
160 FROM cw_SubDivision AS _X, evaluee_relation AS rel_evaluee0 |
160 FROM cw_SubDivision AS _X, evaluee_relation AS rel_evaluee0 |
161 WHERE rel_evaluee0.eid_from=_X.cw_eid AND _X.cw_nom IN(Logilab, Caesium)'''), |
161 WHERE rel_evaluee0.eid_from=_X.cw_eid AND _X.cw_nom IN(Logilab, Caesium)'''), |
162 |
162 |
163 ("Any X WHERE X creation_date TODAY, X is Affaire", |
|
164 '''SELECT _X.cw_eid |
|
165 FROM cw_Affaire AS _X |
|
166 WHERE DATE(_X.cw_creation_date)=CURRENT_DATE'''), |
|
167 |
|
168 ("Any N WHERE G is CWGroup, G name N, E eid 12, E read_permission G", |
163 ("Any N WHERE G is CWGroup, G name N, E eid 12, E read_permission G", |
169 '''SELECT _G.cw_name |
164 '''SELECT _G.cw_name |
170 FROM cw_CWGroup AS _G, read_permission_relation AS rel_read_permission0 |
165 FROM cw_CWGroup AS _G, read_permission_relation AS rel_read_permission0 |
171 WHERE rel_read_permission0.eid_from=12 AND rel_read_permission0.eid_to=_G.cw_eid'''), |
166 WHERE rel_read_permission0.eid_from=12 AND rel_read_permission0.eid_to=_G.cw_eid'''), |
172 |
167 |
681 |
676 |
682 ('Any X WHERE NOT X travaille S, X is Personne', |
677 ('Any X WHERE NOT X travaille S, X is Personne', |
683 '''SELECT _X.cw_eid |
678 '''SELECT _X.cw_eid |
684 FROM cw_Personne AS _X |
679 FROM cw_Personne AS _X |
685 WHERE NOT (EXISTS(SELECT 1 FROM travaille_relation AS rel_travaille0 WHERE rel_travaille0.eid_from=_X.cw_eid))'''), |
680 WHERE NOT (EXISTS(SELECT 1 FROM travaille_relation AS rel_travaille0 WHERE rel_travaille0.eid_from=_X.cw_eid))'''), |
686 |
|
687 ("Personne P where not P datenaiss TODAY", |
|
688 '''SELECT _P.cw_eid |
|
689 FROM cw_Personne AS _P |
|
690 WHERE NOT (DATE(_P.cw_datenaiss)=CURRENT_DATE)'''), |
|
691 |
681 |
692 ("Personne P where NOT P concerne A", |
682 ("Personne P where NOT P concerne A", |
693 '''SELECT _P.cw_eid |
683 '''SELECT _P.cw_eid |
694 FROM cw_Personne AS _P |
684 FROM cw_Personne AS _P |
695 WHERE NOT (EXISTS(SELECT 1 FROM concerne_relation AS rel_concerne0 WHERE rel_concerne0.eid_from=_P.cw_eid))'''), |
685 WHERE NOT (EXISTS(SELECT 1 FROM concerne_relation AS rel_concerne0 WHERE rel_concerne0.eid_from=_P.cw_eid))'''), |
1388 self.assertMultiLineEqual((r % args).strip(), |
1378 self.assertMultiLineEqual((r % args).strip(), |
1389 '''SELECT _X.cw_eid |
1379 '''SELECT _X.cw_eid |
1390 FROM cw_CWUser AS _X |
1380 FROM cw_CWUser AS _X |
1391 WHERE _X.cw_login IS NULL''') |
1381 WHERE _X.cw_login IS NULL''') |
1392 |
1382 |
|
1383 def test_today(self): |
|
1384 for t in self._parse([("Any X WHERE X creation_date TODAY, X is Affaire", |
|
1385 '''SELECT _X.cw_eid |
|
1386 FROM cw_Affaire AS _X |
|
1387 WHERE DATE(_X.cw_creation_date)=CAST(clock_timestamp() AS DATE)'''), |
|
1388 ("Personne P where not P datenaiss TODAY", |
|
1389 '''SELECT _P.cw_eid |
|
1390 FROM cw_Personne AS _P |
|
1391 WHERE NOT (DATE(_P.cw_datenaiss)=CAST(clock_timestamp() AS DATE))'''), |
|
1392 ]): |
|
1393 yield t |
1393 |
1394 |
1394 def test_date_extraction(self): |
1395 def test_date_extraction(self): |
1395 self._check("Any MONTH(D) WHERE P is Personne, P creation_date D", |
1396 self._check("Any MONTH(D) WHERE P is Personne, P creation_date D", |
1396 '''SELECT CAST(EXTRACT(MONTH from _P.cw_creation_date) AS INTEGER) |
1397 '''SELECT CAST(EXTRACT(MONTH from _P.cw_creation_date) AS INTEGER) |
1397 FROM cw_Personne AS _P''') |
1398 FROM cw_Personne AS _P''') |
1745 |
1746 |
1746 |
1747 |
1747 class SqlServer2005SQLGeneratorTC(PostgresSQLGeneratorTC): |
1748 class SqlServer2005SQLGeneratorTC(PostgresSQLGeneratorTC): |
1748 backend = 'sqlserver2005' |
1749 backend = 'sqlserver2005' |
1749 def _norm_sql(self, sql): |
1750 def _norm_sql(self, sql): |
1750 return sql.strip().replace(' SUBSTR', ' SUBSTRING').replace(' || ', ' + ').replace(' ILIKE ', ' LIKE ').replace('TRUE', '1').replace('FALSE', '0').replace('CURRENT_DATE', str(date.today())) |
1751 return sql.strip().replace(' SUBSTR', ' SUBSTRING').replace(' || ', ' + ').replace(' ILIKE ', ' LIKE ').replace('TRUE', '1').replace('FALSE', '0') |
1751 |
1752 |
1752 def test_has_text(self): |
1753 def test_has_text(self): |
1753 for t in self._parse(HAS_TEXT_LG_INDEXER): |
1754 for t in self._parse(HAS_TEXT_LG_INDEXER): |
1754 yield t |
1755 yield t |
1755 |
1756 |
1910 'WHERE X creation_date XSCT, X modification_date XECT, ' |
1911 'WHERE X creation_date XSCT, X modification_date XECT, ' |
1911 'X ordernum XCE, X is CWAttribute', |
1912 'X ordernum XCE, X is CWAttribute', |
1912 '''SELECT ((DATEPART(YEAR, _X.cw_modification_date) * 100) + DATEPART(MONTH, _X.cw_modification_date)), COUNT(_X.cw_eid), SUM(_X.cw_ordernum), AVG((_X.cw_creation_date - _X.cw_modification_date)) |
1913 '''SELECT ((DATEPART(YEAR, _X.cw_modification_date) * 100) + DATEPART(MONTH, _X.cw_modification_date)), COUNT(_X.cw_eid), SUM(_X.cw_ordernum), AVG((_X.cw_creation_date - _X.cw_modification_date)) |
1913 FROM cw_CWAttribute AS _X |
1914 FROM cw_CWAttribute AS _X |
1914 GROUP BY DATEPART(YEAR, _X.cw_modification_date),DATEPART(MONTH, _X.cw_modification_date) |
1915 GROUP BY DATEPART(YEAR, _X.cw_modification_date),DATEPART(MONTH, _X.cw_modification_date) |
1915 ORDER BY 1'''), |
1916 ORDER BY 1''') |
|
1917 |
|
1918 def test_today(self): |
|
1919 for t in self._parse([("Any X WHERE X creation_date TODAY, X is Affaire", |
|
1920 '''SELECT _X.cw_eid |
|
1921 FROM cw_Affaire AS _X |
|
1922 WHERE DATE(_X.cw_creation_date)=CURRENT_DATE'''), |
|
1923 |
|
1924 ("Personne P where not P datenaiss TODAY", |
|
1925 '''SELECT _P.cw_eid |
|
1926 FROM cw_Personne AS _P |
|
1927 WHERE NOT (DATE(_P.cw_datenaiss)=CURRENT_DATE)'''), |
|
1928 ]): |
|
1929 yield t |
1916 |
1930 |
1917 |
1931 |
1918 class SqliteSQLGeneratorTC(PostgresSQLGeneratorTC): |
1932 class SqliteSQLGeneratorTC(PostgresSQLGeneratorTC): |
1919 backend = 'sqlite' |
1933 backend = 'sqlite' |
1920 |
1934 |
2066 '''SELECT ((YEAR(_X.cw_modification_date) * 100) + MONTH(_X.cw_modification_date)), COUNT(_X.cw_eid), SUM(_X.cw_ordernum), AVG((_X.cw_creation_date - _X.cw_modification_date)) |
2080 '''SELECT ((YEAR(_X.cw_modification_date) * 100) + MONTH(_X.cw_modification_date)), COUNT(_X.cw_eid), SUM(_X.cw_ordernum), AVG((_X.cw_creation_date - _X.cw_modification_date)) |
2067 FROM cw_CWAttribute AS _X |
2081 FROM cw_CWAttribute AS _X |
2068 GROUP BY YEAR(_X.cw_modification_date),MONTH(_X.cw_modification_date) |
2082 GROUP BY YEAR(_X.cw_modification_date),MONTH(_X.cw_modification_date) |
2069 ORDER BY 1'''), |
2083 ORDER BY 1'''), |
2070 |
2084 |
|
2085 def test_today(self): |
|
2086 for t in self._parse([("Any X WHERE X creation_date TODAY, X is Affaire", |
|
2087 '''SELECT _X.cw_eid |
|
2088 FROM cw_Affaire AS _X |
|
2089 WHERE DATE(_X.cw_creation_date)=CURRENT_DATE'''), |
|
2090 |
|
2091 ("Personne P where not P datenaiss TODAY", |
|
2092 '''SELECT _P.cw_eid |
|
2093 FROM cw_Personne AS _P |
|
2094 WHERE NOT (DATE(_P.cw_datenaiss)=CURRENT_DATE)'''), |
|
2095 ]): |
|
2096 yield t |
2071 |
2097 |
2072 |
2098 |
2073 class MySQLGenerator(PostgresSQLGeneratorTC): |
2099 class MySQLGenerator(PostgresSQLGeneratorTC): |
2074 backend = 'mysql' |
2100 backend = 'mysql' |
2075 |
2101 |
2189 '''SELECT ((EXTRACT(YEAR from _X.cw_modification_date) * 100) + EXTRACT(MONTH from _X.cw_modification_date)), COUNT(_X.cw_eid), SUM(_X.cw_ordernum), AVG((_X.cw_creation_date - _X.cw_modification_date)) |
2215 '''SELECT ((EXTRACT(YEAR from _X.cw_modification_date) * 100) + EXTRACT(MONTH from _X.cw_modification_date)), COUNT(_X.cw_eid), SUM(_X.cw_ordernum), AVG((_X.cw_creation_date - _X.cw_modification_date)) |
2190 FROM cw_CWAttribute AS _X |
2216 FROM cw_CWAttribute AS _X |
2191 GROUP BY EXTRACT(YEAR from _X.cw_modification_date),EXTRACT(MONTH from _X.cw_modification_date) |
2217 GROUP BY EXTRACT(YEAR from _X.cw_modification_date),EXTRACT(MONTH from _X.cw_modification_date) |
2192 ORDER BY 1'''), |
2218 ORDER BY 1'''), |
2193 |
2219 |
|
2220 def test_today(self): |
|
2221 for t in self._parse([("Any X WHERE X creation_date TODAY, X is Affaire", |
|
2222 '''SELECT _X.cw_eid |
|
2223 FROM cw_Affaire AS _X |
|
2224 WHERE DATE(_X.cw_creation_date)=CURRENT_DATE'''), |
|
2225 |
|
2226 ("Personne P where not P datenaiss TODAY", |
|
2227 '''SELECT _P.cw_eid |
|
2228 FROM cw_Personne AS _P |
|
2229 WHERE NOT (DATE(_P.cw_datenaiss)=CURRENT_DATE)'''), |
|
2230 ]): |
|
2231 yield t |
2194 |
2232 |
2195 class removeUnsusedSolutionsTC(TestCase): |
2233 class removeUnsusedSolutionsTC(TestCase): |
2196 def test_invariant_not_varying(self): |
2234 def test_invariant_not_varying(self): |
2197 rqlst = mock_object(defined_vars={}) |
2235 rqlst = mock_object(defined_vars={}) |
2198 rqlst.defined_vars['A'] = mock_object(scope=rqlst, stinfo={}, _q_invariant=True) |
2236 rqlst.defined_vars['A'] = mock_object(scope=rqlst, stinfo={}, _q_invariant=True) |