aboutsummaryrefslogtreecommitdiff
path: root/test/cse.test
diff options
context:
space:
mode:
authordan <dan@noemail.net>2020-04-03 19:37:14 +0000
committerdan <dan@noemail.net>2020-04-03 19:37:14 +0000
commitc59b4acf5d188b8a18a83a576ad53b4212f4a62c (patch)
tree0340262c0b7bc8116d59b2d9a2d89f63ef3d725d /test/cse.test
parenta96a69b7dbbb9d933d27af8516cb7c5245956bb0 (diff)
downloadsqlite-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.test40
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