summaryrefslogtreecommitdiffstats
path: root/test/joinA.test
diff options
context:
space:
mode:
Diffstat (limited to 'test/joinA.test')
-rw-r--r--test/joinA.test214
1 files changed, 214 insertions, 0 deletions
diff --git a/test/joinA.test b/test/joinA.test
new file mode 100644
index 0000000..d6bb678
--- /dev/null
+++ b/test/joinA.test
@@ -0,0 +1,214 @@
+# 2022-04-18
+#
+# The author disclaims copyright to this source code. In place of
+# a legal notice, here is a blessing:
+#
+# May you do good and not evil.
+# May you find forgiveness for yourself and forgive others.
+# May you share freely, never taking more than you give.
+#
+#***********************************************************************
+# This file implements regression tests for SQLite library.
+#
+# This file implements tests for RIGHT and FULL OUTER JOINs.
+
+set testdir [file dirname $argv0]
+source $testdir/tester.tcl
+
+foreach {id schema} {
+ 1 {
+ CREATE TABLE t1(a INT, b INT, c INT, d INT);
+ CREATE TABLE t2(c INT, d INT, e INT, f INT);
+ CREATE TABLE t3(a INT, b INT, e INT, f INT);
+ CREATE TABLE t4(a INT, c INT, d INT, f INT);
+ INSERT INTO t1 VALUES(11,21,31,41),(12,22,32,42),(15,25,35,45),(18,28,38,48);
+ INSERT INTO t2 VALUES(12,22,32,42),(13,23,33,43),(15,25,35,45),(17,27,37,47);
+ INSERT INTO t3 VALUES(14,24,34,44),(15,25,35,45),(16,26,36,46);
+ INSERT INTO t4 VALUES(11,21,31,41),(13,23,33,43),(16,26,36,46),(19,29,39,49);
+ }
+ 2 {
+ CREATE TABLE t1(a INTEGER PRIMARY KEY, b INT, c INT, d INT);
+ CREATE TABLE t2(c INT, d INTEGER PRIMARY KEY, e INT, f INT);
+ CREATE TABLE t3(a INT, b INT, e INTEGER PRIMARY KEY, f INT);
+ CREATE TABLE t4(a INT, c INT, d INT, f INT PRIMARY KEY) WITHOUT ROWID;
+ INSERT INTO t1 VALUES(11,21,31,41),(12,22,32,42),(15,25,35,45),(18,28,38,48);
+ INSERT INTO t2 VALUES(12,22,32,42),(13,23,33,43),(15,25,35,45),(17,27,37,47);
+ INSERT INTO t3 VALUES(14,24,34,44),(15,25,35,45),(16,26,36,46);
+ INSERT INTO t4 VALUES(11,21,31,41),(13,23,33,43),(16,26,36,46),(19,29,39,49);
+ }
+ 3 {
+ CREATE TABLE t1a(a INT, b INT, c INT, d INT);
+ CREATE TABLE t2a(c INT, d INT, e INT, f INT);
+ CREATE TABLE t3a(a INT, b INT, e INT, f INT);
+ CREATE TABLE t4a(a INT, c INT, d INT, f INT);
+ INSERT INTO t1a VALUES(11,21,31,41),(12,22,32,42);
+ INSERT INTO t2a VALUES(12,22,32,42),(13,23,33,43);
+ INSERT INTO t3a VALUES(14,24,34,44),(15,25,35,45);
+ INSERT INTO t4a VALUES(11,21,31,41),(13,23,33,43);
+ CREATE TABLE t1b(a INT, b INT, c INT, d INT);
+ CREATE TABLE t2b(c INT, d INT, e INT, f INT);
+ CREATE TABLE t3b(a INT, b INT, e INT, f INT);
+ CREATE TABLE t4b(a INT, c INT, d INT, f INT);
+ INSERT INTO t1b VALUES(15,25,35,45),(18,28,38,48);
+ INSERT INTO t2b VALUES(15,25,35,45),(17,27,37,47);
+ INSERT INTO t3b VALUES(15,25,35,45),(16,26,36,46);
+ INSERT INTO t4b VALUES(16,26,36,46),(19,29,39,49);
+ CREATE VIEW t1 AS SELECT * FROM t1a UNION SELECT * FROM t1b;
+ CREATE VIEW t2 AS SELECT * FROM t2a UNION SELECT * FROM t2b;
+ CREATE VIEW t3 AS SELECT * FROM t3a UNION SELECT * FROM t3b;
+ CREATE VIEW t4 AS SELECT * FROM t4a UNION SELECT * FROM t4b;
+ }
+} {
+ reset_db
+ db nullvalue -
+ do_execsql_test joinA-$id.setup $schema {}
+
+ # Verified by PG-14
+ do_execsql_test joinA-$id.100 {
+ SELECT a,b,c,d,t2.e,f,t3.e
+ FROM t1
+ INNER JOIN t2 USING(c,d)
+ INNER JOIN t3 USING(a,b,f)
+ INNER JOIN t4 USING(a,c,d,f)
+ ORDER BY 1 nulls first, 3 nulls first;
+ } {}
+
+
+ # Verified by PG-14
+ do_execsql_test joinA-$id.110 {
+ SELECT a,b,c,d,t2.e,f,t3.e
+ FROM t1
+ LEFT JOIN t2 USING(c,d)
+ LEFT JOIN t3 USING(a,b,f)
+ LEFT JOIN t4 USING(a,c,d,f)
+ ORDER BY 1 nulls first, 3 nulls first;
+ } {
+ 11 21 31 41 - - -
+ 12 22 32 42 - - -
+ 15 25 35 45 - - -
+ 18 28 38 48 - - -
+ }
+
+ # Verified by PG-14
+ do_execsql_test joinA-$id.120 {
+ SELECT a,b,c,d,t2.e,f,t3.e
+ FROM t1
+ LEFT JOIN t2 USING(c,d)
+ RIGHT JOIN t3 USING(a,b,f)
+ LEFT JOIN t4 USING(a,c,d,f)
+ ORDER BY 1 nulls first, 3 nulls first;
+ } {
+ 14 24 - - - 44 34
+ 15 25 - - - 45 35
+ 16 26 - - - 46 36
+ }
+
+ # Verified by PG-14
+ do_execsql_test joinA-$id.130 {
+ SELECT a,b,c,d,t2.e,f,t3.e
+ FROM t1
+ RIGHT JOIN t2 USING(c,d)
+ LEFT JOIN t3 USING(a,b,f)
+ RIGHT JOIN t4 USING(a,c,d,f)
+ ORDER BY 1 nulls first, 3 nulls first;
+ } {
+ 11 - 21 31 - 41 -
+ 13 - 23 33 - 43 -
+ 16 - 26 36 - 46 -
+ 19 - 29 39 - 49 -
+ }
+
+ # Verified by PG-14
+ do_execsql_test joinA-$id.140 {
+ SELECT a,b,c,d,t2.e,f,t3.e
+ FROM t1
+ FULL JOIN t2 USING(c,d)
+ LEFT JOIN t3 USING(a,b,f)
+ RIGHT JOIN t4 USING(a,c,d,f)
+ ORDER BY 1 nulls first, 3 nulls first;
+ } {
+ 11 - 21 31 - 41 -
+ 13 - 23 33 - 43 -
+ 16 - 26 36 - 46 -
+ 19 - 29 39 - 49 -
+ }
+
+ # Verified by PG-14
+ do_execsql_test joinA-$id.150 {
+ SELECT a,b,c,d,t2.e,f,t3.e
+ FROM t1
+ RIGHT JOIN t2 USING(c,d)
+ FULL JOIN t3 USING(a,b,f)
+ RIGHT JOIN t4 USING(a,c,d,f)
+ ORDER BY 1 nulls first, 3 nulls first;
+ } {
+ 11 - 21 31 - 41 -
+ 13 - 23 33 - 43 -
+ 16 - 26 36 - 46 -
+ 19 - 29 39 - 49 -
+ }
+
+ # Verified by PG-14
+ do_execsql_test joinA-$id.160 {
+ SELECT a,b,c,d,t2.e,f,t3.e
+ FROM t1
+ RIGHT JOIN t2 USING(c,d)
+ LEFT JOIN t3 USING(a,b,f)
+ FULL JOIN t4 USING(a,c,d,f)
+ ORDER BY 1 nulls first, 3 nulls first;
+ } {
+ - - 12 22 32 42 -
+ - - 13 23 33 43 -
+ - - 15 25 35 45 -
+ - - 17 27 37 47 -
+ 11 - 21 31 - 41 -
+ 13 - 23 33 - 43 -
+ 16 - 26 36 - 46 -
+ 19 - 29 39 - 49 -
+ }
+
+ # Verified by PG-14
+ do_execsql_test joinA-$id.170 {
+ SELECT a,b,c,d,t2.e,f,t3.e
+ FROM t1
+ LEFT JOIN t2 USING(c,d)
+ RIGHT JOIN t3 USING(a,b,f)
+ FULL JOIN t4 USING(a,c,d,f)
+ ORDER BY 1 nulls first, 3 nulls first;
+ } {
+ 11 - 21 31 - 41 -
+ 13 - 23 33 - 43 -
+ 14 24 - - - 44 34
+ 15 25 - - - 45 35
+ 16 26 - - - 46 36
+ 16 - 26 36 - 46 -
+ 19 - 29 39 - 49 -
+ }
+
+ # Verified by PG-14
+ do_execsql_test joinA-$id.200 {
+ SELECT a,b,c,d,t2.e,f,t3.e
+ FROM t1
+ FULL JOIN t2 USING(c,d)
+ FULL JOIN t3 USING(a,b,f)
+ FULL JOIN t4 USING(a,c,d,f)
+ ORDER BY 1 nulls first, 3 nulls first;
+ } {
+ - - 12 22 32 42 -
+ - - 13 23 33 43 -
+ - - 15 25 35 45 -
+ - - 17 27 37 47 -
+ 11 - 21 31 - 41 -
+ 11 21 31 41 - - -
+ 12 22 32 42 - - -
+ 13 - 23 33 - 43 -
+ 14 24 - - - 44 34
+ 15 25 - - - 45 35
+ 15 25 35 45 - - -
+ 16 26 - - - 46 36
+ 16 - 26 36 - 46 -
+ 18 28 38 48 - - -
+ 19 - 29 39 - 49 -
+ }
+}
+finish_test