-C Fix\sOS/2\scompilation\sfor\spre-C99\scompilers.\s(CVS\s5150)
-D 2008-05-20T19:08:54
+C Fix\sthe\sVACUUM\scommand\sso\sthat\sit\sdoes\snot\smodify\sthe\schanges\scounts\nreported\sby\ssqlite3_changes()\sor\ssqlite3_total_changes().\s\sUpdate\sdocumentation\non\ssqlite3_changes()\sand\ssqlite3_total_changes()\sto\sstate\sthat\n"DELETE\sFROM\stable"\srecords\sa\schange\scount\sof\szero.\s(CVS\s5151)
+D 2008-05-21T13:44:14
F Makefile.arm-wince-mingw32ce-gcc ac5f7b2cef0cd850d6f755ba6ee4ab961b1fadf7
F Makefile.in 79aeba12300a54903f1b1257c1e7c190234045dd
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
F src/random.c 2b2db2de4ab491f5a14d3480466f8f4b5a5db74a
F src/select.c da43ce3080112aa77863e9c570c1df19a892acb8
F src/shell.c a12ea645271b7876c8f080146f48e20b00d367ec
-F src/sqlite.h.in b953ce955c65c07a024212ff76863a5f98c33c79
+F src/sqlite.h.in 96b68b840683341d0a312bb7211570335842d271
F src/sqlite3ext.h faacd0e6a81aabee0861c6d7883c9172e74ef5b3
F src/sqliteInt.h 70a2b0bf856bbdb86b10d994ea863f6591ab7144
F src/sqliteLimit.h f435e728c6b620ef7312814d660a81f9356eb5c8
F src/update.c 2d7143b9014e955509cc4f323f9a9584fb898f34
F src/utf.c 8c94fa10efc78c2568d08d436acc59df4df7191b
F src/util.c 43277088f8fea4109a640aa46731b8752c3fb4a7
-F src/vacuum.c c3b2b70677f874102b8753bf494c232e777f3998
+F src/vacuum.c a5c289e561ed72283e97d2485491986bc7d684eb
F src/vdbe.c 25a362a4fdd5ff2797db0e20a9cf4300e053891e
F src/vdbe.h f4bb70962d9c13e0f65b215c90e8acea1ae6e8ee
F src/vdbeInt.h ede1a31cfa74d4718f41da491bd1d2b3abc137fc
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
-P 894085a59cdc60c34c8a3eb560d98bcb4a087cb1
-R 9cd012b9b6638413801262c433fecb94
-U pweilbacher
-Z d561cc78f2b3ec86435123f580dbcd83
+P de8e67182d8f9d1f0b215da93a396b9467604a50
+R 5e43d7445a41e487e91a32f3f92251f9
+U drh
+Z f00defe86398257c2a438618ab5ea19b
-de8e67182d8f9d1f0b215da93a396b9467604a50
\ No newline at end of file
+f5d61d7d982b58accaf33df4362ce4a5eb79307e
\ No newline at end of file
** the version number) and changes its name to "sqlite3.h" as
** part of the build process.
**
-** @(#) $Id: sqlite.h.in,v 1.315 2008/05/20 18:43:38 drh Exp $
+** @(#) $Id: sqlite.h.in,v 1.316 2008/05/21 13:44:14 drh Exp $
*/
#ifndef _SQLITE3_H_
#define _SQLITE3_H_
**
** INVARIANTS:
**
-** {F12241} The [sqlite3_changes()] function returns the number of
+** {F12241} The [sqlite3_changes()] function shall return the number of
** row changes caused by the most recent INSERT, UPDATE,
** or DELETE statement on the same database connection and
-** within the same trigger context, or zero if there have
+** within the same or higher trigger context, or zero if there have
** not been any qualifying row changes.
**
+** {F12243} Statements of the form "DELETE FROM tablename" with no
+** WHERE clause shall cause subsequent calls to
+** [sqlite3_changes()] to return zero, regardless of the
+** number of rows originally in the table.
+**
** LIMITATIONS:
**
** {U12252} If a separate thread makes changes on the same database connection
** trigger context, since the database connection was
** created.
**
+** {F12263} Statements of the form "DELETE FROM tablename" with no
+** WHERE clause shall not change the value returned
+** by [sqlite3_total_changes()]
+**
** LIMITATIONS:
**
** {U12264} If a separate thread makes changes on the same database connection
** Most of the code in this file may be omitted by defining the
** SQLITE_OMIT_VACUUM macro.
**
-** $Id: vacuum.c,v 1.78 2008/04/30 16:38:23 drh Exp $
+** $Id: vacuum.c,v 1.79 2008/05/21 13:44:14 drh Exp $
*/
#include "sqliteInt.h"
#include "vdbeInt.h"
Btree *pTemp; /* The temporary database we vacuum into */
char *zSql = 0; /* SQL statements */
int saved_flags; /* Saved value of the db->flags */
+ int saved_nChange; /* Saved value of db->nChange */
+ int saved_nTotalChange; /* Saved value of db->nTotalChange */
Db *pDb = 0; /* Database to detach at end of vacuum */
int nRes;
/* Save the current value of the write-schema flag before setting it. */
saved_flags = db->flags;
+ saved_nChange = db->nChange;
+ saved_nTotalChange = db->nTotalChange;
db->flags |= SQLITE_WriteSchema | SQLITE_IgnoreChecks;
if( !db->autoCommit ){
end_of_vacuum:
/* Restore the original value of db->flags */
db->flags = saved_flags;
+ db->nChange = saved_nChange;
+ db->nTotalChange = saved_nTotalChange;
/* Currently there is an SQL level transaction open on the vacuum
** database. No locks are held on any other files (since the main file