From: drh Date: Sun, 8 Feb 2004 18:07:34 +0000 (+0000) Subject: Perpare for the 2.8.12 release. (CVS 1212) X-Git-Tag: version-3.6.10~4856 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f603871326bbde4cf05eb701042e4612e141c201;p=thirdparty%2Fsqlite.git Perpare for the 2.8.12 release. (CVS 1212) FossilOrigin-Name: 93ccd1b1d63b5b914b84b0463f2267bcfaadafa3 --- diff --git a/Makefile.in b/Makefile.in index e9420fe7f7..226eed2144 100644 --- a/Makefile.in +++ b/Makefile.in @@ -143,6 +143,7 @@ TESTSRC = \ $(TOP)/src/test2.c \ $(TOP)/src/test3.c \ $(TOP)/src/test4.c \ + $(TOP)/src/vdbe.c \ $(TOP)/src/md5.c # Header files used by all library source files. diff --git a/VERSION b/VERSION index 38bc52136e..56f5e1b70f 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.8.11 +2.8.12 diff --git a/main.mk b/main.mk index 7be90d844c..840b336981 100644 --- a/main.mk +++ b/main.mk @@ -113,6 +113,7 @@ TESTSRC = \ $(TOP)/src/test2.c \ $(TOP)/src/test3.c \ $(TOP)/src/test4.c \ + $(TOP)/src/vdbe.c \ $(TOP)/src/md5.c # Header files used by all library source files. diff --git a/manifest b/manifest index add0dbc7aa..e3aa010714 100644 --- a/manifest +++ b/manifest @@ -1,9 +1,9 @@ -C Fix\sa\sbug\sin\sthe\sVDBE\sthat\soccurs\swhen\sa\sCreateTable\sor\sCreateIndex\sfails.\s(CVS\s1211) -D 2004-02-08T06:17:20 -F Makefile.in 0515ff9218ad8d5a8f6220f0494b8ef94c67013b +C Perpare\sfor\sthe\s2.8.12\srelease.\s(CVS\s1212) +D 2004-02-08T18:07:35 +F Makefile.in cfd75c46b335881999333a9e4b982fa8491f200b F Makefile.linux-gcc b86a99c493a5bfb402d1d9178dcdc4bd4b32f906 F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd -F VERSION a0fc82af9cd12412056d37a3954fcd80f1df56ee +F VERSION 8323c161a43094e2340bc1e57b99dacf10176301 F aclocal.m4 ff32919e75f42b2d4213fe3c6f79dd0fe47f7769 F art/SQLite.eps 9b43cc99cfd2be687d386faea6862ea68d6a72b2 F art/SQLite.gif 1bbb94484963f1382e27e1c5e86dd0c1061eba2b @@ -16,7 +16,7 @@ F doc/report1.txt a031aaf37b185e4fa540223cb516d3bccec7eeac F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895 F libtool bbbea7d79c23323e4100103836028e4fad0d9242 F ltmain.sh abfb9387049fff6996afc6e325736597795baf11 -F main.mk c97237fc95f38e9041a3fbf5128efa6e23a3de77 +F main.mk d88d460c46a12ceb33daad7a7a8725e4bc2dbaad F publish.sh fe03c30027c68d610a1b51c282feb24def55ce93 F spec.template a38492f1c1dd349fc24cb0565e08afc53045304b F sqlite.1 83f4a9d37bdf2b7ef079a82d54eaf2e3509ee6ea @@ -40,7 +40,7 @@ F src/main.c 808ea1bda0798f4a714479aee8289d65f04cf29b F src/md5.c fe4f9c9c6f71dfc26af8da63e4d04489b1430565 F src/os.c 681ec36217bc7c795d55d9a63ff79a8614ddee8c F src/os.h 8d02b622153d2df442da1ec37cdd6b1bd9804a25 -F src/pager.c f2be6a1f691b4bc4b2e30d93540ceff72d38ac90 +F src/pager.c 7258db4fb61fa2df7a1c961f16d23a6fc0055833 F src/pager.h 5da62c83443f26b1792cfd72c96c422f91aadd31 F src/parse.y 7a121554c0c0c0150a77ab05417b01fa44813ac4 F src/pragma.c 89d62c31c6f0a43376fe8d20549b87a6d30c467a @@ -52,7 +52,7 @@ F src/sqlite.h.in 1798588cab21ebf9fac3aad7fc1539b396c1f91d F src/sqliteInt.h c5b727d5d07b88654c204c0fc1ae79c9f635a008 F src/table.c d845cb101b5afc1f7fea083c99e3d2fa7998d895 F src/tclsqlite.c 30afbb2e446d193d867e49fb0ca5ed84f1e0867f -F src/test1.c e8652055d04d241d4fb437b5c33ff07d9f13b4b4 +F src/test1.c 56e9a156df3ad5e4e98df776776e963effc727f7 F src/test2.c 5014337d8576b731cce5b5a14bec4f0daf432700 F src/test3.c 30985ebdfaf3ee1462a9b0652d3efbdc8d9798f5 F src/test4.c dcbbbb382626fd466a7c46907f74db35fc8bad64 @@ -61,7 +61,7 @@ F src/trigger.c ce83e017b407d046e909d05373d7f8ee70f9f7f9 F src/update.c 24260b4fda00c9726d27699a0561d53c0dccc397 F src/util.c 64995b5949a5d377629ffd2598747bc771cade1e F src/vacuum.c 77485a64a6e4e358170f150fff681c1624a092b0 -F src/vdbe.c d2b7f2a2c0a966feffb67ef326d587e2321c1867 +F src/vdbe.c 81aee8e52dad45d11d6bf1217d24dbb11652e4cb F src/vdbe.h 3957844e46fea71fd030e78f6a3bd2f7e320fb43 F src/vdbeInt.h 8a3baf749115cba81a810b7a52208aef055eda7b F src/vdbeaux.c c55d87d6658487e87ef09ca80c1aa2f314024fed @@ -163,7 +163,7 @@ F www/arch.png 82ef36db1143828a7abc88b1e308a5f55d4336f4 F www/arch.tcl 44b589fc01d6829d43447ab40588b00aec5b9734 F www/audit.tcl 90e09d580f79c7efec0c7d6f447b7ec5c2dce5c0 F www/c_interface.tcl 17d8bd9e7b4fbdca47c30c8b9bcb728c351d55c0 -F www/changes.tcl b9aa2cfe7ff8a29e6313ca48cd90a0763ce1da44 +F www/changes.tcl ca9871eb52fa669e40f2052ab45154dfe0b72985 F www/conflict.tcl 81dd21f9a679e60aae049e9dd8ab53d59570cda2 F www/datatypes.tcl 0fe2b810f114a909b844e50ad37a25e6ed8c7271 F www/download.tcl 0932d7f4f0e8b2adbbd22fac73132f86e43ab4a9 @@ -183,7 +183,7 @@ F www/sqlite.tcl 3c83b08cf9f18aa2d69453ff441a36c40e431604 F www/tclsqlite.tcl b9271d44dcf147a93c98f8ecf28c927307abd6da F www/vdbe.tcl 9b9095d4495f37697fd1935d10e14c6015e80aa1 F www/whentouse.tcl a8335bce47cc2fddb07f19052cb0cb4d9129a8e4 -P 597a59a72d662b291fb09a069547efd08aa5adb1 -R e031f9b559b58ac5ede32d6e4ee545cd +P 42cfd541dcc31d1ef92387e3fd2346db61d0ecbd +R 7f0b69bb3003a648f1aaf93ee37865e5 U drh -Z 3fc02d1462a612ca2f5a70237bff30cb +Z 3dbca3e8ab039bdc91223bb4da79a5c6 diff --git a/manifest.uuid b/manifest.uuid index 22cf9a0311..58dd874b38 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -42cfd541dcc31d1ef92387e3fd2346db61d0ecbd \ No newline at end of file +93ccd1b1d63b5b914b84b0463f2267bcfaadafa3 \ No newline at end of file diff --git a/src/pager.c b/src/pager.c index 4031800bdb..e504386dce 100644 --- a/src/pager.c +++ b/src/pager.c @@ -18,7 +18,7 @@ ** file simultaneously, or one process from reading the database while ** another is writing. ** -** @(#) $Id: pager.c,v 1.94 2004/02/08 06:05:46 drh Exp $ +** @(#) $Id: pager.c,v 1.95 2004/02/08 18:07:35 drh Exp $ */ #include "os.h" /* Must be first to enable large file support */ #include "sqliteInt.h" @@ -84,6 +84,19 @@ static Pager *mainPager = 0; ** Each in-memory image of a page begins with the following header. ** This header is only visible to this pager module. The client ** code that calls pager sees only the data that follows the header. +** +** Client code should call sqlitepager_write() on a page prior to making +** any modifications to that page. The first time sqlitepager_write() +** is called, the original page contents are written into the rollback +** journal and PgHdr.inJournal and PgHdr.needSync are set. Later, once +** the journal page has made it onto the disk surface, PgHdr.needSync +** is cleared. The modified page cannot be written back into the original +** database file until the journal pages has been synced to disk and the +** PgHdr.needSync has been cleared. +** +** The PgHdr.dirty flag is set when sqlitepager_write() is called and +** is cleared again when the page content is written back to the original +** database file. */ typedef struct PgHdr PgHdr; struct PgHdr { diff --git a/src/test1.c b/src/test1.c index dd452a4479..f0ebf8cdf1 100644 --- a/src/test1.c +++ b/src/test1.c @@ -13,7 +13,7 @@ ** is not included in the SQLite library. It is used for automated ** testing of the SQLite library. ** -** $Id: test1.c,v 1.32 2004/01/07 19:24:48 drh Exp $ +** $Id: test1.c,v 1.33 2004/02/08 18:07:35 drh Exp $ */ #include "sqliteInt.h" #include "tcl.h" @@ -942,6 +942,7 @@ static int test_breakpoint( */ int Sqlitetest1_Init(Tcl_Interp *interp){ extern int sqlite_search_count; + extern int sqlite_interrupt_count; extern int sqlite_open_file_count; extern int sqlite_current_time; static struct { @@ -980,6 +981,8 @@ int Sqlitetest1_Init(Tcl_Interp *interp){ } Tcl_LinkVar(interp, "sqlite_search_count", (char*)&sqlite_search_count, TCL_LINK_INT); + Tcl_LinkVar(interp, "sqlite_interrupt_count", + (char*)&sqlite_interrupt_count, TCL_LINK_INT); Tcl_LinkVar(interp, "sqlite_open_file_count", (char*)&sqlite_open_file_count, TCL_LINK_INT); Tcl_LinkVar(interp, "sqlite_current_time", diff --git a/src/vdbe.c b/src/vdbe.c index b77b79a108..0b21787e04 100644 --- a/src/vdbe.c +++ b/src/vdbe.c @@ -43,7 +43,7 @@ ** in this file for details. If in doubt, do not deviate from existing ** commenting and indentation practices when changing or adding code. ** -** $Id: vdbe.c,v 1.256 2004/02/08 06:17:20 drh Exp $ +** $Id: vdbe.c,v 1.257 2004/02/08 18:07:35 drh Exp $ */ #include "sqliteInt.h" #include "os.h" @@ -59,6 +59,15 @@ */ int sqlite_search_count = 0; +/* +** When this global variable is positive, it gets decremented once before +** each instruction in the VDBE. When reaches zero, the SQLITE_Interrupt +** of the db.flags field is set in order to simulate and interrupt. +** +** This facility is used for testing purposes only. It does not function +** in an ordinary build. +*/ +int sqlite_interrupt_count = 0; /* ** Advance the virtual machine to the next output row. @@ -517,6 +526,18 @@ int sqliteVdbeExec( } #endif + /* Check to see if we need to simulate an interrupt. This only happens + ** if we have a special test build. + */ +#ifdef SQLITE_TEST + if( sqlite_interrupt_count>0 ){ + sqlite_interrupt_count--; + if( sqlite_interrupt_count==0 ){ + sqlite_interrupt(db); + } + } +#endif + #ifndef SQLITE_OMIT_PROGRESS_CALLBACK /* Call the progress callback if it is configured and the required number ** of VDBE ops have been executed (either since this invocation of diff --git a/www/changes.tcl b/www/changes.tcl index 13141624a2..d2dcfd22a3 100644 --- a/www/changes.tcl +++ b/www/changes.tcl @@ -25,6 +25,18 @@ proc chng {date desc} { puts "

" } +chng {2004 February 8 (2.8.12)} { +
  • Fix a bug that will might corrupt the rollback journal if a power failure + or external program halt occurs in the middle of a COMMIT. The corrupt + journal can lead to database corruption when it is rolled back.
  • +
  • Reduce the size and increase the speed of various modules, especially + the virtual machine.
  • +
  • Allow "<expr> IN <table>" as a shorthand for + "<expr> IN (SELECT * FROM <table>".
  • +
  • Optimizations to the sqlite_mprintf() routine.
  • +
  • Make sure the MIN() and MAX() optimizations work within subqueries.
  • +} + chng {2004 January 14 (2.8.11)} {
  • Fix a bug in how the IN operator handles NULLs in subqueries. The bug was introduced by the previous release.