Changeset: 2ee5ae64db78 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2ee5ae64db78
Added Files:
        sql/test/subquery/Tests/all.sql
        sql/test/subquery/Tests/any.sql
        sql/test/subquery/Tests/any_all.sql
        sql/test/subquery/Tests/scalar.sql
Branch: default
Log Message:

add missing files


diffs (243 lines):

diff --git a/sql/test/subquery/Tests/all.sql b/sql/test/subquery/Tests/all.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/subquery/Tests/all.sql
@@ -0,0 +1,79 @@
+CREATE TABLE integers(i INTEGER);
+INSERT INTO integers VALUES (1), (2), (3), (NULL);
+
+SELECT i FROM integers WHERE i >= ALL(SELECT i FROM integers); -- empty
+SELECT i, i >= ALL(SELECT i FROM integers) FROM integers ORDER BY i;
+       -- NULL, NULL
+       -- 1, false
+       -- 2, false
+       -- 3, NULL
+SELECT i FROM integers WHERE i >= ALL(SELECT i FROM integers WHERE i IS NOT 
NULL); -- 3
+SELECT i, i >= ALL(SELECT i FROM integers WHERE i IS NOT NULL) FROM integers 
ORDER BY i;
+       -- NULL, NULL
+       -- 1, false
+       -- 2, false
+       -- 3, true
+SELECT i FROM integers WHERE i >= ALL(SELECT i FROM integers WHERE i IS NOT 
NULL); -- 3
+SELECT i FROM integers WHERE i > ALL(SELECT MIN(i) FROM integers); -- 2, 3
+SELECT i FROM integers WHERE i < ALL(SELECT MAX(i) FROM integers); -- 1, 2
+SELECT i FROM integers WHERE i <= ALL(SELECT i FROM integers); -- empty
+SELECT i FROM integers WHERE i <= ALL(SELECT i FROM integers WHERE i IS NOT 
NULL); -- 1
+SELECT i FROM integers WHERE i = ALL(SELECT i FROM integers WHERE i=1); -- 1
+SELECT i FROM integers WHERE i <> ALL(SELECT i FROM integers WHERE i=1); -- 2, 
3
+SELECT i FROM integers WHERE i = ALL(SELECT i FROM integers WHERE i IS NOT 
NULL); -- empty
+SELECT i FROM integers WHERE i <> ALL(SELECT i FROM integers WHERE i IS NOT 
NULL); -- empty
+-- zero results always results in TRUE for ALL, even if "i" is NULL
+SELECT i FROM integers WHERE i <> ALL(SELECT i FROM integers WHERE i>10) ORDER 
BY i; -- null, 1, 2, 3
+SELECT i, i <> ALL(SELECT i FROM integers WHERE i>10) FROM integers ORDER BY 
i; 
+       -- null, true
+       -- 1, true
+       -- 2, true
+       -- 3, true
+-- zero results always results in FALSE for ANY
+SELECT i, i > ANY(SELECT i FROM integers WHERE i>10) FROM integers ORDER BY i; 
 
+       -- null, false
+       -- 1, false
+       -- 2, false
+       -- 3, false
+SELECT i, i = ANY(SELECT i FROM integers WHERE i>10) FROM integers ORDER BY i;
+       -- null, false
+       -- 1, false
+       -- 2, false
+       -- 3, false
+SELECT i, i >= ANY(SELECT i FROM integers WHERE i>10) FROM integers ORDER BY i;
+       -- null, false
+       -- 1, false
+       -- 2, false
+       -- 3, false
+SELECT i, i <= ANY(SELECT i FROM integers WHERE i>10) FROM integers ORDER BY i;
+       -- null, false
+       -- 1, false
+       -- 2, false
+       -- 3, false
+SELECT i, i < ANY(SELECT i FROM integers WHERE i>10) FROM integers ORDER BY i;
+       -- null, false
+       -- 1, false
+       -- 2, false
+       -- 3, false
+SELECT i, i <> ANY(SELECT i FROM integers WHERE i>10) FROM integers ORDER BY i;
+       -- null, false
+       -- 1, false
+       -- 2, false
+       -- 3, false
+
+-- subqueries in GROUP BY clause
+SELECT i >= ALL(SELECT i FROM integers WHERE i IS NOT NULL) AS k, SUM(i) FROM 
integers GROUP BY k ORDER BY k;
+       -- null, null
+       -- false, 3
+       -- true, 3
+SELECT SUM(i) FROM integers GROUP BY (i >= ALL(SELECT i FROM integers WHERE i 
IS NOT NULL)) ORDER BY 1; -- NULL, 3, 3
+SELECT i >= ALL(SELECT MIN(i) FROM integers WHERE i IS NOT NULL) AS k, SUM(i) 
FROM integers GROUP BY k ORDER BY k; 
+       -- NULL, NULL
+       -- true, 6
+SELECT i, SUM(CASE WHEN (i >= ALL(SELECT i FROM integers WHERE i=2)) THEN 1 
ELSE 0 END) FROM integers GROUP BY i ORDER BY i;
+       -- null, 0
+       -- 1, 0
+       -- 2, 1
+       -- 3, 1
+
+DROP TABLE integers;
diff --git a/sql/test/subquery/Tests/any.sql b/sql/test/subquery/Tests/any.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/subquery/Tests/any.sql
@@ -0,0 +1,69 @@
+CREATE TABLE integers(i INTEGER);
+INSERT INTO integers VALUES (1), (2), (3), (NULL);
+
+SELECT i FROM integers WHERE i <= ANY(SELECT i FROM integers); -- single 
column 1,2,3
+SELECT i FROM integers WHERE i > ANY(SELECT i FROM integers); -- single column 
2,3
+
+SELECT i, i > ANY(SELECT i FROM integers) FROM integers ORDER BY i;
+       -- NULL, NULL
+       -- 1, NULL
+       -- 2, true
+       -- 3, true
+SELECT i, i > ANY(SELECT i FROM integers WHERE i IS NOT NULL) FROM integers 
ORDER BY i;
+       -- NULL, NULL
+       -- 1, false
+       -- 2, true
+       -- 3, true
+SELECT i, NULL > ANY(SELECT i FROM integers) FROM integers ORDER BY i;
+       -- NULL, NULL
+       -- 1, NULL
+       -- 2, NULL
+       -- 3, NULL
+SELECT i, NULL > ANY(SELECT i FROM integers WHERE i IS NOT NULL) FROM integers 
ORDER BY i;
+       -- NULL, NULL
+       -- 1, NULL
+       -- 2, NULL
+       -- 3, NULL
+SELECT i FROM integers WHERE i = ANY(SELECT i FROM integers); -- single column 
1, 2, 3
+SELECT i, i = ANY(SELECT i FROM integers WHERE i>2) FROM integers ORDER BY i;
+       -- NULL, NULL
+       -- 1, false
+       -- 2, false
+       -- 3, true
+SELECT i, i = ANY(SELECT i FROM integers WHERE i>2 OR i IS NULL) FROM integers 
ORDER BY i;
+       -- NULL, NULL
+       -- 1, NULL
+       -- 2, NULL
+       -- 3, true
+SELECT i, i <> ANY(SELECT i FROM integers WHERE i>2) FROM integers ORDER BY i;
+       -- NULL, NULL
+       -- 1, true
+       -- 2, true
+       -- 3, false
+SELECT i, i <> ANY(SELECT i FROM integers WHERE i>2 OR i IS NULL) FROM 
integers ORDER BY i;
+       -- NULL, NULL
+       -- 1, true
+       -- 2, true
+       -- 3, NULL
+SELECT i, i = ANY(SELECT i1.i FROM integers i1, integers i2, integers i3, 
integers i4, integers i5, integers i6 WHERE i1.i IS NOT NULL) FROM integers 
ORDER BY i;
+       -- NULL, NULL
+       -- 1, true
+       -- 2, true
+       -- 3, true
+SELECT i, i = ANY(SELECT i1.i FROM integers i1, integers i2, integers i3, 
integers i4, integers i5, integers i6 WHERE i1.i IS NOT NULL AND i1.i <> 2) 
FROM integers ORDER BY i;
+       -- NULL, NULL
+       -- 1, true
+       -- 2, false
+       -- 3, true
+SELECT i, i >= ANY(SELECT i1.i FROM integers i1, integers i2, integers i3, 
integers i4, integers i5, integers i6 WHERE i1.i IS NOT NULL) FROM integers 
ORDER BY i;
+       -- NULL, NULL
+       -- 1, true
+       -- 2, true
+       -- 3, true
+SELECT i, i >= ANY(SELECT i1.i FROM integers i1, integers i2, integers i3, 
integers i4, integers i5, integers i6 WHERE i1.i IS NOT NULL AND i1.i <> 1 
LIMIT 1) FROM integers ORDER BY i; -- parse error
+       -- NULL, NULL
+       -- 1, false
+       -- 2, true
+       -- 3, true
+
+drop table integers;
diff --git a/sql/test/subquery/Tests/any_all.sql 
b/sql/test/subquery/Tests/any_all.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/subquery/Tests/any_all.sql
@@ -0,0 +1,41 @@
+
+SELECT 1 = ANY(SELECT 1); -- true
+SELECT 1 = ANY(SELECT NULL); -- NULL
+SELECT 1 = ANY(SELECT 2); -- false
+SELECT NULL = ANY(SELECT 2); -- NULL
+
+SELECT 1 = ALL(SELECT 1); -- true
+SELECT 1 = ALL(SELECT NULL); -- NULL
+SELECT 1 = ALL(SELECT 2); -- false
+SELECT NULL = ALL(SELECT 2); -- NULL
+
+CREATE TABLE integers(i INTEGER);
+INSERT INTO integers VALUES (1), (2), (3);
+
+-- ANY is like EXISTS without NULL values
+SELECT 2 > ANY(SELECT * FROM integers); -- true
+SELECT 1 > ANY(SELECT * FROM integers); -- false
+
+SELECT 4 > ALL(SELECT * FROM integers); -- true
+SELECT 1 > ALL(SELECT * FROM integers); -- false
+
+-- NULL input always results in NULL output
+SELECT NULL > ANY(SELECT * FROM integers); -- NULL
+SELECT NULL > ALL(SELECT * FROM integers); -- NULL
+
+-- now with a NULL value in the input
+INSERT INTO integers VALUES (NULL);
+
+-- ANY returns either true or NULL
+SELECT 2 > ANY(SELECT * FROM integers); -- true
+SELECT 1 > ANY(SELECT * FROM integers); -- NULL
+
+-- ALL returns either NULL or false
+SELECT 4 > ALL(SELECT * FROM integers); -- NULL
+SELECT 1 > ALL(SELECT * FROM integers); -- false
+
+-- NULL input always results in NULL
+SELECT NULL > ANY(SELECT * FROM integers); -- NULL
+SELECT NULL > ALL(SELECT * FROM integers); -- NULL
+
+DROP TABLE integers;
diff --git a/sql/test/subquery/Tests/scalar.sql 
b/sql/test/subquery/Tests/scalar.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/subquery/Tests/scalar.sql
@@ -0,0 +1,34 @@
+SELECT 1+(SELECT 1); -- 2
+SELECT 1=(SELECT 1); -- true
+SELECT 1<>(SELECT 1); -- false
+SELECT 1=(SELECT NULL); -- NULL
+SELECT NULL=(SELECT 1); -- NULL
+
+SELECT EXISTS(SELECT 1); -- true
+
+CREATE TABLE integers(i INTEGER);
+INSERT INTO integers VALUES (1), (2), (3), (NULL);
+
+SELECT EXISTS(SELECT 1) FROM integers; -- true, true, true, true
+SELECT EXISTS(SELECT * FROM integers); -- true
+SELECT EXISTS(SELECT * FROM integers WHERE i IS NULL); -- true
+DROP TABLE integers;
+
+SELECT 1 IN (SELECT 1); -- true
+SELECT NULL IN (SELECT 1); -- NULL
+SELECT 1 IN (SELECT NULL); -- NULL
+SELECT 1 IN (SELECT 2); -- false
+
+CREATE TABLE integers(i INTEGER);
+INSERT INTO integers VALUES (1), (2), (3);
+
+SELECT 4 IN (SELECT * FROM integers); -- false
+SELECT 1 IN (SELECT * FROM integers); -- true
+SELECT 1 IN (SELECT * FROM integers) FROM integers; -- true, true, true
+INSERT INTO integers VALUES (NULL); 
+SELECT 4 IN (SELECT * FROM integers); -- NULL
+SELECT 1 IN (SELECT * FROM integers); -- true
+SELECT * FROM integers WHERE (4 IN (SELECT * FROM integers)) IS NULL ORDER BY 
1; -- NULL, 1, 2, 3
+SELECT * FROM integers WHERE (i IN (SELECT * FROM integers)) IS NULL ORDER BY 
1; -- NULL
+
+DROP TABLE integers;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to