1b19a2bc6Sdrh# 2001 September 15 23aadb2e6Sdrh# 3b19a2bc6Sdrh# The author disclaims copyright to this source code. In place of 4b19a2bc6Sdrh# a legal notice, here is a blessing: 53aadb2e6Sdrh# 6b19a2bc6Sdrh# May you do good and not evil. 7b19a2bc6Sdrh# May you find forgiveness for yourself and forgive others. 8b19a2bc6Sdrh# May you share freely, never taking more than you give. 93aadb2e6Sdrh# 103aadb2e6Sdrh#*********************************************************************** 113aadb2e6Sdrh# This file implements regression tests for SQLite library. The 123aadb2e6Sdrh# focus of this file is testing the SELECT statement. 133aadb2e6Sdrh# 1433e619fcSdrh# $Id: select1.test,v 1.70 2009/05/28 01:00:56 drh Exp $ 153aadb2e6Sdrh 163aadb2e6Sdrhset testdir [file dirname $argv0] 173aadb2e6Sdrhsource $testdir/tester.tcl 183aadb2e6Sdrh 193aadb2e6Sdrh# Try to select on a non-existant table. 203aadb2e6Sdrh# 212282792aSdrhdo_test select1-1.1 { 223aadb2e6Sdrh set v [catch {execsql {SELECT * FROM test1}} msg] 233aadb2e6Sdrh lappend v $msg 243aadb2e6Sdrh} {1 {no such table: test1}} 253aadb2e6Sdrh 2613a68c3fSdanielk1977 273aadb2e6Sdrhexecsql {CREATE TABLE test1(f1 int, f2 int)} 283aadb2e6Sdrh 292282792aSdrhdo_test select1-1.2 { 303aadb2e6Sdrh set v [catch {execsql {SELECT * FROM test1, test2}} msg] 313aadb2e6Sdrh lappend v $msg 323aadb2e6Sdrh} {1 {no such table: test2}} 332282792aSdrhdo_test select1-1.3 { 343aadb2e6Sdrh set v [catch {execsql {SELECT * FROM test2, test1}} msg] 353aadb2e6Sdrh lappend v $msg 363aadb2e6Sdrh} {1 {no such table: test2}} 373aadb2e6Sdrh 383aadb2e6Sdrhexecsql {INSERT INTO test1(f1,f2) VALUES(11,22)} 393aadb2e6Sdrh 403aadb2e6Sdrh 41967e8b73Sdrh# Make sure the columns are extracted correctly. 423aadb2e6Sdrh# 432282792aSdrhdo_test select1-1.4 { 443aadb2e6Sdrh execsql {SELECT f1 FROM test1} 453aadb2e6Sdrh} {11} 462282792aSdrhdo_test select1-1.5 { 473aadb2e6Sdrh execsql {SELECT f2 FROM test1} 483aadb2e6Sdrh} {22} 492282792aSdrhdo_test select1-1.6 { 503aadb2e6Sdrh execsql {SELECT f2, f1 FROM test1} 513aadb2e6Sdrh} {22 11} 522282792aSdrhdo_test select1-1.7 { 533aadb2e6Sdrh execsql {SELECT f1, f2 FROM test1} 543aadb2e6Sdrh} {11 22} 552282792aSdrhdo_test select1-1.8 { 563aadb2e6Sdrh execsql {SELECT * FROM test1} 573aadb2e6Sdrh} {11 22} 587c917d19Sdrhdo_test select1-1.8.1 { 597c917d19Sdrh execsql {SELECT *, * FROM test1} 607c917d19Sdrh} {11 22 11 22} 617c917d19Sdrhdo_test select1-1.8.2 { 627c917d19Sdrh execsql {SELECT *, min(f1,f2), max(f1,f2) FROM test1} 637c917d19Sdrh} {11 22 11 22} 647c917d19Sdrhdo_test select1-1.8.3 { 657c917d19Sdrh execsql {SELECT 'one', *, 'two', * FROM test1} 667c917d19Sdrh} {one 11 22 two 11 22} 673aadb2e6Sdrh 683aadb2e6Sdrhexecsql {CREATE TABLE test2(r1 real, r2 real)} 693aadb2e6Sdrhexecsql {INSERT INTO test2(r1,r2) VALUES(1.1,2.2)} 703aadb2e6Sdrh 712282792aSdrhdo_test select1-1.9 { 723aadb2e6Sdrh execsql {SELECT * FROM test1, test2} 733aadb2e6Sdrh} {11 22 1.1 2.2} 747c917d19Sdrhdo_test select1-1.9.1 { 757c917d19Sdrh execsql {SELECT *, 'hi' FROM test1, test2} 767c917d19Sdrh} {11 22 1.1 2.2 hi} 777c917d19Sdrhdo_test select1-1.9.2 { 787c917d19Sdrh execsql {SELECT 'one', *, 'two', * FROM test1, test2} 797c917d19Sdrh} {one 11 22 1.1 2.2 two 11 22 1.1 2.2} 802282792aSdrhdo_test select1-1.10 { 813aadb2e6Sdrh execsql {SELECT test1.f1, test2.r1 FROM test1, test2} 823aadb2e6Sdrh} {11 1.1} 832282792aSdrhdo_test select1-1.11 { 843aadb2e6Sdrh execsql {SELECT test1.f1, test2.r1 FROM test2, test1} 853aadb2e6Sdrh} {11 1.1} 8617e24df6Sdrhdo_test select1-1.11.1 { 8717e24df6Sdrh execsql {SELECT * FROM test2, test1} 8817e24df6Sdrh} {1.1 2.2 11 22} 8917e24df6Sdrhdo_test select1-1.11.2 { 9017e24df6Sdrh execsql {SELECT * FROM test1 AS a, test1 AS b} 9117e24df6Sdrh} {11 22 11 22} 922282792aSdrhdo_test select1-1.12 { 933aadb2e6Sdrh execsql {SELECT max(test1.f1,test2.r1), min(test1.f2,test2.r2) 943aadb2e6Sdrh FROM test2, test1} 953aadb2e6Sdrh} {11 2.2} 962282792aSdrhdo_test select1-1.13 { 973aadb2e6Sdrh execsql {SELECT min(test1.f1,test2.r1), max(test1.f2,test2.r2) 983aadb2e6Sdrh FROM test1, test2} 993aadb2e6Sdrh} {1.1 22} 1003aadb2e6Sdrh 101832508b7Sdrhset long {This is a string that is too big to fit inside a NBFS buffer} 102832508b7Sdrhdo_test select1-2.0 { 103832508b7Sdrh execsql " 104832508b7Sdrh DROP TABLE test2; 105832508b7Sdrh DELETE FROM test1; 106832508b7Sdrh INSERT INTO test1 VALUES(11,22); 107832508b7Sdrh INSERT INTO test1 VALUES(33,44); 108832508b7Sdrh CREATE TABLE t3(a,b); 109832508b7Sdrh INSERT INTO t3 VALUES('abc',NULL); 110832508b7Sdrh INSERT INTO t3 VALUES(NULL,'xyz'); 111832508b7Sdrh INSERT INTO t3 SELECT * FROM test1; 112832508b7Sdrh CREATE TABLE t4(a,b); 113832508b7Sdrh INSERT INTO t4 VALUES(NULL,'$long'); 114832508b7Sdrh SELECT * FROM t3; 115832508b7Sdrh " 116832508b7Sdrh} {abc {} {} xyz 11 22 33 44} 1173aadb2e6Sdrh 1183aadb2e6Sdrh# Error messges from sqliteExprCheck 1193aadb2e6Sdrh# 1202282792aSdrhdo_test select1-2.1 { 1213aadb2e6Sdrh set v [catch {execsql {SELECT count(f1,f2) FROM test1}} msg] 1223aadb2e6Sdrh lappend v $msg 12389425d5eSdrh} {1 {wrong number of arguments to function count()}} 1242282792aSdrhdo_test select1-2.2 { 1253aadb2e6Sdrh set v [catch {execsql {SELECT count(f1) FROM test1}} msg] 1263aadb2e6Sdrh lappend v $msg 1273aadb2e6Sdrh} {0 2} 1282282792aSdrhdo_test select1-2.3 { 1293aadb2e6Sdrh set v [catch {execsql {SELECT Count() FROM test1}} msg] 1303aadb2e6Sdrh lappend v $msg 1313aadb2e6Sdrh} {0 2} 1322282792aSdrhdo_test select1-2.4 { 1333aadb2e6Sdrh set v [catch {execsql {SELECT COUNT(*) FROM test1}} msg] 1343aadb2e6Sdrh lappend v $msg 1353aadb2e6Sdrh} {0 2} 1362282792aSdrhdo_test select1-2.5 { 1373aadb2e6Sdrh set v [catch {execsql {SELECT COUNT(*)+1 FROM test1}} msg] 1383aadb2e6Sdrh lappend v $msg 1392282792aSdrh} {0 3} 140832508b7Sdrhdo_test select1-2.5.1 { 141832508b7Sdrh execsql {SELECT count(*),count(a),count(b) FROM t3} 142832508b7Sdrh} {4 3 3} 143832508b7Sdrhdo_test select1-2.5.2 { 144832508b7Sdrh execsql {SELECT count(*),count(a),count(b) FROM t4} 145832508b7Sdrh} {1 0 1} 146832508b7Sdrhdo_test select1-2.5.3 { 147832508b7Sdrh execsql {SELECT count(*),count(a),count(b) FROM t4 WHERE b=5} 148832508b7Sdrh} {0 0 0} 1492282792aSdrhdo_test select1-2.6 { 1503aadb2e6Sdrh set v [catch {execsql {SELECT min(*) FROM test1}} msg] 1513aadb2e6Sdrh lappend v $msg 152fbc99082Sdrh} {1 {wrong number of arguments to function min()}} 1532282792aSdrhdo_test select1-2.7 { 1543aadb2e6Sdrh set v [catch {execsql {SELECT Min(f1) FROM test1}} msg] 1553aadb2e6Sdrh lappend v $msg 1563aadb2e6Sdrh} {0 11} 1572282792aSdrhdo_test select1-2.8 { 1583aadb2e6Sdrh set v [catch {execsql {SELECT MIN(f1,f2) FROM test1}} msg] 1593aadb2e6Sdrh lappend v [lsort $msg] 1603aadb2e6Sdrh} {0 {11 33}} 161832508b7Sdrhdo_test select1-2.8.1 { 162832508b7Sdrh execsql {SELECT coalesce(min(a),'xyzzy') FROM t3} 1639eb516c0Sdrh} {11} 164832508b7Sdrhdo_test select1-2.8.2 { 165832508b7Sdrh execsql {SELECT min(coalesce(a,'xyzzy')) FROM t3} 166832508b7Sdrh} {11} 167832508b7Sdrhdo_test select1-2.8.3 { 168832508b7Sdrh execsql {SELECT min(b), min(b) FROM t4} 169832508b7Sdrh} [list $long $long] 1702282792aSdrhdo_test select1-2.9 { 1713aadb2e6Sdrh set v [catch {execsql {SELECT MAX(*) FROM test1}} msg] 1723aadb2e6Sdrh lappend v $msg 173fbc99082Sdrh} {1 {wrong number of arguments to function MAX()}} 1742282792aSdrhdo_test select1-2.10 { 1753aadb2e6Sdrh set v [catch {execsql {SELECT Max(f1) FROM test1}} msg] 1763aadb2e6Sdrh lappend v $msg 1773aadb2e6Sdrh} {0 33} 1782282792aSdrhdo_test select1-2.11 { 1793aadb2e6Sdrh set v [catch {execsql {SELECT max(f1,f2) FROM test1}} msg] 1803aadb2e6Sdrh lappend v [lsort $msg] 1813aadb2e6Sdrh} {0 {22 44}} 1822282792aSdrhdo_test select1-2.12 { 1833aadb2e6Sdrh set v [catch {execsql {SELECT MAX(f1,f2)+1 FROM test1}} msg] 1843aadb2e6Sdrh lappend v [lsort $msg] 1853aadb2e6Sdrh} {0 {23 45}} 1862282792aSdrhdo_test select1-2.13 { 1873aadb2e6Sdrh set v [catch {execsql {SELECT MAX(f1)+1 FROM test1}} msg] 1883aadb2e6Sdrh lappend v $msg 1892282792aSdrh} {0 34} 190832508b7Sdrhdo_test select1-2.13.1 { 191832508b7Sdrh execsql {SELECT coalesce(max(a),'xyzzy') FROM t3} 192739105c7Sdrh} {abc} 193bb113518Sdrhdo_test select1-2.13.2 { 194832508b7Sdrh execsql {SELECT max(coalesce(a,'xyzzy')) FROM t3} 195832508b7Sdrh} {xyzzy} 1962282792aSdrhdo_test select1-2.14 { 1973aadb2e6Sdrh set v [catch {execsql {SELECT SUM(*) FROM test1}} msg] 1983aadb2e6Sdrh lappend v $msg 19989425d5eSdrh} {1 {wrong number of arguments to function SUM()}} 2002282792aSdrhdo_test select1-2.15 { 2013aadb2e6Sdrh set v [catch {execsql {SELECT Sum(f1) FROM test1}} msg] 2023aadb2e6Sdrh lappend v $msg 2033d1d95e6Sdrh} {0 44} 2042282792aSdrhdo_test select1-2.16 { 2053aadb2e6Sdrh set v [catch {execsql {SELECT sum(f1,f2) FROM test1}} msg] 2063aadb2e6Sdrh lappend v $msg 20789425d5eSdrh} {1 {wrong number of arguments to function sum()}} 2082282792aSdrhdo_test select1-2.17 { 2093aadb2e6Sdrh set v [catch {execsql {SELECT SUM(f1)+1 FROM test1}} msg] 2103aadb2e6Sdrh lappend v $msg 2113d1d95e6Sdrh} {0 45} 212832508b7Sdrhdo_test select1-2.17.1 { 213832508b7Sdrh execsql {SELECT sum(a) FROM t3} 21429d72108Sdrh} {44.0} 2152282792aSdrhdo_test select1-2.18 { 2163aadb2e6Sdrh set v [catch {execsql {SELECT XYZZY(f1) FROM test1}} msg] 2173aadb2e6Sdrh lappend v $msg 2183aadb2e6Sdrh} {1 {no such function: XYZZY}} 2192282792aSdrhdo_test select1-2.19 { 2203aadb2e6Sdrh set v [catch {execsql {SELECT SUM(min(f1,f2)) FROM test1}} msg] 2213aadb2e6Sdrh lappend v $msg 2223d1d95e6Sdrh} {0 44} 2232282792aSdrhdo_test select1-2.20 { 2243aadb2e6Sdrh set v [catch {execsql {SELECT SUM(min(f1)) FROM test1}} msg] 2253aadb2e6Sdrh lappend v $msg 2268e0a2f90Sdrh} {1 {misuse of aggregate function min()}} 2273aadb2e6Sdrh 22836379e97Sdrh# Ticket #2526 22936379e97Sdrh# 23036379e97Sdrhdo_test select1-2.21 { 23136379e97Sdrh catchsql { 23236379e97Sdrh SELECT min(f1) AS m FROM test1 GROUP BY f1 HAVING max(m+5)<10 23336379e97Sdrh } 23436379e97Sdrh} {1 {misuse of aliased aggregate m}} 23536379e97Sdrhdo_test select1-2.22 { 23636379e97Sdrh catchsql { 23736379e97Sdrh SELECT coalesce(min(f1)+5,11) AS m FROM test1 23836379e97Sdrh GROUP BY f1 23936379e97Sdrh HAVING max(m+5)<10 24036379e97Sdrh } 24136379e97Sdrh} {1 {misuse of aliased aggregate m}} 24236379e97Sdrhdo_test select1-2.23 { 24336379e97Sdrh execsql { 24436379e97Sdrh CREATE TABLE tkt2526(a,b,c PRIMARY KEY); 24536379e97Sdrh INSERT INTO tkt2526 VALUES('x','y',NULL); 24636379e97Sdrh INSERT INTO tkt2526 VALUES('x','z',NULL); 24736379e97Sdrh } 24836379e97Sdrh catchsql { 24936379e97Sdrh SELECT count(a) AS cn FROM tkt2526 GROUP BY a HAVING cn<max(cn) 25036379e97Sdrh } 25136379e97Sdrh} {1 {misuse of aliased aggregate cn}} 25236379e97Sdrh 2533aadb2e6Sdrh# WHERE clause expressions 2543aadb2e6Sdrh# 2552282792aSdrhdo_test select1-3.1 { 2563aadb2e6Sdrh set v [catch {execsql {SELECT f1 FROM test1 WHERE f1<11}} msg] 2573aadb2e6Sdrh lappend v $msg 2583aadb2e6Sdrh} {0 {}} 2592282792aSdrhdo_test select1-3.2 { 2603aadb2e6Sdrh set v [catch {execsql {SELECT f1 FROM test1 WHERE f1<=11}} msg] 2613aadb2e6Sdrh lappend v $msg 2623aadb2e6Sdrh} {0 11} 2632282792aSdrhdo_test select1-3.3 { 2643aadb2e6Sdrh set v [catch {execsql {SELECT f1 FROM test1 WHERE f1=11}} msg] 2653aadb2e6Sdrh lappend v $msg 2663aadb2e6Sdrh} {0 11} 2672282792aSdrhdo_test select1-3.4 { 2683aadb2e6Sdrh set v [catch {execsql {SELECT f1 FROM test1 WHERE f1>=11}} msg] 2693aadb2e6Sdrh lappend v [lsort $msg] 2703aadb2e6Sdrh} {0 {11 33}} 2712282792aSdrhdo_test select1-3.5 { 2723aadb2e6Sdrh set v [catch {execsql {SELECT f1 FROM test1 WHERE f1>11}} msg] 2733aadb2e6Sdrh lappend v [lsort $msg] 2743aadb2e6Sdrh} {0 33} 2752282792aSdrhdo_test select1-3.6 { 2763aadb2e6Sdrh set v [catch {execsql {SELECT f1 FROM test1 WHERE f1!=11}} msg] 2773aadb2e6Sdrh lappend v [lsort $msg] 2783aadb2e6Sdrh} {0 33} 2792282792aSdrhdo_test select1-3.7 { 2803aadb2e6Sdrh set v [catch {execsql {SELECT f1 FROM test1 WHERE min(f1,f2)!=11}} msg] 2813aadb2e6Sdrh lappend v [lsort $msg] 2823aadb2e6Sdrh} {0 33} 2832282792aSdrhdo_test select1-3.8 { 2843aadb2e6Sdrh set v [catch {execsql {SELECT f1 FROM test1 WHERE max(f1,f2)!=11}} msg] 2853aadb2e6Sdrh lappend v [lsort $msg] 2863aadb2e6Sdrh} {0 {11 33}} 2872282792aSdrhdo_test select1-3.9 { 2883aadb2e6Sdrh set v [catch {execsql {SELECT f1 FROM test1 WHERE count(f1,f2)!=11}} msg] 2893aadb2e6Sdrh lappend v $msg 29089425d5eSdrh} {1 {wrong number of arguments to function count()}} 2913aadb2e6Sdrh 2923aadb2e6Sdrh# ORDER BY expressions 2933aadb2e6Sdrh# 2942282792aSdrhdo_test select1-4.1 { 2953aadb2e6Sdrh set v [catch {execsql {SELECT f1 FROM test1 ORDER BY f1}} msg] 2963aadb2e6Sdrh lappend v $msg 2973aadb2e6Sdrh} {0 {11 33}} 2982282792aSdrhdo_test select1-4.2 { 2993aadb2e6Sdrh set v [catch {execsql {SELECT f1 FROM test1 ORDER BY -f1}} msg] 3003aadb2e6Sdrh lappend v $msg 3013aadb2e6Sdrh} {0 {33 11}} 3022282792aSdrhdo_test select1-4.3 { 3033aadb2e6Sdrh set v [catch {execsql {SELECT f1 FROM test1 ORDER BY min(f1,f2)}} msg] 3043aadb2e6Sdrh lappend v $msg 3053aadb2e6Sdrh} {0 {11 33}} 3062282792aSdrhdo_test select1-4.4 { 3073aadb2e6Sdrh set v [catch {execsql {SELECT f1 FROM test1 ORDER BY min(f1)}} msg] 3083aadb2e6Sdrh lappend v $msg 309b7916a78Sdrh} {1 {misuse of aggregate: min()}} 3105b1c07e7Sdando_catchsql_test select1-4.5 { 3115b1c07e7Sdan INSERT INTO test1(f1) SELECT f1 FROM test1 ORDER BY min(f1); 3125b1c07e7Sdan} {1 {misuse of aggregate: min()}} 31318e87cffSdrh 31418e87cffSdrh# The restriction not allowing constants in the ORDER BY clause 31518e87cffSdrh# has been removed. See ticket #1768 31618e87cffSdrh#do_test select1-4.5 { 31718e87cffSdrh# catchsql { 31818e87cffSdrh# SELECT f1 FROM test1 ORDER BY 8.4; 31918e87cffSdrh# } 32018e87cffSdrh#} {1 {ORDER BY terms must not be non-integer constants}} 32118e87cffSdrh#do_test select1-4.6 { 32218e87cffSdrh# catchsql { 32318e87cffSdrh# SELECT f1 FROM test1 ORDER BY '8.4'; 32418e87cffSdrh# } 32518e87cffSdrh#} {1 {ORDER BY terms must not be non-integer constants}} 32618e87cffSdrh#do_test select1-4.7.1 { 32718e87cffSdrh# catchsql { 32818e87cffSdrh# SELECT f1 FROM test1 ORDER BY 'xyz'; 32918e87cffSdrh# } 33018e87cffSdrh#} {1 {ORDER BY terms must not be non-integer constants}} 33118e87cffSdrh#do_test select1-4.7.2 { 33218e87cffSdrh# catchsql { 33318e87cffSdrh# SELECT f1 FROM test1 ORDER BY -8.4; 33418e87cffSdrh# } 33518e87cffSdrh#} {1 {ORDER BY terms must not be non-integer constants}} 33618e87cffSdrh#do_test select1-4.7.3 { 33718e87cffSdrh# catchsql { 33818e87cffSdrh# SELECT f1 FROM test1 ORDER BY +8.4; 33918e87cffSdrh# } 34018e87cffSdrh#} {1 {ORDER BY terms must not be non-integer constants}} 34118e87cffSdrh#do_test select1-4.7.4 { 34218e87cffSdrh# catchsql { 34318e87cffSdrh# SELECT f1 FROM test1 ORDER BY 4294967296; -- constant larger than 32 bits 34418e87cffSdrh# } 34518e87cffSdrh#} {1 {ORDER BY terms must not be non-integer constants}} 34618e87cffSdrh 3479208643dSdrhdo_test select1-4.5 { 34818e87cffSdrh execsql { 34918e87cffSdrh SELECT f1 FROM test1 ORDER BY 8.4 3509208643dSdrh } 35118e87cffSdrh} {11 33} 352e4de1febSdrhdo_test select1-4.6 { 35318e87cffSdrh execsql { 35418e87cffSdrh SELECT f1 FROM test1 ORDER BY '8.4' 355e4de1febSdrh } 35618e87cffSdrh} {11 33} 35718e87cffSdrh 358e4de1febSdrhdo_test select1-4.8 { 359e4de1febSdrh execsql { 360e4de1febSdrh CREATE TABLE t5(a,b); 361e4de1febSdrh INSERT INTO t5 VALUES(1,10); 362e4de1febSdrh INSERT INTO t5 VALUES(2,9); 363e4de1febSdrh SELECT * FROM t5 ORDER BY 1; 364e4de1febSdrh } 365e4de1febSdrh} {1 10 2 9} 366018d1a49Sdrhdo_test select1-4.9.1 { 367e4de1febSdrh execsql { 368e4de1febSdrh SELECT * FROM t5 ORDER BY 2; 369e4de1febSdrh } 370e4de1febSdrh} {2 9 1 10} 371018d1a49Sdrhdo_test select1-4.9.2 { 372018d1a49Sdrh execsql { 373018d1a49Sdrh SELECT * FROM t5 ORDER BY +2; 374018d1a49Sdrh } 375018d1a49Sdrh} {2 9 1 10} 376018d1a49Sdrhdo_test select1-4.10.1 { 377e4de1febSdrh catchsql { 378e4de1febSdrh SELECT * FROM t5 ORDER BY 3; 379e4de1febSdrh } 38001874bfcSdanielk1977} {1 {1st ORDER BY term out of range - should be between 1 and 2}} 381018d1a49Sdrhdo_test select1-4.10.2 { 382018d1a49Sdrh catchsql { 383018d1a49Sdrh SELECT * FROM t5 ORDER BY -1; 384018d1a49Sdrh } 38501874bfcSdanielk1977} {1 {1st ORDER BY term out of range - should be between 1 and 2}} 386e4de1febSdrhdo_test select1-4.11 { 387e4de1febSdrh execsql { 388e4de1febSdrh INSERT INTO t5 VALUES(3,10); 389e4de1febSdrh SELECT * FROM t5 ORDER BY 2, 1 DESC; 390e4de1febSdrh } 391e4de1febSdrh} {2 9 3 10 1 10} 392e4de1febSdrhdo_test select1-4.12 { 393e4de1febSdrh execsql { 394e4de1febSdrh SELECT * FROM t5 ORDER BY 1 DESC, b; 395e4de1febSdrh } 396e4de1febSdrh} {3 10 2 9 1 10} 397e4de1febSdrhdo_test select1-4.13 { 398e4de1febSdrh execsql { 399e4de1febSdrh SELECT * FROM t5 ORDER BY b DESC, 1; 400e4de1febSdrh } 401e4de1febSdrh} {1 10 3 10 2 9} 402e4de1febSdrh 4033aadb2e6Sdrh 4043aadb2e6Sdrh# ORDER BY ignored on an aggregate query 4053aadb2e6Sdrh# 4062282792aSdrhdo_test select1-5.1 { 4073aadb2e6Sdrh set v [catch {execsql {SELECT max(f1) FROM test1 ORDER BY f2}} msg] 4083aadb2e6Sdrh lappend v $msg 4093aadb2e6Sdrh} {0 33} 4103aadb2e6Sdrh 41185e9e22bSdrhexecsql {CREATE TABLE test2(t1 text, t2 text)} 4123aadb2e6Sdrhexecsql {INSERT INTO test2 VALUES('abc','xyz')} 4133aadb2e6Sdrh 414967e8b73Sdrh# Check for column naming 4153aadb2e6Sdrh# 4162282792aSdrhdo_test select1-6.1 { 4173aadb2e6Sdrh set v [catch {execsql2 {SELECT f1 FROM test1 ORDER BY f2}} msg] 4183aadb2e6Sdrh lappend v $msg 4193aadb2e6Sdrh} {0 {f1 11 f1 33}} 420382c0247Sdrhdo_test select1-6.1.1 { 421afed0863Sdrh db eval {PRAGMA full_column_names=on} 422382c0247Sdrh set v [catch {execsql2 {SELECT f1 FROM test1 ORDER BY f2}} msg] 423382c0247Sdrh lappend v $msg 4241bee3d7bSdrh} {0 {test1.f1 11 test1.f1 33}} 425382c0247Sdrhdo_test select1-6.1.2 { 4261bee3d7bSdrh set v [catch {execsql2 {SELECT f1 as 'f1' FROM test1 ORDER BY f2}} msg] 4271bee3d7bSdrh lappend v $msg 4281bee3d7bSdrh} {0 {f1 11 f1 33}} 4291bee3d7bSdrhdo_test select1-6.1.3 { 430382c0247Sdrh set v [catch {execsql2 {SELECT * FROM test1 WHERE f1==11}} msg] 431382c0247Sdrh lappend v $msg 43279d5f63fSdrh} {0 {f1 11 f2 22}} 4331bee3d7bSdrhdo_test select1-6.1.4 { 43498808babSdrh set v [catch {execsql2 {SELECT DISTINCT * FROM test1 WHERE f1==11}} msg] 435afed0863Sdrh db eval {PRAGMA full_column_names=off} 43698808babSdrh lappend v $msg 43779d5f63fSdrh} {0 {f1 11 f2 22}} 43898808babSdrhdo_test select1-6.1.5 { 439382c0247Sdrh set v [catch {execsql2 {SELECT * FROM test1 WHERE f1==11}} msg] 440382c0247Sdrh lappend v $msg 441382c0247Sdrh} {0 {f1 11 f2 22}} 44298808babSdrhdo_test select1-6.1.6 { 44398808babSdrh set v [catch {execsql2 {SELECT DISTINCT * FROM test1 WHERE f1==11}} msg] 44498808babSdrh lappend v $msg 44598808babSdrh} {0 {f1 11 f2 22}} 4462282792aSdrhdo_test select1-6.2 { 4473aadb2e6Sdrh set v [catch {execsql2 {SELECT f1 as xyzzy FROM test1 ORDER BY f2}} msg] 4483aadb2e6Sdrh lappend v $msg 4493aadb2e6Sdrh} {0 {xyzzy 11 xyzzy 33}} 4502282792aSdrhdo_test select1-6.3 { 4513aadb2e6Sdrh set v [catch {execsql2 {SELECT f1 as "xyzzy" FROM test1 ORDER BY f2}} msg] 4523aadb2e6Sdrh lappend v $msg 4533aadb2e6Sdrh} {0 {xyzzy 11 xyzzy 33}} 454d400728aSdrhdo_test select1-6.3.1 { 455d400728aSdrh set v [catch {execsql2 {SELECT f1 as 'xyzzy ' FROM test1 ORDER BY f2}} msg] 456d400728aSdrh lappend v $msg 457d400728aSdrh} {0 {{xyzzy } 11 {xyzzy } 33}} 4582282792aSdrhdo_test select1-6.4 { 4593aadb2e6Sdrh set v [catch {execsql2 {SELECT f1+F2 as xyzzy FROM test1 ORDER BY f2}} msg] 4603aadb2e6Sdrh lappend v $msg 4613aadb2e6Sdrh} {0 {xyzzy 33 xyzzy 77}} 462c4a3c779Sdrhdo_test select1-6.4a { 463c4a3c779Sdrh set v [catch {execsql2 {SELECT f1+F2 FROM test1 ORDER BY f2}} msg] 464c4a3c779Sdrh lappend v $msg 465c4a3c779Sdrh} {0 {f1+F2 33 f1+F2 77}} 4662282792aSdrhdo_test select1-6.5 { 4673aadb2e6Sdrh set v [catch {execsql2 {SELECT test1.f1+F2 FROM test1 ORDER BY f2}} msg] 4683aadb2e6Sdrh lappend v $msg 469e1b6a5b8Sdrh} {0 {test1.f1+F2 33 test1.f1+F2 77}} 4701bee3d7bSdrhdo_test select1-6.5.1 { 4711bee3d7bSdrh execsql2 {PRAGMA full_column_names=on} 4721bee3d7bSdrh set v [catch {execsql2 {SELECT test1.f1+F2 FROM test1 ORDER BY f2}} msg] 4731bee3d7bSdrh execsql2 {PRAGMA full_column_names=off} 4741bee3d7bSdrh lappend v $msg 4751bee3d7bSdrh} {0 {test1.f1+F2 33 test1.f1+F2 77}} 4762282792aSdrhdo_test select1-6.6 { 4773aadb2e6Sdrh set v [catch {execsql2 {SELECT test1.f1+F2, t1 FROM test1, test2 4783aadb2e6Sdrh ORDER BY f2}} msg] 4793aadb2e6Sdrh lappend v $msg 480e1b6a5b8Sdrh} {0 {test1.f1+F2 33 t1 abc test1.f1+F2 77 t1 abc}} 4812282792aSdrhdo_test select1-6.7 { 482da9d6c45Sdrh set v [catch {execsql2 {SELECT A.f1, t1 FROM test1 as A, test2 483da9d6c45Sdrh ORDER BY f2}} msg] 484da9d6c45Sdrh lappend v $msg 48547a6db2bSdrh} {0 {f1 11 t1 abc f1 33 t1 abc}} 4862282792aSdrhdo_test select1-6.8 { 487da9d6c45Sdrh set v [catch {execsql2 {SELECT A.f1, f1 FROM test1 as A, test1 as B 488da9d6c45Sdrh ORDER BY f2}} msg] 489da9d6c45Sdrh lappend v $msg 490967e8b73Sdrh} {1 {ambiguous column name: f1}} 491cc85b411Sdrhdo_test select1-6.8b { 492da9d6c45Sdrh set v [catch {execsql2 {SELECT A.f1, B.f1 FROM test1 as A, test1 as B 493da9d6c45Sdrh ORDER BY f2}} msg] 494da9d6c45Sdrh lappend v $msg 495967e8b73Sdrh} {1 {ambiguous column name: f2}} 496cc85b411Sdrhdo_test select1-6.8c { 497cc85b411Sdrh set v [catch {execsql2 {SELECT A.f1, f1 FROM test1 as A, test1 as A 498cc85b411Sdrh ORDER BY f2}} msg] 499cc85b411Sdrh lappend v $msg 500967e8b73Sdrh} {1 {ambiguous column name: A.f1}} 50147a6db2bSdrhdo_test select1-6.9.1 { 50247a6db2bSdrh set v [catch {execsql {SELECT A.f1, B.f1 FROM test1 as A, test1 as B 50347a6db2bSdrh ORDER BY A.f1, B.f1}} msg] 50447a6db2bSdrh lappend v $msg 50547a6db2bSdrh} {0 {11 11 11 33 33 11 33 33}} 50647a6db2bSdrhdo_test select1-6.9.2 { 507da9d6c45Sdrh set v [catch {execsql2 {SELECT A.f1, B.f1 FROM test1 as A, test1 as B 508da9d6c45Sdrh ORDER BY A.f1, B.f1}} msg] 509da9d6c45Sdrh lappend v $msg 51047a6db2bSdrh} {0 {f1 11 f1 11 f1 33 f1 33 f1 11 f1 11 f1 33 f1 33}} 51127c77438Sdanielk1977 512e49b146fSdrhdo_test select1-6.9.3 { 513e49b146fSdrh db eval { 514e49b146fSdrh PRAGMA short_column_names=OFF; 515e49b146fSdrh PRAGMA full_column_names=OFF; 516e49b146fSdrh } 517e49b146fSdrh execsql2 { 518e49b146fSdrh SELECT test1 . f1, test1 . f2 FROM test1 LIMIT 1 519e49b146fSdrh } 520e49b146fSdrh} {{test1 . f1} 11 {test1 . f2} 22} 521e49b146fSdrhdo_test select1-6.9.4 { 522e49b146fSdrh db eval { 523e49b146fSdrh PRAGMA short_column_names=OFF; 524e49b146fSdrh PRAGMA full_column_names=ON; 525e49b146fSdrh } 526e49b146fSdrh execsql2 { 527e49b146fSdrh SELECT test1 . f1, test1 . f2 FROM test1 LIMIT 1 528e49b146fSdrh } 529e49b146fSdrh} {test1.f1 11 test1.f2 22} 530e49b146fSdrhdo_test select1-6.9.5 { 531e49b146fSdrh db eval { 532e49b146fSdrh PRAGMA short_column_names=OFF; 533e49b146fSdrh PRAGMA full_column_names=ON; 534e49b146fSdrh } 535e49b146fSdrh execsql2 { 536e49b146fSdrh SELECT 123.45; 537e49b146fSdrh } 538e49b146fSdrh} {123.45 123.45} 53993a960a0Sdrhdo_test select1-6.9.6 { 54093a960a0Sdrh execsql2 { 54193a960a0Sdrh SELECT * FROM test1 a, test1 b LIMIT 1 54293a960a0Sdrh } 54393a960a0Sdrh} {a.f1 11 a.f2 22 b.f1 11 b.f2 22} 54493a960a0Sdrhdo_test select1-6.9.7 { 54593a960a0Sdrh set x [execsql2 { 54693a960a0Sdrh SELECT * FROM test1 a, (select 5, 6) LIMIT 1 54793a960a0Sdrh }] 548*da653b89Sdrh regsub -all {subquery-\d+} $x {subquery-0} x 54993a960a0Sdrh set x 550*da653b89Sdrh} {a.f1 11 a.f2 22 (subquery-0).5 5 (subquery-0).6 6} 55193a960a0Sdrhdo_test select1-6.9.8 { 55293a960a0Sdrh set x [execsql2 { 55393a960a0Sdrh SELECT * FROM test1 a, (select 5 AS x, 6 AS y) AS b LIMIT 1 55493a960a0Sdrh }] 555*da653b89Sdrh regsub -all {subquery-\d+} $x {subquery-0} x 55693a960a0Sdrh set x 55793a960a0Sdrh} {a.f1 11 a.f2 22 b.x 5 b.y 6} 55885e9e22bSdrhdo_test select1-6.9.9 { 55985e9e22bSdrh execsql2 { 56085e9e22bSdrh SELECT a.f1, b.f2 FROM test1 a, test1 b LIMIT 1 56185e9e22bSdrh } 56285e9e22bSdrh} {test1.f1 11 test1.f2 22} 56385e9e22bSdrhdo_test select1-6.9.10 { 56485e9e22bSdrh execsql2 { 56585e9e22bSdrh SELECT f1, t1 FROM test1, test2 LIMIT 1 56685e9e22bSdrh } 56785e9e22bSdrh} {test1.f1 11 test2.t1 abc} 56885e9e22bSdrhdo_test select1-6.9.11 { 56985e9e22bSdrh db eval { 57085e9e22bSdrh PRAGMA short_column_names=ON; 57185e9e22bSdrh PRAGMA full_column_names=ON; 57285e9e22bSdrh } 57385e9e22bSdrh execsql2 { 57485e9e22bSdrh SELECT a.f1, b.f2 FROM test1 a, test1 b LIMIT 1 57585e9e22bSdrh } 57685e9e22bSdrh} {test1.f1 11 test1.f2 22} 57785e9e22bSdrhdo_test select1-6.9.12 { 57885e9e22bSdrh execsql2 { 57985e9e22bSdrh SELECT f1, t1 FROM test1, test2 LIMIT 1 58085e9e22bSdrh } 58185e9e22bSdrh} {test1.f1 11 test2.t1 abc} 58285e9e22bSdrhdo_test select1-6.9.13 { 58385e9e22bSdrh db eval { 58485e9e22bSdrh PRAGMA short_column_names=ON; 58585e9e22bSdrh PRAGMA full_column_names=OFF; 58685e9e22bSdrh } 58785e9e22bSdrh execsql2 { 58885e9e22bSdrh SELECT a.f1, b.f1 FROM test1 a, test1 b LIMIT 1 58985e9e22bSdrh } 59085e9e22bSdrh} {f1 11 f1 11} 59185e9e22bSdrhdo_test select1-6.9.14 { 59285e9e22bSdrh execsql2 { 59385e9e22bSdrh SELECT f1, t1 FROM test1, test2 LIMIT 1 59485e9e22bSdrh } 59585e9e22bSdrh} {f1 11 t1 abc} 59685e9e22bSdrhdo_test select1-6.9.15 { 59785e9e22bSdrh db eval { 59885e9e22bSdrh PRAGMA short_column_names=OFF; 59985e9e22bSdrh PRAGMA full_column_names=ON; 60085e9e22bSdrh } 60185e9e22bSdrh execsql2 { 60285e9e22bSdrh SELECT a.f1, b.f1 FROM test1 a, test1 b LIMIT 1 60385e9e22bSdrh } 60485e9e22bSdrh} {test1.f1 11 test1.f1 11} 60585e9e22bSdrhdo_test select1-6.9.16 { 60685e9e22bSdrh execsql2 { 60785e9e22bSdrh SELECT f1, t1 FROM test1, test2 LIMIT 1 60885e9e22bSdrh } 60985e9e22bSdrh} {test1.f1 11 test2.t1 abc} 61085e9e22bSdrh 61193a960a0Sdrh 612e49b146fSdrhdb eval { 613e49b146fSdrh PRAGMA short_column_names=ON; 614e49b146fSdrh PRAGMA full_column_names=OFF; 615e49b146fSdrh} 616e49b146fSdrh 61727c77438Sdanielk1977ifcapable compound { 618c4a3c779Sdrhdo_test select1-6.10 { 619c4a3c779Sdrh set v [catch {execsql2 { 620c4a3c779Sdrh SELECT f1 FROM test1 UNION SELECT f2 FROM test1 621c4a3c779Sdrh ORDER BY f2; 622c4a3c779Sdrh }} msg] 623c4a3c779Sdrh lappend v $msg 62492378253Sdrh} {0 {f1 11 f1 22 f1 33 f1 44}} 625c4a3c779Sdrhdo_test select1-6.11 { 626c4a3c779Sdrh set v [catch {execsql2 { 627c4a3c779Sdrh SELECT f1 FROM test1 UNION SELECT f2+100 FROM test1 6284c774314Sdrh ORDER BY f2+101; 629c4a3c779Sdrh }} msg] 630c4a3c779Sdrh lappend v $msg 63101874bfcSdanielk1977} {1 {1st ORDER BY term does not match any column in the result set}} 63294ccde58Sdrh 63394ccde58Sdrh# Ticket #2296 634de3e41e3Sdanielk1977ifcapable subquery&&compound { 63594ccde58Sdrhdo_test select1-6.20 { 63694ccde58Sdrh execsql { 63794ccde58Sdrh CREATE TABLE t6(a TEXT, b TEXT); 63894ccde58Sdrh INSERT INTO t6 VALUES('a','0'); 63994ccde58Sdrh INSERT INTO t6 VALUES('b','1'); 64094ccde58Sdrh INSERT INTO t6 VALUES('c','2'); 64194ccde58Sdrh INSERT INTO t6 VALUES('d','3'); 64294ccde58Sdrh SELECT a FROM t6 WHERE b IN 64394ccde58Sdrh (SELECT b FROM t6 WHERE a<='b' UNION SELECT '3' AS x 64494ccde58Sdrh ORDER BY 1 LIMIT 1) 64594ccde58Sdrh } 64694ccde58Sdrh} {a} 64794ccde58Sdrhdo_test select1-6.21 { 64894ccde58Sdrh execsql { 64994ccde58Sdrh SELECT a FROM t6 WHERE b IN 65094ccde58Sdrh (SELECT b FROM t6 WHERE a<='b' UNION SELECT '3' AS x 65194ccde58Sdrh ORDER BY 1 DESC LIMIT 1) 65294ccde58Sdrh } 65394ccde58Sdrh} {d} 65494ccde58Sdrhdo_test select1-6.22 { 65594ccde58Sdrh execsql { 65694ccde58Sdrh SELECT a FROM t6 WHERE b IN 65794ccde58Sdrh (SELECT b FROM t6 WHERE a<='b' UNION SELECT '3' AS x 65894ccde58Sdrh ORDER BY b LIMIT 2) 65994ccde58Sdrh ORDER BY a; 66094ccde58Sdrh } 66194ccde58Sdrh} {a b} 66294ccde58Sdrhdo_test select1-6.23 { 66394ccde58Sdrh execsql { 66494ccde58Sdrh SELECT a FROM t6 WHERE b IN 66594ccde58Sdrh (SELECT b FROM t6 WHERE a<='b' UNION SELECT '3' AS x 66694ccde58Sdrh ORDER BY x DESC LIMIT 2) 66794ccde58Sdrh ORDER BY a; 66894ccde58Sdrh } 66994ccde58Sdrh} {b d} 670284f4acaSdanielk1977} 67194ccde58Sdrh 67227c77438Sdanielk1977} ;#ifcapable compound 6733aadb2e6Sdrh 674d400728aSdrhdo_test select1-7.1 { 675d400728aSdrh set v [catch {execsql { 676d400728aSdrh SELECT f1 FROM test1 WHERE f2=; 677d400728aSdrh }} msg] 678d400728aSdrh lappend v $msg 679d400728aSdrh} {1 {near ";": syntax error}} 68027c77438Sdanielk1977ifcapable compound { 681d400728aSdrhdo_test select1-7.2 { 682d400728aSdrh set v [catch {execsql { 683d400728aSdrh SELECT f1 FROM test1 UNION SELECT WHERE; 684d400728aSdrh }} msg] 685d400728aSdrh lappend v $msg 686d400728aSdrh} {1 {near "WHERE": syntax error}} 68727c77438Sdanielk1977} ;# ifcapable compound 688d400728aSdrhdo_test select1-7.3 { 689d400728aSdrh set v [catch {execsql {SELECT f1 FROM test1 as 'hi', test2 as}} msg] 690d400728aSdrh lappend v $msg 6916116ee4eSdrh} {1 {incomplete input}} 692d400728aSdrhdo_test select1-7.4 { 693d400728aSdrh set v [catch {execsql { 694d400728aSdrh SELECT f1 FROM test1 ORDER BY; 695d400728aSdrh }} msg] 696d400728aSdrh lappend v $msg 697d400728aSdrh} {1 {near ";": syntax error}} 698d400728aSdrhdo_test select1-7.5 { 699d400728aSdrh set v [catch {execsql { 700d400728aSdrh SELECT f1 FROM test1 ORDER BY f1 desc, f2 where; 701d400728aSdrh }} msg] 702d400728aSdrh lappend v $msg 703d400728aSdrh} {1 {near "where": syntax error}} 704d400728aSdrhdo_test select1-7.6 { 705d400728aSdrh set v [catch {execsql { 706d400728aSdrh SELECT count(f1,f2 FROM test1; 707d400728aSdrh }} msg] 708d400728aSdrh lappend v $msg 709d400728aSdrh} {1 {near "FROM": syntax error}} 710d400728aSdrhdo_test select1-7.7 { 711d400728aSdrh set v [catch {execsql { 712d400728aSdrh SELECT count(f1,f2+) FROM test1; 713d400728aSdrh }} msg] 714d400728aSdrh lappend v $msg 715d400728aSdrh} {1 {near ")": syntax error}} 716d400728aSdrhdo_test select1-7.8 { 717d400728aSdrh set v [catch {execsql { 718d400728aSdrh SELECT f1 FROM test1 ORDER BY f2, f1+; 719d400728aSdrh }} msg] 720d400728aSdrh lappend v $msg 721d400728aSdrh} {1 {near ";": syntax error}} 72215926590Sdrhdo_test select1-7.9 { 72315926590Sdrh catchsql { 72415926590Sdrh SELECT f1 FROM test1 LIMIT 5+3 OFFSET 11 ORDER BY f2; 72515926590Sdrh } 72615926590Sdrh} {1 {near "ORDER": syntax error}} 727d400728aSdrh 728d400728aSdrhdo_test select1-8.1 { 729d400728aSdrh execsql {SELECT f1 FROM test1 WHERE 4.3+2.4 OR 1 ORDER BY f1} 730d400728aSdrh} {11 33} 731d400728aSdrhdo_test select1-8.2 { 732d400728aSdrh execsql { 733d400728aSdrh SELECT f1 FROM test1 WHERE ('x' || f1) BETWEEN 'x10' AND 'x20' 734d400728aSdrh ORDER BY f1 735d400728aSdrh } 736d400728aSdrh} {11} 737d400728aSdrhdo_test select1-8.3 { 738d400728aSdrh execsql { 739d400728aSdrh SELECT f1 FROM test1 WHERE 5-3==2 740d400728aSdrh ORDER BY f1 741d400728aSdrh } 742d400728aSdrh} {11 33} 7438d059845Sdanielk1977 7448d059845Sdanielk1977# TODO: This test is failing because f1 is now being loaded off the 7458d059845Sdanielk1977# disk as a vdbe integer, not a string. Hence the value of f1/(f1-11) 7468d059845Sdanielk1977# changes because of rounding. Disable the test for now. 7478d059845Sdanielk1977if 0 { 748d400728aSdrhdo_test select1-8.4 { 749d400728aSdrh execsql { 750bb113518Sdrh SELECT coalesce(f1/(f1-11),'x'), 751bb113518Sdrh coalesce(min(f1/(f1-11),5),'y'), 752bb113518Sdrh coalesce(max(f1/(f1-33),6),'z') 753d400728aSdrh FROM test1 ORDER BY f1 754d400728aSdrh } 755bb113518Sdrh} {x y 6 1.5 1.5 z} 7568d059845Sdanielk1977} 757d400728aSdrhdo_test select1-8.5 { 758d400728aSdrh execsql { 759d400728aSdrh SELECT min(1,2,3), -max(1,2,3) 760d400728aSdrh FROM test1 ORDER BY f1 761d400728aSdrh } 762d400728aSdrh} {1 -3 1 -3} 763d400728aSdrh 7646a535340Sdrh 7656a535340Sdrh# Check the behavior when the result set is empty 7666a535340Sdrh# 767cbb18d22Sdanielk1977# SQLite v3 always sets r(*). 768cbb18d22Sdanielk1977# 769cbb18d22Sdanielk1977# do_test select1-9.1 { 770cbb18d22Sdanielk1977# catch {unset r} 771cbb18d22Sdanielk1977# set r(*) {} 772cbb18d22Sdanielk1977# db eval {SELECT * FROM test1 WHERE f1<0} r {} 773cbb18d22Sdanielk1977# set r(*) 774cbb18d22Sdanielk1977# } {} 7756a535340Sdrhdo_test select1-9.2 { 7766a535340Sdrh execsql {PRAGMA empty_result_callbacks=on} 777cbb18d22Sdanielk1977 catch {unset r} 7786a535340Sdrh set r(*) {} 7796a535340Sdrh db eval {SELECT * FROM test1 WHERE f1<0} r {} 7806a535340Sdrh set r(*) 7816a535340Sdrh} {f1 f2} 7823e8c37e7Sdanielk1977ifcapable subquery { 7836a535340Sdrh do_test select1-9.3 { 7846a535340Sdrh set r(*) {} 7856a535340Sdrh db eval {SELECT * FROM test1 WHERE f1<(select count(*) from test2)} r {} 7866a535340Sdrh set r(*) 7876a535340Sdrh } {f1 f2} 7883e8c37e7Sdanielk1977} 7896a535340Sdrhdo_test select1-9.4 { 7906a535340Sdrh set r(*) {} 7916a535340Sdrh db eval {SELECT * FROM test1 ORDER BY f1} r {} 7926a535340Sdrh set r(*) 7936a535340Sdrh} {f1 f2} 7946a535340Sdrhdo_test select1-9.5 { 7956a535340Sdrh set r(*) {} 7966a535340Sdrh db eval {SELECT * FROM test1 WHERE f1<0 ORDER BY f1} r {} 7976a535340Sdrh set r(*) 7986a535340Sdrh} {f1 f2} 7996a535340Sdrhunset r 8006a535340Sdrh 801a2e00042Sdrh# Check for ORDER BY clauses that refer to an AS name in the column list 802a2e00042Sdrh# 803a2e00042Sdrhdo_test select1-10.1 { 804a2e00042Sdrh execsql { 805a2e00042Sdrh SELECT f1 AS x FROM test1 ORDER BY x 806a2e00042Sdrh } 807a2e00042Sdrh} {11 33} 808a2e00042Sdrhdo_test select1-10.2 { 809a2e00042Sdrh execsql { 810a2e00042Sdrh SELECT f1 AS x FROM test1 ORDER BY -x 811a2e00042Sdrh } 812a2e00042Sdrh} {33 11} 813a2e00042Sdrhdo_test select1-10.3 { 814a2e00042Sdrh execsql { 815a2e00042Sdrh SELECT f1-23 AS x FROM test1 ORDER BY abs(x) 816a2e00042Sdrh } 817a2e00042Sdrh} {10 -12} 818a2e00042Sdrhdo_test select1-10.4 { 819a2e00042Sdrh execsql { 820a2e00042Sdrh SELECT f1-23 AS x FROM test1 ORDER BY -abs(x) 821a2e00042Sdrh } 822a2e00042Sdrh} {-12 10} 823a2e00042Sdrhdo_test select1-10.5 { 824a2e00042Sdrh execsql { 825a2e00042Sdrh SELECT f1-22 AS x, f2-22 as y FROM test1 826a2e00042Sdrh } 827a2e00042Sdrh} {-11 0 11 22} 828a2e00042Sdrhdo_test select1-10.6 { 829a2e00042Sdrh execsql { 830a2e00042Sdrh SELECT f1-22 AS x, f2-22 as y FROM test1 WHERE x>0 AND y<50 831a2e00042Sdrh } 832a2e00042Sdrh} {11 22} 83393a960a0Sdrhdo_test select1-10.7 { 83493a960a0Sdrh execsql { 83593a960a0Sdrh SELECT f1 COLLATE nocase AS x FROM test1 ORDER BY x 83693a960a0Sdrh } 83793a960a0Sdrh} {11 33} 838a2e00042Sdrh 83954473229Sdrh# Check the ability to specify "TABLE.*" in the result set of a SELECT 84054473229Sdrh# 84154473229Sdrhdo_test select1-11.1 { 84254473229Sdrh execsql { 84354473229Sdrh DELETE FROM t3; 84454473229Sdrh DELETE FROM t4; 84554473229Sdrh INSERT INTO t3 VALUES(1,2); 84654473229Sdrh INSERT INTO t4 VALUES(3,4); 84754473229Sdrh SELECT * FROM t3, t4; 84854473229Sdrh } 84954473229Sdrh} {1 2 3 4} 85047a6db2bSdrhdo_test select1-11.2.1 { 85147a6db2bSdrh execsql { 85247a6db2bSdrh SELECT * FROM t3, t4; 85347a6db2bSdrh } 85447a6db2bSdrh} {1 2 3 4} 85547a6db2bSdrhdo_test select1-11.2.2 { 85654473229Sdrh execsql2 { 85754473229Sdrh SELECT * FROM t3, t4; 85854473229Sdrh } 85947a6db2bSdrh} {a 3 b 4 a 3 b 4} 860cf55b7aeSdrhdo_test select1-11.4.1 { 86154473229Sdrh execsql { 86254473229Sdrh SELECT t3.*, t4.b FROM t3, t4; 86354473229Sdrh } 86454473229Sdrh} {1 2 4} 865cf55b7aeSdrhdo_test select1-11.4.2 { 866cf55b7aeSdrh execsql { 867cf55b7aeSdrh SELECT "t3".*, t4.b FROM t3, t4; 868cf55b7aeSdrh } 869cf55b7aeSdrh} {1 2 4} 87047a6db2bSdrhdo_test select1-11.5.1 { 87154473229Sdrh execsql2 { 87254473229Sdrh SELECT t3.*, t4.b FROM t3, t4; 87354473229Sdrh } 87447a6db2bSdrh} {a 1 b 4 b 4} 87554473229Sdrhdo_test select1-11.6 { 87654473229Sdrh execsql2 { 87754473229Sdrh SELECT x.*, y.b FROM t3 AS x, t4 AS y; 87854473229Sdrh } 87947a6db2bSdrh} {a 1 b 4 b 4} 88054473229Sdrhdo_test select1-11.7 { 88154473229Sdrh execsql { 88254473229Sdrh SELECT t3.b, t4.* FROM t3, t4; 88354473229Sdrh } 88454473229Sdrh} {2 3 4} 88554473229Sdrhdo_test select1-11.8 { 88654473229Sdrh execsql2 { 88754473229Sdrh SELECT t3.b, t4.* FROM t3, t4; 88854473229Sdrh } 88947a6db2bSdrh} {b 4 a 3 b 4} 89054473229Sdrhdo_test select1-11.9 { 89154473229Sdrh execsql2 { 89254473229Sdrh SELECT x.b, y.* FROM t3 AS x, t4 AS y; 89354473229Sdrh } 89447a6db2bSdrh} {b 4 a 3 b 4} 89554473229Sdrhdo_test select1-11.10 { 89654473229Sdrh catchsql { 89754473229Sdrh SELECT t5.* FROM t3, t4; 89854473229Sdrh } 89954473229Sdrh} {1 {no such table: t5}} 90054473229Sdrhdo_test select1-11.11 { 90154473229Sdrh catchsql { 90254473229Sdrh SELECT t3.* FROM t3 AS x, t4; 90354473229Sdrh } 90454473229Sdrh} {1 {no such table: t3}} 9053e8c37e7Sdanielk1977ifcapable subquery { 90654473229Sdrh do_test select1-11.12 { 90754473229Sdrh execsql2 { 90854473229Sdrh SELECT t3.* FROM t3, (SELECT max(a), max(b) FROM t4) 90954473229Sdrh } 91047a6db2bSdrh } {a 1 b 2} 91154473229Sdrh do_test select1-11.13 { 91254473229Sdrh execsql2 { 91354473229Sdrh SELECT t3.* FROM (SELECT max(a), max(b) FROM t4), t3 91454473229Sdrh } 91547a6db2bSdrh } {a 1 b 2} 91654473229Sdrh do_test select1-11.14 { 91754473229Sdrh execsql2 { 918ad2d8307Sdrh SELECT * FROM t3, (SELECT max(a), max(b) FROM t4) AS 'tx' 91954473229Sdrh } 92047a6db2bSdrh } {a 1 b 2 max(a) 3 max(b) 4} 92154473229Sdrh do_test select1-11.15 { 92254473229Sdrh execsql2 { 92354473229Sdrh SELECT y.*, t3.* FROM t3, (SELECT max(a), max(b) FROM t4) AS y 92454473229Sdrh } 92547a6db2bSdrh } {max(a) 3 max(b) 4 a 1 b 2} 9263e8c37e7Sdanielk1977} 927c754fa54Sdrhdo_test select1-11.16 { 928c754fa54Sdrh execsql2 { 929c754fa54Sdrh SELECT y.* FROM t3 as y, t4 as z 930c754fa54Sdrh } 93147a6db2bSdrh} {a 1 b 2} 932a2e00042Sdrh 933bf3a4fa4Sdrh# Tests of SELECT statements without a FROM clause. 934bf3a4fa4Sdrh# 935bf3a4fa4Sdrhdo_test select1-12.1 { 936bf3a4fa4Sdrh execsql2 { 937bf3a4fa4Sdrh SELECT 1+2+3 938bf3a4fa4Sdrh } 939bf3a4fa4Sdrh} {1+2+3 6} 940bf3a4fa4Sdrhdo_test select1-12.2 { 941bf3a4fa4Sdrh execsql2 { 942bf3a4fa4Sdrh SELECT 1,'hello',2 943bf3a4fa4Sdrh } 944bf3a4fa4Sdrh} {1 1 'hello' hello 2 2} 945bf3a4fa4Sdrhdo_test select1-12.3 { 946bf3a4fa4Sdrh execsql2 { 947bf3a4fa4Sdrh SELECT 1 AS 'a','hello' AS 'b',2 AS 'c' 948bf3a4fa4Sdrh } 949bf3a4fa4Sdrh} {a 1 b hello c 2} 950bf3a4fa4Sdrhdo_test select1-12.4 { 951bf3a4fa4Sdrh execsql { 952bf3a4fa4Sdrh DELETE FROM t3; 953bf3a4fa4Sdrh INSERT INTO t3 VALUES(1,2); 95427c77438Sdanielk1977 } 95527c77438Sdanielk1977} {} 95627c77438Sdanielk1977 95727c77438Sdanielk1977ifcapable compound { 95827c77438Sdanielk1977do_test select1-12.5 { 95927c77438Sdanielk1977 execsql { 960bf3a4fa4Sdrh SELECT * FROM t3 UNION SELECT 3 AS 'a', 4 ORDER BY a; 961bf3a4fa4Sdrh } 962bf3a4fa4Sdrh} {1 2 3 4} 96327c77438Sdanielk1977 96427c77438Sdanielk1977do_test select1-12.6 { 965bf3a4fa4Sdrh execsql { 966bf3a4fa4Sdrh SELECT 3, 4 UNION SELECT * FROM t3; 967bf3a4fa4Sdrh } 968bf3a4fa4Sdrh} {1 2 3 4} 96927c77438Sdanielk1977} ;# ifcapable compound 97027c77438Sdanielk1977 9713e8c37e7Sdanielk1977ifcapable subquery { 97227c77438Sdanielk1977 do_test select1-12.7 { 973bf3a4fa4Sdrh execsql { 974bf3a4fa4Sdrh SELECT * FROM t3 WHERE a=(SELECT 1); 975bf3a4fa4Sdrh } 976bf3a4fa4Sdrh } {1 2} 97727c77438Sdanielk1977 do_test select1-12.8 { 978bf3a4fa4Sdrh execsql { 979bf3a4fa4Sdrh SELECT * FROM t3 WHERE a=(SELECT 2); 980bf3a4fa4Sdrh } 981bf3a4fa4Sdrh } {} 9823e8c37e7Sdanielk1977} 98327c77438Sdanielk1977 984e61b9f4fSdanielk1977ifcapable {compound && subquery} { 98527c77438Sdanielk1977 do_test select1-12.9 { 986d5feede1Sdrh execsql2 { 987d5feede1Sdrh SELECT x FROM ( 98892378253Sdrh SELECT a AS x, b AS y FROM t3 UNION SELECT a,b FROM t4 ORDER BY a,b 989d5feede1Sdrh ) ORDER BY x; 990d5feede1Sdrh } 991d5feede1Sdrh } {x 1 x 3} 99227c77438Sdanielk1977 do_test select1-12.10 { 993d5feede1Sdrh execsql2 { 994d5feede1Sdrh SELECT z.x FROM ( 99592378253Sdrh SELECT a AS x,b AS y FROM t3 UNION SELECT a, b FROM t4 ORDER BY a,b 996d5feede1Sdrh ) AS 'z' ORDER BY x; 997d5feede1Sdrh } 99847a6db2bSdrh } {x 1 x 3} 99927c77438Sdanielk1977} ;# ifcapable compound 1000d5feede1Sdrh 100113a68c3fSdanielk1977 1002327bd592Sdanielk1977# Check for a VDBE stack growth problem that existed at one point. 1003327bd592Sdanielk1977# 10041576cd92Sdanielk1977ifcapable subquery { 1005327bd592Sdanielk1977 do_test select1-13.1 { 1006327bd592Sdanielk1977 execsql { 1007327bd592Sdanielk1977 BEGIN; 1008327bd592Sdanielk1977 create TABLE abc(a, b, c, PRIMARY KEY(a, b)); 1009327bd592Sdanielk1977 INSERT INTO abc VALUES(1, 1, 1); 1010327bd592Sdanielk1977 } 1011327bd592Sdanielk1977 for {set i 0} {$i<10} {incr i} { 1012327bd592Sdanielk1977 execsql { 1013327bd592Sdanielk1977 INSERT INTO abc SELECT a+(select max(a) FROM abc), 1014327bd592Sdanielk1977 b+(select max(a) FROM abc), c+(select max(a) FROM abc) FROM abc; 1015327bd592Sdanielk1977 } 1016327bd592Sdanielk1977 } 1017327bd592Sdanielk1977 execsql {COMMIT} 1018327bd592Sdanielk1977 1019327bd592Sdanielk1977 # This used to seg-fault when the problem existed. 1020327bd592Sdanielk1977 execsql { 1021327bd592Sdanielk1977 SELECT count( 1022327bd592Sdanielk1977 (SELECT a FROM abc WHERE a = NULL AND b >= upper.c) 1023327bd592Sdanielk1977 ) FROM abc AS upper; 1024327bd592Sdanielk1977 } 1025327bd592Sdanielk1977 } {0} 10261576cd92Sdanielk1977} 1027327bd592Sdanielk1977 1028a3f06598Sdanielk1977foreach tab [db eval {SELECT name FROM sqlite_master WHERE type = 'table'}] { 1029a3f06598Sdanielk1977 db eval "DROP TABLE $tab" 1030a3f06598Sdanielk1977} 1031f7b9d66fSdanielk1977db close 1032f7b9d66fSdanielk1977sqlite3 db test.db 1033a3f06598Sdanielk1977 1034f7b9d66fSdanielk1977do_test select1-14.1 { 1035f7b9d66fSdanielk1977 execsql { 1036f7b9d66fSdanielk1977 SELECT * FROM sqlite_master WHERE rowid>10; 1037f7b9d66fSdanielk1977 SELECT * FROM sqlite_master WHERE rowid=10; 1038f7b9d66fSdanielk1977 SELECT * FROM sqlite_master WHERE rowid<10; 1039f7b9d66fSdanielk1977 SELECT * FROM sqlite_master WHERE rowid<=10; 1040f7b9d66fSdanielk1977 SELECT * FROM sqlite_master WHERE rowid>=10; 1041f7b9d66fSdanielk1977 SELECT * FROM sqlite_master; 1042f7b9d66fSdanielk1977 } 1043f7b9d66fSdanielk1977} {} 1044f7b9d66fSdanielk1977do_test select1-14.2 { 1045f7b9d66fSdanielk1977 execsql { 1046f7b9d66fSdanielk1977 SELECT 10 IN (SELECT rowid FROM sqlite_master); 1047f7b9d66fSdanielk1977 } 1048f7b9d66fSdanielk1977} {0} 1049f7b9d66fSdanielk1977 105001e61eecSdrhif {[db one {PRAGMA locking_mode}]=="normal"} { 105101e61eecSdrh # Check that ticket #3771 has been fixed. This test does not 105201e61eecSdrh # work with locking_mode=EXCLUSIVE so disable in that case. 1053e1fb65a0Sdanielk1977 # 1054e1fb65a0Sdanielk1977 do_test select1-15.1 { 1055e1fb65a0Sdanielk1977 execsql { 1056e1fb65a0Sdanielk1977 CREATE TABLE t1(a); 1057e1fb65a0Sdanielk1977 CREATE INDEX i1 ON t1(a); 1058e1fb65a0Sdanielk1977 INSERT INTO t1 VALUES(1); 1059e1fb65a0Sdanielk1977 INSERT INTO t1 VALUES(2); 1060e1fb65a0Sdanielk1977 INSERT INTO t1 VALUES(3); 1061e1fb65a0Sdanielk1977 } 1062e1fb65a0Sdanielk1977 } {} 1063e1fb65a0Sdanielk1977 do_test select1-15.2 { 1064e1fb65a0Sdanielk1977 sqlite3 db2 test.db 1065e1fb65a0Sdanielk1977 execsql { DROP INDEX i1 } db2 1066e1fb65a0Sdanielk1977 db2 close 1067e1fb65a0Sdanielk1977 } {} 1068e1fb65a0Sdanielk1977 do_test select1-15.3 { 1069e1fb65a0Sdanielk1977 execsql { SELECT 2 IN (SELECT a FROM t1) } 1070e1fb65a0Sdanielk1977 } {1} 107101e61eecSdrh} 107263296052Sdrh 107363296052Sdrh# Crash bug reported on the mailing list on 2012-02-23 107463296052Sdrh# 107563296052Sdrhdo_test select1-16.1 { 107663296052Sdrh catchsql {SELECT 1 FROM (SELECT *)} 107763296052Sdrh} {1 {no tables specified}} 1078b8289a8bSdrh 1079b8289a8bSdrh# 2015-04-17: assertion fix. 1080b8289a8bSdrhdo_catchsql_test select1-16.2 { 1081b8289a8bSdrh SELECT 1 FROM sqlite_master LIMIT 1,#1; 1082b8289a8bSdrh} {1 {near "#1": syntax error}} 1083e1fb65a0Sdanielk1977 1084375afb8bSdrh# 2019-01-16 Chromium bug 922312 1085375afb8bSdrh# Sorting with a LIMIT clause using SRT_EphemTab and SRT_Table 1086375afb8bSdrh# 1087375afb8bSdrhdo_execsql_test select1-17.1 { 1088375afb8bSdrh DROP TABLE IF EXISTS t1; 1089375afb8bSdrh DROP TABLE IF EXISTS t2; 1090375afb8bSdrh CREATE TABLE t1(x); INSERT INTO t1 VALUES(1); 1091375afb8bSdrh CREATE TABLE t2(y,z); INSERT INTO t2 VALUES(2,3); 1092375afb8bSdrh CREATE INDEX t2y ON t2(y); 1093375afb8bSdrh SELECT * FROM t1,(SELECT * FROM t2 WHERE y=2 ORDER BY y,z); 1094375afb8bSdrh} {1 2 3} 1095375afb8bSdrhdo_execsql_test select1-17.2 { 1096375afb8bSdrh SELECT * FROM t1,(SELECT * FROM t2 WHERE y=2 ORDER BY y,z LIMIT 4); 1097375afb8bSdrh} {1 2 3} 1098375afb8bSdrhdo_execsql_test select1-17.3 { 1099375afb8bSdrh SELECT * FROM t1,(SELECT * FROM t2 WHERE y=2 1100375afb8bSdrh UNION ALL SELECT * FROM t2 WHERE y=3 ORDER BY y,z LIMIT 4); 1101375afb8bSdrh} {1 2 3} 1102375afb8bSdrh 110300c12a51Sdrh# 2019-07-24 Ticket https://sqlite.org/src/tktview/c52b09c7f38903b1311 110400c12a51Sdrh# 110500c12a51Sdrhdo_execsql_test select1-18.1 { 110600c12a51Sdrh DROP TABLE IF EXISTS t1; 110700c12a51Sdrh DROP TABLE IF EXISTS t2; 110800c12a51Sdrh CREATE TABLE t1(c); 110900c12a51Sdrh CREATE TABLE t2(x PRIMARY KEY, y); 111000c12a51Sdrh INSERT INTO t1(c) VALUES(123); 111100c12a51Sdrh INSERT INTO t2(x) VALUES(123); 111200c12a51Sdrh SELECT x FROM t2, t1 WHERE x BETWEEN c AND null OR x AND 111300c12a51Sdrh x IN ((SELECT x FROM (SELECT x FROM t2, t1 111400c12a51Sdrh WHERE x BETWEEN (SELECT x FROM (SELECT x COLLATE rtrim 111500c12a51Sdrh FROM t2, t1 WHERE x BETWEEN c AND null 111600c12a51Sdrh OR x AND x IN (c)), t1 WHERE x BETWEEN c AND null 111700c12a51Sdrh OR x AND x IN (c)) AND null 111800c12a51Sdrh OR NOT EXISTS(SELECT -4.81 FROM t1, t2 WHERE x BETWEEN c AND null 111900c12a51Sdrh OR x AND x IN ((SELECT x FROM (SELECT x FROM t2, t1 112000c12a51Sdrh WHERE x BETWEEN (SELECT x FROM (SELECT x BETWEEN c AND null 112100c12a51Sdrh OR x AND x IN (c)), t1 WHERE x BETWEEN c AND null 112200c12a51Sdrh OR x AND x IN (c)) AND null 112300c12a51Sdrh OR x AND x IN (c)), t1 WHERE x BETWEEN c AND null 112400c12a51Sdrh OR x AND x IN (c)))) AND x IN (c) 112500c12a51Sdrh ), t1 WHERE x BETWEEN c AND null 112600c12a51Sdrh OR x AND x IN (c))); 112700c12a51Sdrh} {} 112800c12a51Sdrhdo_execsql_test select1-18.2 { 112900c12a51Sdrh DROP TABLE IF EXISTS t1; 113000c12a51Sdrh DROP TABLE IF EXISTS t2; 113100c12a51Sdrh CREATE TABLE t1(c); 113200c12a51Sdrh CREATE TABLE t2(x PRIMARY KEY, y); 113300c12a51Sdrh INSERT INTO t1(c) VALUES(123); 113400c12a51Sdrh INSERT INTO t2(x) VALUES(123); 113500c12a51Sdrh SELECT x FROM t2, t1 WHERE x BETWEEN c AND (c+1) OR x AND 113600c12a51Sdrh x IN ((SELECT x FROM (SELECT x FROM t2, t1 113700c12a51Sdrh WHERE x BETWEEN (SELECT x FROM (SELECT x COLLATE rtrim 113800c12a51Sdrh FROM t2, t1 WHERE x BETWEEN c AND (c+1) 113900c12a51Sdrh OR x AND x IN (c)), t1 WHERE x BETWEEN c AND (c+1) 114000c12a51Sdrh OR x AND x IN (c)) AND (c+1) 114100c12a51Sdrh OR NOT EXISTS(SELECT -4.81 FROM t1, t2 WHERE x BETWEEN c AND (c+1) 114200c12a51Sdrh OR x AND x IN ((SELECT x FROM (SELECT x FROM t2, t1 114300c12a51Sdrh WHERE x BETWEEN (SELECT x FROM (SELECT x BETWEEN c AND (c+1) 114400c12a51Sdrh OR x AND x IN (c)), t1 WHERE x BETWEEN c AND (c+1) 114500c12a51Sdrh OR x AND x IN (c)) AND (c+1) 114600c12a51Sdrh OR x AND x IN (c)), t1 WHERE x BETWEEN c AND (c+1) 114700c12a51Sdrh OR x AND x IN (c)))) AND x IN (c) 114800c12a51Sdrh ), t1 WHERE x BETWEEN c AND (c+1) 114900c12a51Sdrh OR x AND x IN (c))); 115000c12a51Sdrh} {123} 115100c12a51Sdrhdo_execsql_test select1-18.3 { 115200c12a51Sdrh SELECT 1 FROM t1 WHERE ( 115300c12a51Sdrh SELECT 2 FROM t2 WHERE ( 115400c12a51Sdrh SELECT 3 FROM ( 115500c12a51Sdrh SELECT x FROM t2 WHERE x=c OR x=(SELECT x FROM (VALUES(0))) 115600c12a51Sdrh ) WHERE x>c OR x=c 115700c12a51Sdrh ) 115800c12a51Sdrh ); 115900c12a51Sdrh} {1} 116000c12a51Sdrhdo_execsql_test select1-18.4 { 116100c12a51Sdrh SELECT 1 FROM t1, t2 WHERE ( 116200c12a51Sdrh SELECT 3 FROM ( 116300c12a51Sdrh SELECT x FROM t2 WHERE x=c OR x=(SELECT x FROM (VALUES(0))) 116400c12a51Sdrh ) WHERE x>c OR x=c 116500c12a51Sdrh ); 116600c12a51Sdrh} {1} 116700c12a51Sdrh 116850efa586Sdrh# 2019-12-17 gramfuzz find 116950efa586Sdrh# 1170329eaaf0Sdrhdo_execsql_test select1-19.10 { 117150efa586Sdrh DROP TABLE IF EXISTS t1; 117250efa586Sdrh CREATE TABLE t1(x); 117350efa586Sdrh} {} 1174329eaaf0Sdrhdo_catchsql_test select1-19.20 { 117550efa586Sdrh INSERT INTO t1 117650efa586Sdrh SELECT 1,2,3,4,5,6,7 117750efa586Sdrh UNION ALL SELECT 1,2,3,4,5,6,7 117850efa586Sdrh ORDER BY 1; 117950efa586Sdrh} {1 {table t1 has 1 columns but 7 values were supplied}} 1180329eaaf0Sdrhdo_catchsql_test select1-19.21 { 118150efa586Sdrh INSERT INTO t1 118250efa586Sdrh SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 118350efa586Sdrh UNION ALL SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 118450efa586Sdrh ORDER BY 1; 118550efa586Sdrh} {1 {table t1 has 1 columns but 15 values were supplied}} 118650efa586Sdrh 1187fc705da1Sdrh# 2020-01-01 Found by Yongheng's fuzzer 1188fc705da1Sdrh# 1189fc705da1Sdrhreset_db 1190329eaaf0Sdrhdo_execsql_test select1-20.10 { 1191fc705da1Sdrh CREATE TABLE t1 ( 1192fc705da1Sdrh a INTEGER PRIMARY KEY, 1193fc705da1Sdrh b AS('Y') UNIQUE 1194fc705da1Sdrh ); 1195fc705da1Sdrh INSERT INTO t1(a) VALUES (10); 1196fc705da1Sdrh SELECT * FROM t1 JOIN t1 USING(a,b) 1197fc705da1Sdrh WHERE ((SELECT t1.a FROM t1 AS x GROUP BY b) AND b=0) 1198fc705da1Sdrh OR a = 10; 1199fc705da1Sdrh} {10 Y} 1200329eaaf0Sdrhdo_execsql_test select1-20.20 { 120190996885Sdrh SELECT ifnull(a, max((SELECT 123))), count(a) FROM t1 ; 120290996885Sdrh} {10 1} 120350efa586Sdrh 12049bb612f2Sdrh# 2020-10-02 dbsqlfuzz find 12059bb612f2Sdrhreset_db 1206329eaaf0Sdrhdo_execsql_test select1-21.1 { 12079bb612f2Sdrh CREATE TABLE t1(a IMTEGES PRIMARY KEY,R); 12089bb612f2Sdrh CREATE TABLE t2(x UNIQUE); 12099bb612f2Sdrh CREATE VIEW v1a(z,y) AS SELECT x IS NULL, x FROM t2; 12109bb612f2Sdrh SELECT a,(+a)b,(+a)b,(+a)b,NOT EXISTS(SELECT null FROM t2),CASE z WHEN 487 THEN 992 WHEN 391 THEN 203 WHEN 10 THEN '?k<D Q' END,'' FROM t1 LEFT JOIN v1a ON z=b; 12119bb612f2Sdrh} {} 12129bb612f2Sdrh 12133aadb2e6Sdrhfinish_test 1214