Avoid factoring single-instruction constants that end up getting replaced
by an SCopy instruction. (CVS 4952)
FossilOrigin-Name: e84ff57b6217afa84d60547dcc3a270b5e116818
diff --git a/test/cse.test b/test/cse.test
index 836e15a..ce78c27 100644
--- a/test/cse.test
+++ b/test/cse.test
@@ -13,7 +13,7 @@
# factoring constant expressions out of loops and for
# common subexpression eliminations.
#
-# $Id: cse.test,v 1.4 2008/04/01 15:06:34 drh Exp $
+# $Id: cse.test,v 1.5 2008/04/01 18:04:11 drh Exp $
#
set testdir [file dirname $argv0]
@@ -49,11 +49,31 @@
SELECT CASE a WHEN 1 THEN b WHEN 2 THEN c ELSE d END, b, c, d FROM t1
}
} {11 11 12 13 22 21 22 23}
-do_test cse-1.6 {
+do_test cse-1.6.1 {
execsql {
SELECT CASE b WHEN 11 THEN -b WHEN 21 THEN -c ELSE -d END, b, c, d FROM t1
}
} {-11 11 12 13 -22 21 22 23}
+do_test cse-1.6.2 {
+ execsql {
+ SELECT CASE b+1 WHEN c THEN d WHEN e THEN f ELSE 999 END, b, c, d FROM t1
+ }
+} {13 11 12 13 23 21 22 23}
+do_test cse-1.6.3 {
+ execsql {
+ SELECT CASE WHEN b THEN d WHEN e THEN f ELSE 999 END, b, c, d FROM t1
+ }
+} {13 11 12 13 23 21 22 23}
+do_test cse-1.6.4 {
+ execsql {
+ SELECT b, c, d, CASE WHEN b THEN d WHEN e THEN f ELSE 999 END FROM t1
+ }
+} {11 12 13 13 21 22 23 23}
+do_test cse-1.6.5 {
+ execsql {
+ SELECT b, c, d, CASE WHEN 0 THEN d WHEN e THEN f ELSE 999 END FROM t1
+ }
+} {11 12 13 15 21 22 23 25}
do_test cse-1.7 {
execsql {
SELECT a, -a, ~a, NOT a, NOT NOT a, a-a, a+a, a*a, a/a, a FROM t1
@@ -89,17 +109,11 @@
}
} {21 2 21 22 23 24 14 14 13 12 11 1}
do_test cse-1.13 {
- explain {
- SELECT upper(b), typeof(b), b FROM t1
- }
execsql {
SELECT upper(b), typeof(b), b FROM t1
}
} {11 integer 11 21 integer 21}
do_test cse-1.14 {
- explain {
- SELECT b, typeof(b), upper(b), typeof(b), b FROM t1
- }
execsql {
SELECT b, typeof(b), upper(b), typeof(b), b FROM t1
}