gitlab.com/CoiaPrant/sqlite3@v1.19.1/testdata/tcl/joinA.test (about) 1 # 2022-04-18 2 # 3 # The author disclaims copyright to this source code. In place of 4 # a legal notice, here is a blessing: 5 # 6 # May you do good and not evil. 7 # May you find forgiveness for yourself and forgive others. 8 # May you share freely, never taking more than you give. 9 # 10 #*********************************************************************** 11 # This file implements regression tests for SQLite library. 12 # 13 # This file implements tests for RIGHT and FULL OUTER JOINs. 14 15 set testdir [file dirname $argv0] 16 source $testdir/tester.tcl 17 18 foreach {id schema} { 19 1 { 20 CREATE TABLE t1(a INT, b INT, c INT, d INT); 21 CREATE TABLE t2(c INT, d INT, e INT, f INT); 22 CREATE TABLE t3(a INT, b INT, e INT, f INT); 23 CREATE TABLE t4(a INT, c INT, d INT, f INT); 24 INSERT INTO t1 VALUES(11,21,31,41),(12,22,32,42),(15,25,35,45),(18,28,38,48); 25 INSERT INTO t2 VALUES(12,22,32,42),(13,23,33,43),(15,25,35,45),(17,27,37,47); 26 INSERT INTO t3 VALUES(14,24,34,44),(15,25,35,45),(16,26,36,46); 27 INSERT INTO t4 VALUES(11,21,31,41),(13,23,33,43),(16,26,36,46),(19,29,39,49); 28 } 29 2 { 30 CREATE TABLE t1(a INTEGER PRIMARY KEY, b INT, c INT, d INT); 31 CREATE TABLE t2(c INT, d INTEGER PRIMARY KEY, e INT, f INT); 32 CREATE TABLE t3(a INT, b INT, e INTEGER PRIMARY KEY, f INT); 33 CREATE TABLE t4(a INT, c INT, d INT, f INT PRIMARY KEY) WITHOUT ROWID; 34 INSERT INTO t1 VALUES(11,21,31,41),(12,22,32,42),(15,25,35,45),(18,28,38,48); 35 INSERT INTO t2 VALUES(12,22,32,42),(13,23,33,43),(15,25,35,45),(17,27,37,47); 36 INSERT INTO t3 VALUES(14,24,34,44),(15,25,35,45),(16,26,36,46); 37 INSERT INTO t4 VALUES(11,21,31,41),(13,23,33,43),(16,26,36,46),(19,29,39,49); 38 } 39 3 { 40 CREATE TABLE t1a(a INT, b INT, c INT, d INT); 41 CREATE TABLE t2a(c INT, d INT, e INT, f INT); 42 CREATE TABLE t3a(a INT, b INT, e INT, f INT); 43 CREATE TABLE t4a(a INT, c INT, d INT, f INT); 44 INSERT INTO t1a VALUES(11,21,31,41),(12,22,32,42); 45 INSERT INTO t2a VALUES(12,22,32,42),(13,23,33,43); 46 INSERT INTO t3a VALUES(14,24,34,44),(15,25,35,45); 47 INSERT INTO t4a VALUES(11,21,31,41),(13,23,33,43); 48 CREATE TABLE t1b(a INT, b INT, c INT, d INT); 49 CREATE TABLE t2b(c INT, d INT, e INT, f INT); 50 CREATE TABLE t3b(a INT, b INT, e INT, f INT); 51 CREATE TABLE t4b(a INT, c INT, d INT, f INT); 52 INSERT INTO t1b VALUES(15,25,35,45),(18,28,38,48); 53 INSERT INTO t2b VALUES(15,25,35,45),(17,27,37,47); 54 INSERT INTO t3b VALUES(15,25,35,45),(16,26,36,46); 55 INSERT INTO t4b VALUES(16,26,36,46),(19,29,39,49); 56 CREATE VIEW t1 AS SELECT * FROM t1a UNION SELECT * FROM t1b; 57 CREATE VIEW t2 AS SELECT * FROM t2a UNION SELECT * FROM t2b; 58 CREATE VIEW t3 AS SELECT * FROM t3a UNION SELECT * FROM t3b; 59 CREATE VIEW t4 AS SELECT * FROM t4a UNION SELECT * FROM t4b; 60 } 61 } { 62 reset_db 63 db nullvalue - 64 do_execsql_test joinA-$id.setup $schema {} 65 66 # Verified by PG-14 67 do_execsql_test joinA-$id.100 { 68 SELECT a,b,c,d,t2.e,f,t3.e 69 FROM t1 70 INNER JOIN t2 USING(c,d) 71 INNER JOIN t3 USING(a,b,f) 72 INNER JOIN t4 USING(a,c,d,f) 73 ORDER BY 1 nulls first, 3 nulls first; 74 } {} 75 76 77 # Verified by PG-14 78 do_execsql_test joinA-$id.110 { 79 SELECT a,b,c,d,t2.e,f,t3.e 80 FROM t1 81 LEFT JOIN t2 USING(c,d) 82 LEFT JOIN t3 USING(a,b,f) 83 LEFT JOIN t4 USING(a,c,d,f) 84 ORDER BY 1 nulls first, 3 nulls first; 85 } { 86 11 21 31 41 - - - 87 12 22 32 42 - - - 88 15 25 35 45 - - - 89 18 28 38 48 - - - 90 } 91 92 # Verified by PG-14 93 do_execsql_test joinA-$id.120 { 94 SELECT a,b,c,d,t2.e,f,t3.e 95 FROM t1 96 LEFT JOIN t2 USING(c,d) 97 RIGHT JOIN t3 USING(a,b,f) 98 LEFT JOIN t4 USING(a,c,d,f) 99 ORDER BY 1 nulls first, 3 nulls first; 100 } { 101 14 24 - - - 44 34 102 15 25 - - - 45 35 103 16 26 - - - 46 36 104 } 105 106 # Verified by PG-14 107 do_execsql_test joinA-$id.130 { 108 SELECT a,b,c,d,t2.e,f,t3.e 109 FROM t1 110 RIGHT JOIN t2 USING(c,d) 111 LEFT JOIN t3 USING(a,b,f) 112 RIGHT JOIN t4 USING(a,c,d,f) 113 ORDER BY 1 nulls first, 3 nulls first; 114 } { 115 11 - 21 31 - 41 - 116 13 - 23 33 - 43 - 117 16 - 26 36 - 46 - 118 19 - 29 39 - 49 - 119 } 120 121 # Verified by PG-14 122 do_execsql_test joinA-$id.140 { 123 SELECT a,b,c,d,t2.e,f,t3.e 124 FROM t1 125 FULL JOIN t2 USING(c,d) 126 LEFT JOIN t3 USING(a,b,f) 127 RIGHT JOIN t4 USING(a,c,d,f) 128 ORDER BY 1 nulls first, 3 nulls first; 129 } { 130 11 - 21 31 - 41 - 131 13 - 23 33 - 43 - 132 16 - 26 36 - 46 - 133 19 - 29 39 - 49 - 134 } 135 136 # Verified by PG-14 137 do_execsql_test joinA-$id.150 { 138 SELECT a,b,c,d,t2.e,f,t3.e 139 FROM t1 140 RIGHT JOIN t2 USING(c,d) 141 FULL JOIN t3 USING(a,b,f) 142 RIGHT JOIN t4 USING(a,c,d,f) 143 ORDER BY 1 nulls first, 3 nulls first; 144 } { 145 11 - 21 31 - 41 - 146 13 - 23 33 - 43 - 147 16 - 26 36 - 46 - 148 19 - 29 39 - 49 - 149 } 150 151 # Verified by PG-14 152 do_execsql_test joinA-$id.160 { 153 SELECT a,b,c,d,t2.e,f,t3.e 154 FROM t1 155 RIGHT JOIN t2 USING(c,d) 156 LEFT JOIN t3 USING(a,b,f) 157 FULL JOIN t4 USING(a,c,d,f) 158 ORDER BY 1 nulls first, 3 nulls first; 159 } { 160 - - 12 22 32 42 - 161 - - 13 23 33 43 - 162 - - 15 25 35 45 - 163 - - 17 27 37 47 - 164 11 - 21 31 - 41 - 165 13 - 23 33 - 43 - 166 16 - 26 36 - 46 - 167 19 - 29 39 - 49 - 168 } 169 170 # Verified by PG-14 171 do_execsql_test joinA-$id.170 { 172 SELECT a,b,c,d,t2.e,f,t3.e 173 FROM t1 174 LEFT JOIN t2 USING(c,d) 175 RIGHT JOIN t3 USING(a,b,f) 176 FULL JOIN t4 USING(a,c,d,f) 177 ORDER BY 1 nulls first, 3 nulls first; 178 } { 179 11 - 21 31 - 41 - 180 13 - 23 33 - 43 - 181 14 24 - - - 44 34 182 15 25 - - - 45 35 183 16 26 - - - 46 36 184 16 - 26 36 - 46 - 185 19 - 29 39 - 49 - 186 } 187 188 # Verified by PG-14 189 do_execsql_test joinA-$id.200 { 190 SELECT a,b,c,d,t2.e,f,t3.e 191 FROM t1 192 FULL JOIN t2 USING(c,d) 193 FULL JOIN t3 USING(a,b,f) 194 FULL JOIN t4 USING(a,c,d,f) 195 ORDER BY 1 nulls first, 3 nulls first; 196 } { 197 - - 12 22 32 42 - 198 - - 13 23 33 43 - 199 - - 15 25 35 45 - 200 - - 17 27 37 47 - 201 11 - 21 31 - 41 - 202 11 21 31 41 - - - 203 12 22 32 42 - - - 204 13 - 23 33 - 43 - 205 14 24 - - - 44 34 206 15 25 - - - 45 35 207 15 25 35 45 - - - 208 16 26 - - - 46 36 209 16 - 26 36 - 46 - 210 18 28 38 48 - - - 211 19 - 29 39 - 49 - 212 } 213 } 214 finish_test