]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Test case and fix for the specific failure of ticket [b351d95f9cd5ef17e9d9dbae].
authordrh <drh@noemail.net>
Tue, 28 Sep 2010 04:14:03 +0000 (04:14 +0000)
committerdrh <drh@noemail.net>
Tue, 28 Sep 2010 04:14:03 +0000 (04:14 +0000)
FossilOrigin-Name: 57789cfe674dbbd4d5e4663774d1e7c541f7bdc4

manifest
manifest.uuid
src/expr.c
test/tkt-b351d95f9.test [new file with mode: 0644]

index 215e3e312a802956fcb50becd8d1218512ae77ff..5c4b667a9d9ea6998ada4005f1dbcf2b41a8001c 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,8 +1,8 @@
 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA1
 
-C Use\sOP_Copy\srather\sthan\sOP_SCopy\sat\sone\spoint\sin\saggregate\sprocessing\swhere\nit\sis\sneeded\sto\savoid\sshallow-copy\smisuse.
-D 2010-09-28T03:55:03
+C Test\scase\sand\sfix\sfor\sthe\sspecific\sfailure\sof\sticket\s[b351d95f9cd5ef17e9d9dbae].
+D 2010-09-28T04:14:04
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in c599a15d268b1db2aeadea19df2adc3bf2eb6bee
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -130,7 +130,7 @@ F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac
 F src/ctime.c 4f3aadad62c6c9f0d4e5a96718516ac4e3c598df
 F src/date.c 5dd8448a0bfea8d31fb14cff487d0c06ff8c8b20
 F src/delete.c 7ed8a8c8b5f748ece92df173d7e0f7810c899ebd
-F src/expr.c e211e57c9667630971c285bb9b3e58a8986e8677
+F src/expr.c 7b45c50fc28df4d97db66900f1f9f04cf6db956d
 F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb
 F src/fkey.c 17950a28f28b23e8ad3feaac5fc88c324d2f600a
 F src/func.c caa6c5134106d95cced4db80ce3fdcdde4f6c8d4
@@ -670,6 +670,7 @@ F test/tkt-78e04e52ea.test fb5430c675e708f5cbafdf3e7e5593da5145a527
 F test/tkt-80e031a00f.test 9a154173461a4dbe2de49cda73963e04842d52f7
 F test/tkt-94c04eaadb.test be5ea61cb04dfdc047d19b5c5a9e75fa3da67a7f
 F test/tkt-9d68c883.test 458f7d82a523d7644b54b497c986378a7d8c8b67
+F test/tkt-b351d95f9.test d14a503c414c5c58fdde3e80f9a3cfef986498c0
 F test/tkt-cbd054fa6b.test f14f97ea43662e6f70c9e63287081e8be5d9d589
 F test/tkt-d11f09d36e.test fb44f7961aa6d4b632fb7b9768239832210b5fc7
 F test/tkt-d82e3f3721.test 731359dfdcdb36fea0559cd33fec39dd0ceae8e6
@@ -870,14 +871,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
-P d0342f4bb9d25dd1dba3957778faa993fb9cc81c
-R 16dd6c78a696d651854b421ee534566c
+P a5eefd5239bf5b4f9d0bdfb312f5b33c0a196178
+R 36856028231c92221c652d29d4159436
 U drh
-Z 4a453c5f4cf28cf528b0f5f5e2516331
+Z f0e3dfbf24a2c49fc97160b41987fc03
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.6 (GNU/Linux)
 
-iD8DBQFMoWcboxKgR168RlERAqEbAJ9Sj7+X+bLVtX69M2DquI9xnDygMwCeIAg1
-Rsdjw2kXv6T6/m0kOdhbDK8=
-=iNuQ
+iD8DBQFMoWuSoxKgR168RlERAnDOAJwOLuUj1ayfQejwg1yHNLdmppbBugCfYcmv
+yrg5uSJhrvomshkiSCVsgBk=
+=6EL+
 -----END PGP SIGNATURE-----
index a2fa6ceb473aa15a94193ee39e065577062fcf82..817917faff52d07af3bb5b9179cc2dd5cd44c7d5 100644 (file)
@@ -1 +1 @@
-a5eefd5239bf5b4f9d0bdfb312f5b33c0a196178
\ No newline at end of file
+57789cfe674dbbd4d5e4663774d1e7c541f7bdc4
\ No newline at end of file
index 5da3d35eab069a4ba710c07703d5ab7dfa47101b..956938ae25ac0f18ad7ea18908ccd7bb2ef74eac 100644 (file)
@@ -2774,6 +2774,11 @@ int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target){
         opCompare.op = TK_EQ;
         opCompare.pLeft = &cacheX;
         pTest = &opCompare;
+        /* Ticket b351d95f9cd5ef17e9d9dbae18f5ca8611190001:
+        ** The value in regFree1 might get SCopy-ed into the file result.
+        ** So make sure that the regFree1 register is not reused for other
+        ** purposes and possibly overwritten.  */
+        regFree1 = 0;
       }
       for(i=0; i<nExpr; i=i+2){
         sqlite3ExprCachePush(pParse);
diff --git a/test/tkt-b351d95f9.test b/test/tkt-b351d95f9.test
new file mode 100644 (file)
index 0000000..5bd5ee4
--- /dev/null
@@ -0,0 +1,47 @@
+# 2010 September 28
+#
+# The author disclaims copyright to this source code.  In place of
+# a legal notice, here is a blessing:
+#
+#    May you do good and not evil.
+#    May you find forgiveness for yourself and forgive others.
+#    May you share freely, never taking more than you give.
+#
+#***********************************************************************
+# This file implements regression tests for SQLite library. Specifically,
+# it tests that ticket [b351d95f9cd5ef17e9d9dbae18f5ca8611190001] has been
+# resolved.
+#
+
+set testdir [file dirname $argv0]
+source $testdir/tester.tcl
+source $testdir/lock_common.tcl
+source $testdir/malloc_common.tcl
+
+do_test tkt-b351d95.1 {
+  execsql {
+    CREATE table t1(a,b);
+    INSERT INTO t1 VALUES('name1','This is a test');
+    INSERT INTO t1 VALUES('name2','xyz');
+    CREATE TABLE t2(x,y);
+    INSERT INTO t2 SELECT a, CASE b WHEN 'xyz' THEN null ELSE b END FROM t1;
+    SELECT x, y FROM t2 ORDER BY x;
+  }
+} {name1 {This is a test} name2 {}}
+
+do_test tkt-b351d95.2 {
+  execsql {
+    DELETE FROM t2;
+    INSERT INTO t2 SELECT a, coalesce(b,a) FROM t1;
+    SELECT x, y FROM t2 ORDER BY x;
+  }
+} {name1 {This is a test} name2 xyz}
+do_test tkt-b351d95.3 {
+  execsql {
+    DELETE FROM t2;
+    INSERT INTO t2 SELECT a, coalesce(b,a) FROM t1;
+    SELECT x, y BETWEEN 'xy' AND 'xz' FROM t2 ORDER BY x;
+  }
+} {name1 0 name2 1}
+
+finish_test