diff options
author | dan <dan@noemail.net> | 2020-04-03 19:37:14 +0000 |
---|---|---|
committer | dan <dan@noemail.net> | 2020-04-03 19:37:14 +0000 |
commit | c59b4acf5d188b8a18a83a576ad53b4212f4a62c (patch) | |
tree | 0340262c0b7bc8116d59b2d9a2d89f63ef3d725d /test/cse.test | |
parent | a96a69b7dbbb9d933d27af8516cb7c5245956bb0 (diff) | |
download | sqlite-c59b4acf5d188b8a18a83a576ad53b4212f4a62c.tar.gz sqlite-c59b4acf5d188b8a18a83a576ad53b4212f4a62c.zip |
Avoid factoring out constant expressions on the LHS of an IN(...) operator, as the IN(...) operation may affect the affinity of these values.
FossilOrigin-Name: 98d56b4a34fddcbaecd953a045ae0270b4d78c1edf34cc73522fb4e12743af80
Diffstat (limited to 'test/cse.test')
-rw-r--r-- | test/cse.test | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/test/cse.test b/test/cse.test index 57cdef5ac..3912bc326 100644 --- a/test/cse.test +++ b/test/cse.test @@ -18,6 +18,7 @@ set testdir [file dirname $argv0] source $testdir/tester.tcl +set testprefix cse do_test cse-1.1 { execsql { @@ -157,4 +158,43 @@ for {set i 1} {$i<100} {incr i} { } $answer } +#------------------------------------------------------------------------- +# Ticket fd1bda016d1a +# +reset_db +do_execsql_test 3.0 { + CREATE TABLE t1(a TEXT, b); + INSERT INTO t1 VALUES('hello', 0); + INSERT INTO t1 VALUES('world', 0); + + CREATE TABLE t2(x TEXT); + INSERT INTO t2 VALUES('hello'); + INSERT INTO t2 VALUES('world'); + + CREATE TABLE t3(y); + INSERT INTO t3 VALUES(1000); +} {} + +do_execsql_test 3.1 { + SELECT 1000 = y FROM t3 +} {1} + +do_execsql_test 3.2 { + SELECT 1000 IN (SELECT x FROM t2), 1000 = y FROM t3 +} {0 1} + +do_execsql_test 3.3 { + SELECT 0 IN (SELECT a), (SELECT a LIMIT 0) FROM t1 +} {0 {} 0 {}} + +do_execsql_test 3.4 { + SELECT 0 IN (SELECT a) FROM t1 WHERE a = 'hello' OR (SELECT a LIMIT 0); +} {0} + +do_execsql_test 3.5 { + CREATE TABLE v0(v1 VARCHAR0); + INSERT INTO v0 VALUES(2), (3); + SELECT 0 IN(SELECT v1) FROM v0 WHERE v1 = 2 OR(SELECT v1 LIMIT 0); +} {0} + finish_test |