1# 2012 December 19 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 name resolution in SELECT 12# statements that have parenthesized FROM clauses. 13# 14 15set testdir [file dirname $argv0] 16source $testdir/tester.tcl 17 18do_test selectD-1.1 { 19 db eval { 20 CREATE TABLE t1(a,b); INSERT INTO t1 VALUES(111,'x1'); 21 CREATE TABLE t2(a,b); INSERT INTO t2 VALUES(222,'x2'); 22 CREATE TABLE t3(a,b); INSERT INTO t3 VALUES(333,'x3'); 23 CREATE TABLE t4(a,b); INSERT INTO t4 VALUES(444,'x4'); 24 25 SELECT * 26 FROM (t1), (t2), (t3), (t4) 27 WHERE t4.a=t3.a+111 28 AND t3.a=t2.a+111 29 AND t2.a=t1.a+111; 30 } 31} {111 x1 222 x2 333 x3 444 x4} 32do_test selectD-1.2 { 33 db eval { 34 SELECT * 35 FROM t1 JOIN (t2 JOIN (t3 JOIN t4 ON t4.a=t3.a+111) 36 ON t3.a=t2.a+111) 37 ON t2.a=t1.a+111; 38 } 39} {111 x1 222 x2 333 x3 444 x4} 40do_test selectD-1.3 { 41 db eval { 42 UPDATE t2 SET a=111; 43 UPDATE t3 SET a=111; 44 UPDATE t4 SET a=111; 45 SELECT * 46 FROM t1 JOIN (t2 JOIN (t3 JOIN t4 USING(a)) USING (a)) USING (a); 47 } 48} {111 x1 x2 x3 x4} 49do_test selectD-1.4 { 50 db eval { 51 UPDATE t2 SET a=111; 52 UPDATE t3 SET a=111; 53 UPDATE t4 SET a=111; 54 SELECT * 55 FROM t1 LEFT JOIN (t2 LEFT JOIN (t3 LEFT JOIN t4 USING(a)) 56 USING (a)) 57 USING (a); 58 } 59} {111 x1 x2 x3 x4} 60do_test selectD-1.5 { 61 db eval { 62 UPDATE t3 SET a=222; 63 UPDATE t4 SET a=222; 64 SELECT * 65 FROM (t1 LEFT JOIN t2 USING(a)) JOIN (t3 LEFT JOIN t4 USING(a)) 66 ON t1.a=t3.a-111; 67 } 68} {111 x1 x2 222 x3 x4} 69do_test selectD-1.6 { 70 db eval { 71 UPDATE t4 SET a=333; 72 SELECT * 73 FROM (t1 LEFT JOIN t2 USING(a)) JOIN (t3 LEFT JOIN t4 USING(a)) 74 ON t1.a=t3.a-111; 75 } 76} {111 x1 x2 222 x3 {}} 77 78finish_test 79