]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Perpare for the 2.8.12 release. (CVS 1212)
authordrh <drh@noemail.net>
Sun, 8 Feb 2004 18:07:34 +0000 (18:07 +0000)
committerdrh <drh@noemail.net>
Sun, 8 Feb 2004 18:07:34 +0000 (18:07 +0000)
FossilOrigin-Name: 93ccd1b1d63b5b914b84b0463f2267bcfaadafa3

Makefile.in
VERSION
main.mk
manifest
manifest.uuid
src/pager.c
src/test1.c
src/vdbe.c
www/changes.tcl

index e9420fe7f7dafd0eee1836ff1ee18b548deb2d2e..226eed2144de08d2ab772eb58be5e5966133d82a 100644 (file)
@@ -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 38bc52136e5f47e8a826cf841d2becf3a6ad8bf1..56f5e1b70f5da7615c07cd31354e9e61ed8fca5d 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.8.11
+2.8.12
diff --git a/main.mk b/main.mk
index 7be90d844c498f56186943aa17903caba837db86..840b336981b4d622a4cffdd3437ad8fb50cb7cf4 100644 (file)
--- 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.
index add0dbc7aae8ab40d52bc36bc63feedce1c675d0..e3aa01071405e1153d66ec25aa1072580aea6a80 100644 (file)
--- 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
index 22cf9a0311b169caf0cccd323ed988335b9e272c..58dd874b3897a31799e8f480901c41a483c9d06e 100644 (file)
@@ -1 +1 @@
-42cfd541dcc31d1ef92387e3fd2346db61d0ecbd
\ No newline at end of file
+93ccd1b1d63b5b914b84b0463f2267bcfaadafa3
\ No newline at end of file
index 4031800bdb43d36dccbca20dd282aa8d9eb140af..e504386dceaaf8a49a0649bd29b14ff8bd9dae29 100644 (file)
@@ -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 {
index dd452a4479ab88745ff70d404c09f37526b7d4e8..f0ebf8cdf16083c1476298970ba3aaef7a4daaf4 100644 (file)
@@ -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", 
index b77b79a108b724093b3ac9fc66fa23ee4426c91c..0b21787e04990e4cde8fa62b81a3cd021d615aac 100644 (file)
@@ -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"
 */
 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
index 13141624a2a591aaa107d4664fcdff8b57f26a72..d2dcfd22a30ab42c32a7ed3a85bce9ef4aa88ad3 100644 (file)
@@ -25,6 +25,18 @@ proc chng {date desc} {
   puts "<DD><P><UL>$desc</UL></P></DD>"
 }
 
+chng {2004 February 8 (2.8.12)} {
+<li>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.</li>
+<li>Reduce the size and increase the speed of various modules, especially
+    the virtual machine.</li>
+<li>Allow "&lt;expr&gt; IN &lt;table&gt;" as a shorthand for
+    "&lt;expr&gt; IN (SELECT * FROM &lt;table&gt;".</li>
+<li>Optimizations to the sqlite_mprintf() routine.</li>
+<li>Make sure the MIN() and MAX() optimizations work within subqueries.</li>
+}
+
 chng {2004 January 14 (2.8.11)} {
 <li>Fix a bug in how the IN operator handles NULLs in subqueries.  The bug
     was introduced by the previous release.</li>