1*c3b48848Sdan# 2021 May 27 2*c3b48848Sdan# 3*c3b48848Sdan# The author disclaims copyright to this source code. In place of 4*c3b48848Sdan# a legal notice, here is a blessing: 5*c3b48848Sdan# 6*c3b48848Sdan# May you do good and not evil. 7*c3b48848Sdan# May you find forgiveness for yourself and forgive others. 8*c3b48848Sdan# May you share freely, never taking more than you give. 9*c3b48848Sdan# 10*c3b48848Sdan#*********************************************************************** 11*c3b48848Sdan# Tests focused on the "constant propagation" that occurs within the 12*c3b48848Sdan# WHERE clause of a SELECT statemente. 13*c3b48848Sdan# 14*c3b48848Sdan 15*c3b48848Sdanset testdir [file dirname $argv0] 16*c3b48848Sdansource $testdir/tester.tcl 17*c3b48848Sdansource $testdir/malloc_common.tcl 18*c3b48848Sdanset testprefix whereM 19*c3b48848Sdan 20*c3b48848Sdan 21*c3b48848Sdando_execsql_test 1.0 { 22*c3b48848Sdan CREATE TABLE t1(a, b INTEGER, c TEXT, d REAL, e BLOB); 23*c3b48848Sdan INSERT INTO t1 VALUES(10.0, 10.0, 10.0, 10.0, 10.0); 24*c3b48848Sdan SELECT * FROM t1; 25*c3b48848Sdan} { 26*c3b48848Sdan 10.0 10 10.0 10.0 10.0 27*c3b48848Sdan} 28*c3b48848Sdan 29*c3b48848Sdando_execsql_test 1.1.1 { 30*c3b48848Sdan SELECT a=10, a = '10.0', a LIKE '10.0' FROM t1; 31*c3b48848Sdan} {1 0 1} 32*c3b48848Sdando_execsql_test 1.1.2 { 33*c3b48848Sdan SELECT count(*) FROM t1 WHERE a=10 AND a = '10.0' 34*c3b48848Sdan} {0} 35*c3b48848Sdando_execsql_test 1.1.3 { 36*c3b48848Sdan SELECT count(*) FROM t1 WHERE a=10 AND a LIKE '10.0' 37*c3b48848Sdan} {1} 38*c3b48848Sdando_execsql_test 1.1.4 { 39*c3b48848Sdan SELECT count(*) FROM t1 WHERE a='10.0' AND a LIKE '10.0' 40*c3b48848Sdan} {0} 41*c3b48848Sdan 42*c3b48848Sdando_execsql_test 1.2.1 { 43*c3b48848Sdan SELECT b=10, b = '10.0', b LIKE '10.0', b LIKE '10' FROM t1; 44*c3b48848Sdan} {1 1 0 1} 45*c3b48848Sdando_execsql_test 1.2.2 { 46*c3b48848Sdan SELECT count(*) FROM t1 WHERE b=10 AND b = '10.0' 47*c3b48848Sdan} {1} 48*c3b48848Sdando_execsql_test 1.2.3 { 49*c3b48848Sdan SELECT count(*) FROM t1 WHERE b=10 AND b LIKE '10.0' 50*c3b48848Sdan} {0} 51*c3b48848Sdando_execsql_test 1.2.4 { 52*c3b48848Sdan SELECT count(*) FROM t1 WHERE b='10.0' AND b LIKE '10.0' 53*c3b48848Sdan} {0} 54*c3b48848Sdando_execsql_test 1.2.3 { 55*c3b48848Sdan SELECT count(*) FROM t1 WHERE b=10 AND b LIKE '10' 56*c3b48848Sdan} {1} 57*c3b48848Sdando_execsql_test 1.2.4 { 58*c3b48848Sdan SELECT count(*) FROM t1 WHERE b='10.0' AND b LIKE '10' 59*c3b48848Sdan} {1} 60*c3b48848Sdan 61*c3b48848Sdando_execsql_test 1.3.1 { 62*c3b48848Sdan SELECT c=10, c = 10.0, c = '10.0', c LIKE '10.0' FROM t1; 63*c3b48848Sdan} {0 1 1 1} 64*c3b48848Sdando_execsql_test 1.3.2 { 65*c3b48848Sdan SELECT count(*) FROM t1 WHERE c=10 AND c = '10.0' 66*c3b48848Sdan} {0} 67*c3b48848Sdando_execsql_test 1.3.3 { 68*c3b48848Sdan SELECT count(*) FROM t1 WHERE c=10 AND c LIKE '10.0' 69*c3b48848Sdan} {0} 70*c3b48848Sdando_execsql_test 1.3.4 { 71*c3b48848Sdan SELECT count(*) FROM t1 WHERE c='10.0' AND c LIKE '10.0' 72*c3b48848Sdan} {1} 73*c3b48848Sdando_execsql_test 1.3.5 { 74*c3b48848Sdan SELECT count(*) FROM t1 WHERE c=10.0 AND c = '10.0' 75*c3b48848Sdan} {1} 76*c3b48848Sdando_execsql_test 1.3.6 { 77*c3b48848Sdan SELECT count(*) FROM t1 WHERE c=10.0 AND c LIKE '10.0' 78*c3b48848Sdan} {1} 79*c3b48848Sdan 80*c3b48848Sdando_execsql_test 1.4.1 { 81*c3b48848Sdan SELECT d=10, d = 10.0, d = '10.0', d LIKE '10.0', d LIKE '10' FROM t1; 82*c3b48848Sdan} {1 1 1 1 0} 83*c3b48848Sdando_execsql_test 1.4.2 { 84*c3b48848Sdan SELECT count(*) FROM t1 WHERE d=10 AND d = '10.0' 85*c3b48848Sdan} {1} 86*c3b48848Sdando_execsql_test 1.4.3 { 87*c3b48848Sdan SELECT count(*) FROM t1 WHERE d=10 AND d LIKE '10.0' 88*c3b48848Sdan} {1} 89*c3b48848Sdando_execsql_test 1.4.4 { 90*c3b48848Sdan SELECT count(*) FROM t1 WHERE d='10.0' AND d LIKE '10.0' 91*c3b48848Sdan} {1} 92*c3b48848Sdando_execsql_test 1.4.5 { 93*c3b48848Sdan SELECT count(*) FROM t1 WHERE d='10' AND d LIKE '10.0' 94*c3b48848Sdan} {1} 95*c3b48848Sdan 96*c3b48848Sdando_execsql_test 1.5.1 { 97*c3b48848Sdan SELECT e=10, e = '10.0', e LIKE '10.0', e LIKE '10' FROM t1; 98*c3b48848Sdan} {1 0 1 0} 99*c3b48848Sdando_execsql_test 1.5.2 { 100*c3b48848Sdan SELECT count(*) FROM t1 WHERE e=10 AND e = '10.0' 101*c3b48848Sdan} {0} 102*c3b48848Sdando_execsql_test 1.5.3 { 103*c3b48848Sdan SELECT count(*) FROM t1 WHERE e=10 AND e LIKE '10.0' 104*c3b48848Sdan} {1} 105*c3b48848Sdando_execsql_test 1.5.4 { 106*c3b48848Sdan SELECT count(*) FROM t1 WHERE e='10.0' AND e LIKE '10.0' 107*c3b48848Sdan} {0} 108*c3b48848Sdando_execsql_test 1.5.5 { 109*c3b48848Sdan SELECT count(*) FROM t1 WHERE e=10.0 AND e LIKE '10.0' 110*c3b48848Sdan} {1} 111*c3b48848Sdan 112*c3b48848Sdanfinish_test 113