]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Disable the truncate optimization if there is a preupdate hook.
authordrh <drh@noemail.net>
Wed, 30 Mar 2011 17:25:35 +0000 (17:25 +0000)
committerdrh <drh@noemail.net>
Wed, 30 Mar 2011 17:25:35 +0000 (17:25 +0000)
FossilOrigin-Name: d051694e024c590e4687cae1368f900799b7442d

manifest
manifest.uuid
src/delete.c
test/hook.test

index 35fb6c6035c8ca24343ae53bda9c921aca1d2047..6ebb88896d74c65fd8f0558a354ad12800f709c3 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\sdocumentation\sto\sthe\ssqlite3_preupdate_hook()\sinterface\sand\sits\srelatives.
-D 2011-03-30T17:07:47.319
+C Disable\sthe\struncate\soptimization\sif\sthere\sis\sa\spreupdate\shook.
+D 2011-03-30T17:25:35.303
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 27701a1653595a1f2187dc61c8117e00a6c1d50f
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -138,7 +138,7 @@ F src/callback.c 5069f224882cbdccd559f591271d28d7f37745bc
 F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac
 F src/ctime.c 52ff72f966cee3087e0138a3ec69371c22be3c01
 F src/date.c 1548fdac51377e4e7833251de878b4058c148e1b
-F src/delete.c c55748a1628b54c8785de0ff4bd9cbe27fe111cb
+F src/delete.c 4aebb9ccea435701c137bf25e07fe93ad8e9346d
 F src/expr.c 00817c672af554321fd67c44325afd7cef0e4648
 F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb
 F src/fkey.c 418b840007c873975fd0d071746d952f8bca20ce
@@ -485,7 +485,7 @@ F test/fuzz2.test 207d0f9d06db3eaf47a6b7bfc835b8e2fc397167
 F test/fuzz3.test aec64345184d1662bd30e6a17851ff659d596dc5
 F test/fuzz_common.tcl a87dfbb88c2a6b08a38e9a070dabd129e617b45b
 F test/fuzz_malloc.test dd7001ac86d09c154a7dff064f4739c60e2b312c
-F test/hook.test 14b2439b878c9aae03a3684cba717be4bfdcc1c1
+F test/hook.test 29a0b6a18111835bdca827f62a7975a8e30a1dd5
 F test/icu.test 70df4faca133254c042d02ae342c0a141f2663f4
 F test/in.test 19b642bb134308980a92249750ea4ce3f6c75c2d
 F test/in2.test 5d4c61d17493c832f7d2d32bef785119e87bde75
@@ -929,7 +929,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
-P b11d941e92897663da46160185e6e305d4e28fe6
-R e37cfb6574f4ec186f2c67ceafeda97a
+P 8180f2881fa970429e28d4f3258a56cfaabbcabd
+R 7bdc0a7971e68baabbe152ea44f74530
 U drh
-Z ede135d544f338afa66b4a4b2184647f
+Z a923e72061e5acce879b548f79bb9c49
index 9a70869e00c2dda4da12b3c38d2a729e3a38b548..15b385f496168d6c564d5a12845b89c7b4fed870 100644 (file)
@@ -1 +1 @@
-8180f2881fa970429e28d4f3258a56cfaabbcabd
\ No newline at end of file
+d051694e024c590e4687cae1368f900799b7442d
\ No newline at end of file
index a5d00263b55ec7a10079111dea7687f71041f4c7..71a243d5a6d92e4e90adaf05e7e4d9819d11ed38 100644 (file)
@@ -338,8 +338,13 @@ void sqlite3DeleteFrom(
   /* Special case: A DELETE without a WHERE clause deletes everything.
   ** It is easier just to erase the whole table. Prior to version 3.6.5,
   ** this optimization caused the row change count (the value returned by 
-  ** API function sqlite3_count_changes) to be set incorrectly.  */
-  if( rcauth==SQLITE_OK && pWhere==0 && !pTrigger && !IsVirtual(pTab) 
+  ** API function sqlite3_count_changes) to be set incorrectly.
+  */
+  if( rcauth==SQLITE_OK
+   && pWhere==0
+   && !pTrigger
+   && !IsVirtual(pTab) 
+   && db->xPreUpdateCallback==0
    && 0==sqlite3FkRequired(pParse, pTab, 0, 0)
   ){
     assert( !isView );
index 016569f0aec6b9842fd8e3a3bf49422f61430868..5cceaf9abf3e277432b65a19b6cfb667595ffa27 100644 (file)
@@ -481,10 +481,10 @@ do_preupdate_test 7.2.1 {
 do_preupdate_test 7.2.2 {
   DELETE FROM t1
 } {
-  DELETE main t3 1 1   1 1
-  DELETE main t3 2 2   b a
-  DELETE main t3 4 4   a b
-  DELETE main t3 5 5   c d
+  DELETE main t1 1 1   1 1
+  DELETE main t1 2 2   b a
+  DELETE main t1 4 4   a b
+  DELETE main t1 5 5   c d
 }
 
 do_execsql_test 7.3.0 { 
@@ -765,4 +765,3 @@ do_preupdate_test 7.6.4 {
 }
 
 finish_test
-