]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Documentation updates in preparation for the release of version 3.5.0. (CVS 4386)
authordrh <drh@noemail.net>
Mon, 3 Sep 2007 20:32:45 +0000 (20:32 +0000)
committerdrh <drh@noemail.net>
Mon, 3 Sep 2007 20:32:45 +0000 (20:32 +0000)
FossilOrigin-Name: c6809bf77625f420ac62513635628ff4f1766f83

VERSION
manifest
manifest.uuid
src/sqlite.h.in
www/34to35.tcl
www/changes.tcl
www/formatchng.tcl
www/index.tcl

diff --git a/VERSION b/VERSION
index 4d9d11cf505d5df3955077cc4493ab2e7e137d28..1545d966571dc86b54c98f888a0e6451501f8c81 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-3.4.2
+3.5.0
index 4f4607217a843b5d519c74e7cca42be04b264ca2..5c715301531619c80d6db53bbb50219eb63b9a85 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,9 +1,9 @@
-C In\ssqllimits1.test,\sset\sMAX_SQL_LENGTH\sto\sa\svalue\ssmaller\sthan\sMAX_LENGTH.\s(CVS\s4385)
-D 2007-09-03T18:01:25
+C Documentation\supdates\sin\spreparation\sfor\sthe\srelease\sof\sversion\s3.5.0.\s(CVS\s4386)
+D 2007-09-03T20:32:45
 F Makefile.in f3460f3363dd568c950a62f93e97eb19f6d069d8
 F Makefile.linux-gcc 65241babba6faf1152bf86574477baab19190499
 F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
-F VERSION 6200589421a0dfe968cd39c431fc62277b963540
+F VERSION 8be5bca3565b0c9667edbf4455759f1bffc0eb72
 F aclocal.m4 d20ba55930a05197b484809fba1d2b603f4e67a6
 F addopcodes.awk 701697fae48376375ec8532c3d04e910cfeef352
 F art/2005osaward.gif 0d1851b2a7c1c9d0ccce545f3e14bca42d7fd248
@@ -130,7 +130,7 @@ F src/random.c 4a22746501bf36b0a088c66e38dde5daba6a35da
 F src/select.c 4706a6115da1bdc09a2be5991168a6cc2c0df267
 F src/server.c 087b92a39d883e3fa113cae259d64e4c7438bc96
 F src/shell.c ac29402b538515fa4697282387be9c1205e6e9eb
-F src/sqlite.h.in fb4c95cd6995379741b46ffb6f38c5ed87bc26a9
+F src/sqlite.h.in d112cedeeef4047353a674bab25e55d8b51d2006
 F src/sqlite3ext.h a93f59cdee3638dc0c9c086f80df743a4e68c3cb
 F src/sqliteInt.h bb126b074352ef0ee20399883172161baf5eead2
 F src/sqliteLimit.h 1bcbbdfa856f8b71b561abb31edb864b0eca1d12
@@ -511,7 +511,7 @@ F tool/space_used.tcl f714c41a59e326b8b9042f415b628b561bafa06b
 F tool/spaceanal.tcl f60a242a996a79d59cad6615cec83a9203e17911
 F tool/speedtest.tcl 06c76698485ccf597b9e7dbb1ac70706eb873355
 F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
-F www/34to35.tcl 4f624758651931952dd6f23d0856758c8babe3b2
+F www/34to35.tcl daa7103b7b5f6820b860600fc2a83bca639a38b7
 F www/arch.fig d5f9752a4dbf242e9cfffffd3f5762b6c63b3bcf
 F www/arch.gif f845a64772062e82d17980a349f95f1f0b4c8054
 F www/arch.png 82ef36db1143828a7abc88b1e308a5f55d4336f4
@@ -524,7 +524,7 @@ F www/autoinc.tcl b357f5ba954b046ee35392ce0f884a2fcfcdea06
 F www/c_interface.tcl b51b08591554c16a0c3ef718364a508ac25abc7e
 F www/capi3.tcl 88884dd743039d1a95aa57f4a5eb369de7744716
 F www/capi3ref.tcl 167c2d5b45da22d77b2493b00d44b001b4ec83b1
-F www/changes.tcl d35ba54037f59b545e7a810e9b4e9561568f1bc6
+F www/changes.tcl 480f301f7945cc0348a0cc92905d37fe499eacd2
 F www/common.tcl 2b793e5c31486c8a01dd27dc0a631ad93704438e
 F www/compile.tcl 276546d7eb445add5a867193bbd80f6919a6b084
 F www/conflict.tcl cdd0f4b59b0ba6d61f67e6a38f3ae45853bacb30
@@ -540,10 +540,10 @@ F www/download.tcl d59a0244f22a975c3f9deafb535fc20549cb8c45
 F www/dynload.tcl 02eb8273aa78cfa9070dd4501dca937fb22b466c
 F www/faq.tcl 745e87b2afc4deaf062aaee8649d50294de3f244
 F www/fileformat.tcl 900c95b9633abc3dcfc384d9ddd8eb4876793059
-F www/formatchng.tcl bbb8af1ee494a71031acac4c8d8c51535f23b9df
+F www/formatchng.tcl 722a9c08be4f7325b3a545abfe508cfbabe20eb7
 F www/fullscanb.gif f7c94cb227f060511f8909e10f570157263e9a25
 F www/index-ex1-x-b.gif f9b1d85c3fa2435cf38b15970c7e3aa1edae23a3
-F www/index.tcl ba829424fc003a60b5bf107ea100cbca8e1fd944
+F www/index.tcl 118db0f8ff6e1c6d90a8346e5e9a8b991c73516d
 F www/indirect1b1.gif adfca361d2df59e34f9c5cac52a670c2bfc303a1
 F www/lang.tcl bb73892bf99c81658ec46d0c7a87e54cd21d435b
 F www/limits.tcl 9035eb73e814ccb298595fd57670dec817533616
@@ -569,7 +569,7 @@ F www/tclsqlite.tcl 8be95ee6dba05eabcd27a9d91331c803f2ce2130
 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
 F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
 F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
-P ed15db4610bc6202c624234e48d234e0005825e4
-R 8ee90cb4a03f4fb2b7c9287a6f1c505c
-U danielk1977
-Z 0cb73faf14fbb0ba98a3d2b74121fc8e
+P 51726a9bb6c7f98c496302745656dc317ad5c094
+R b6337e684a5d9067ca7a33a3860add13
+U drh
+Z bffd337f01056c4ca53d6f1685390e4f
index 5825151cb4e07651596b3d926baac8ca397e4925..b863058bd6162a8f518e0e34b2cd19abc713c17f 100644 (file)
@@ -1 +1 @@
-51726a9bb6c7f98c496302745656dc317ad5c094
\ No newline at end of file
+c6809bf77625f420ac62513635628ff4f1766f83
\ No newline at end of file
index a8fcf3a5e323af5fa2cb2c3b4b553a52a70d6d29..805a407b84a67bece7716c7e8ed609b59a75e14c 100644 (file)
@@ -30,7 +30,7 @@
 ** the version number) and changes its name to "sqlite3.h" as
 ** part of the build process.
 **
-** @(#) $Id: sqlite.h.in,v 1.255 2007/09/03 15:19:35 drh Exp $
+** @(#) $Id: sqlite.h.in,v 1.256 2007/09/03 20:32:45 drh Exp $
 */
 #ifndef _SQLITE3_H_
 #define _SQLITE3_H_
@@ -1413,7 +1413,7 @@ void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
 ** The third options is behavior that is always used for [sqlite3_open()]
 ** and [sqlite3_open16()].
 **
-** If the filename is ":memory:" or an empty string, then an private
+** If the filename is ":memory:", then an private
 ** in-memory database is created for the connection.  This in-memory
 ** database will vanish when the database connection is closed.  Future
 ** version of SQLite might make use of additional special filenames
@@ -1422,6 +1422,10 @@ void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
 ** ":" that you prefix the filename with a pathname like "./" to
 ** avoid ambiguity.
 **
+** If the filename is an empty string, then a private temporary
+** on-disk database will be created.  This private database will be
+** automatically deleted as soon as the database connection is closed.
+**
 ** The fourth parameter to sqlite3_open_v2() is the name of the
 ** [sqlite3_vfs] object that defines the operating system 
 ** interface that the new database connection should use.  If the
index 449ed35e46b62214820abd986b447d521c72744c..3829b42660963472082ce0217ba931d880a3bc41 100644 (file)
@@ -1,7 +1,7 @@
 #
 # Run this TCL script to generate HTML for the goals.html file.
 #
-set rcsid {$Id: 34to35.tcl,v 1.2 2007/09/03 12:34:57 drh Exp $}
+set rcsid {$Id: 34to35.tcl,v 1.3 2007/09/03 20:32:45 drh Exp $}
 source common.tcl
 header {SQLite Changes From Version 3.4.2 To 3.5.0}
 
@@ -27,8 +27,19 @@ proc IMAGE {name {caption {}}} {
 proc PARAGRAPH {text} {
   # regsub -all "/(\[a-zA-Z0-9\]+)/" $text {<i>\1</i>} t2
   #regsub -all "\\*(\[^\n*\]+)\\*" $text {<tt><b><big>\1</big></b></tt>} t3
-  regsub -all {\[([^]\n]+)\]} $text {<b>\1</b>} t3
-  puts "<p>$t3</p>\n"
+  regsub -all {\[([^]\n]+)\]} $text {[resolve_link \1]} t3
+  puts "<p>[subst -novar -noback $t3]</p>\n"
+}
+proc resolve_link {args} {
+  set a2 [split $args |]
+  set id [string trim [lindex $a2 0]]
+  if {[lindex $a2 1]==""} {
+    set display [string trim [lindex $a2 0]]
+  } else {
+    set display [string trim [lrange $a2 1 end]]
+  }
+  regsub -all {[^a-zA-Z0-9_]} $id {} id
+  return "<a href=\"capi3ref.html#$id\">$display</a>"
 }
 set level(0) 0
 set level(1) 0
@@ -79,8 +90,9 @@ PARAGRAPH {
   <ol>
   <li>The OS interface layer has been completely reworked:
   <ol type="a">
-  <li>The [sqlite3_os_switch()] interface has been removed.</li>
-  <li>The [SQLITE_ENABLE_REDEF_IO] compile-time flag no longer functions.
+  <li>The undocumented <b>sqlite3_os_switch()</b> interface has
+      been removed.</li>
+  <li>The <b>SQLITE_ENABLE_REDEF_IO</b> compile-time flag no longer functions.
       I/O procedures are now always redefinable.</li>
   <li>Three new objects are defined for specifying I/O procedures:
       [sqlite3_vfs], [sqlite3_file], and [sqlite3_io_methods].</li>
@@ -134,7 +146,7 @@ HEADING 1 {The OS Interface Layer}
 
 PARAGRAPH {
   If your system defines a custom OS interface for SQLite or if you
-  were using the (undocumented) [sqlite3_os_switch()]
+  were using the undocumented <b>sqlite3_os_switch()</b>
   interface, then you will need to make modifications in order to
   upgrade to SQLite version 3.5.0.  This may seem painful at first
   glance.  But as you look more closely, you will probably discover
@@ -361,9 +373,9 @@ PARAGRAPH {
    filename if it needs to remember the filename for some reason.
    The flags argument to xOpen() is a copy of the flags argument
    to sqlite3_open_v2().  If sqlite3_open() or sqlite3_open16()
-   is used, then flags is SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE.
+   is used, then flags is [SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE].
    If xOpen() opens a file read-only then it sets *pOutFlags to
-   include SQLITE_OPEN_READONLY.  Other bits in *pOutFlags may be
+   include [SQLITE_OPEN_READONLY].  Other bits in *pOutFlags may be
    set.
    SQLite will also add one of the following flags to the xOpen()
    call, depending on the object being opened:
@@ -372,6 +384,7 @@ PARAGRAPH {
    <li>  [SQLITE_OPEN_MAIN_JOURNAL]
    <li>  [SQLITE_OPEN_TEMP_DB]
    <li>  [SQLITE_OPEN_TEMP_JOURNAL]
+   <li>  [SQLITE_OPEN_TRANSIENT_DB]
    <li>  [SQLITE_OPEN_SUBJOURNAL]
    <li>  [SQLITE_OPEN_MASTER_JOURNAL]
    </ul>
@@ -379,7 +392,7 @@ PARAGRAPH {
    changes the way it deals with files.  For example, an application
    that does not care about crash recovery or rollback, might make
    the open of a journal file a no-op.  Writes to this journal are
-   also a no-op.  Any attempt to read the journal return SQLITE_IOERR.
+   also a no-op.  Any attempt to read the journal returns [SQLITE_IOERR].
    Or the implementation might recognize the a database file will
    be doing page-aligned sector reads and writes in a random order
    and set up its I/O subsystem accordingly.
@@ -401,6 +414,20 @@ PARAGRAPH {
    structure.
 }
 
+PARAGRAPH {
+  The differences between an [SQLITE_OPEN_TEMP_DB] database and an
+  [SQLITE_OPEN_TRANSIENT_DB] database is this:  The [SQLITE_OPEN_TEMP_DB]
+  is used for explicitly declared and named TEMP tables (using the
+  CREATE TEMP TABLE syntax) or for named tables in a temporary database
+  that is created by opening a database with a filename that is an empty
+  string.  An [SQLITE_OPEN_TRANSIENT_DB] holds an database table that
+  SQLite creates automatically in order to evaluate a subquery or
+  ORDER BY or GROUP BY clause.  Both TEMP_DB and TRANSIENT_DB databases
+  are private and are deleted automatically.  TEMP_DB databases last
+  for the duration of the database connection.  TRANSIENT_DB databases
+  last only for the duration of a single SQL statement.
+}
+
 PARAGRAPH {
   The xDelete method is used delete a file.  The name of the file is
   given in the second parameter.  The filename will be in UTF-8.
@@ -415,9 +442,9 @@ PARAGRAPH {
 PARAGRAPH {
   The xAccess method is used to check for access permissions on a file.
   The filename will be UTF-8 encoded.  The flags argument will be
-  SQLITE_ACCESS_EXISTS to check for the existence of the file,
-  SQLITE_ACCESS_READWRITE to check to see if the file is both readable
-  and writable, or SQLITE_ACCESS_READ to check to see if the file is
+  [SQLITE_ACCESS_EXISTS] to check for the existence of the file,
+  [SQLITE_ACCESS_READWRITE] to check to see if the file is both readable
+  and writable, or [SQLITE_ACCESS_READ] to check to see if the file is
   at least readable.  The "file" named by the second parameter might
   be a directory or folder name.
 }
@@ -532,8 +559,7 @@ struct sqlite3_io_methods {
   int (*xLock)(sqlite3_file*, int);
   int (*xUnlock)(sqlite3_file*, int);
   int (*xCheckReservedLock)(sqlite3_file*);
-  int (*xBreakLock)(sqlite3_file*);
-  int (*xLockState)(sqlite3_file *);
+  int (*xFileControl)(sqlite3_file*, int op, void *pArg);
   int (*xSectorSize)(sqlite3_file*);
   int (*xDeviceCharacteristics)(sqlite3_file*);
   /* Additional methods may be added in future releases */
@@ -556,9 +582,9 @@ PARAGRAPH {
 PARAGRAPH {
   The xRead method reads iAmt bytes from the file beginning at a byte
   offset to iOfst.  The data read is stored in the pointer of the
-  second parameter.  xRead returns the SQLITE_OK on success,
-  SQLITE_IOERR_SHORT_READ if it was not able to read the full number
-  of bytes because it reached end-of-file, or SQLITE_IOERR_READ for
+  second parameter.  xRead returns the [SQLITE_OK] on success,
+  [SQLITE_IOERR_SHORT_READ] if it was not able to read the full number
+  of bytes because it reached end-of-file, or [SQLITE_IOERR_READ] for
   any other error.
 }
 
@@ -570,38 +596,33 @@ PARAGRAPH {
   to beginning its write.  xWrite continues to extends the file as
   necessary so that the size of the file is at least iAmt+iOfst bytes 
   at the conclusion of the xWrite call.  The xWrite method returns
-  SQLITE_OK on success.  If the write cannot complete because the
-  underlying storage medium is full, then SQLITE_FULL is returned.
-  SQLITE_IOERR_WRITE should be returned for any other error.
+  [SQLITE_OK] on success.  If the write cannot complete because the
+  underlying storage medium is full, then [SQLITE_FULL] is returned.
+  [SQLITE_IOERR_WRITE] should be returned for any other error.
 }
 
 PARAGRAPH {
   The xTruncate method truncates a file to be nByte bytes in length.
   If the file is already nByte bytes or less in length then this
-  method is a no-op.  The xTruncate method returns SQLITE_OK on
-  success and SQLITE_IOERR_TRUNCATE if anything goes wrong.
+  method is a no-op.  The xTruncate method returns [SQLITE_OK] on
+  success and [SQLITE_IOERR_TRUNCATE] if anything goes wrong.
 }
 
 PARAGRAPH {
   The xSync method is used to force previously written data out of
   operating system cache and into non-volatile memory.  The second
-  parameter is usually SQLITE_SYNC_NORMAL.  If the second parameter
-  is SQLITE_SYNC_FULL then the xSync method should make sure that
+  parameter is usually [SQLITE_SYNC_NORMAL].  If the second parameter
+  is [SQLITE_SYNC_FULL] then the xSync method should make sure that
   data has also been flushed through the disk controllers cache.
-  The SQLITE_SYNC_FULL parameter is the equivalent of the F_FULLSYNC
-  ioctl() on Mac OS X.  The SQLITE_SYNC_BARRIER is currently unused.
-  In the future this value might request that the xSync call serve
-  as an I/O barrier operation.  All write requests that occur before
-  the xSync must complete before any write request that occurs
-  afterwards, but the barrier does not require that all writes 
-  complete prior to the return of xSync.  The xSync method returns
-  SQLITE_OK on success and SQLITE_IOERR_FSYNC if anything goes wrong.
+  The [SQLITE_SYNC_FULL] parameter is the equivalent of the F_FULLSYNC
+  ioctl() on Mac OS X. The xSync method returns
+  [SQLITE_OK] on success and [SQLITE_IOERR_FSYNC] if anything goes wrong.
 }
 
 PARAGRAPH {
   The xFileSize() method determines the current size of the file
-  in bytes and writes that value into *pSize.  It returns SQLITE_OK
-  on success and SQLITE_IOERR_FSTAT if something goes wrong.
+  in bytes and writes that value into *pSize.  It returns [SQLITE_OK]
+  on success and [SQLITE_IOERR_FSTAT] if something goes wrong.
 }
 
 PARAGRAPH {
@@ -620,21 +641,21 @@ PARAGRAPH {
   and xUnlock.  The xLock method increases the locking level to the
   specified locking level or higher.  The xUnlock method decreases the
   locking level to no lower than the level specified.  
-  SQLITE_LOCK_NONE means that the file is unlocked.  SQLITE_LOCK_SHARED
+  [SQLITE_LOCK_NONE] means that the file is unlocked.  [SQLITE_LOCK_SHARED]
   gives permission to read the file.  Multiple database connections can
-  hold SQLITE_LOCK_SHARED at the same time.
-  SQLITE_LOCK_RESERVED is like SQLITE_LOCK_SHARED in that its is permission
+  hold [SQLITE_LOCK_SHARED] at the same time.
+  [SQLITE_LOCK_RESERVED] is like [SQLITE_LOCK_SHARED] in that its is permission
   to read the file.  But only a single connection can hold a reserved lock
-  at any point in time.  The SQLITE_LOCK_PENDING is also permission to
+  at any point in time.  The [SQLITE_LOCK_PENDING] is also permission to
   read the file.  Other connections can continue to read the file as well,
   but no other connection is allowed to escalate a lock from none to shared.
-  SQLITE_LOCK_EXCLUSIVE is permission to write on the file.  Only a single
+  [SQLITE_LOCK_EXCLUSIVE] is permission to write on the file.  Only a single
   connection can hold an exclusive lock and no other connection can hold
   any lock (other than "none") while one connection is hold an exclusive
-  lock.  The xLock returns SQLITE_OK on success, SQLITE_BUSY if it
-  is unable to obtain the lock, or SQLITE_IOERR_RDLOCK if something else
-  goes wrong.  The xUnlock method returns SQLITE_OK on success and
-  SQLITE_IOERR_UNLOCK for problems.
+  lock.  The xLock returns [SQLITE_OK] on success, [SQLITE_BUSY] if it
+  is unable to obtain the lock, or [SQLITE_IOERR_RDLOCK] if something else
+  goes wrong.  The xUnlock method returns [SQLITE_OK] on success and
+  [SQLITE_IOERR_UNLOCK] for problems.
 }
 
 PARAGRAPH {
@@ -644,10 +665,21 @@ PARAGRAPH {
 }
 
 PARAGRAPH {
-  The xLockState method returns one of the [SQLITE_LOCK_NONE] through
-  [SQLITE_LOCK_EXCLUSIVE] constants defined above to indicate the current
-  state of the lock for the given file handle.  This method is used for
-  testing purposes only.
+  The xFileControl() method is a generic interface that allows custom
+  VFS implementations to directly control an open file using the
+  (new and experimental)
+  [sqlite3_file_control()] interface.  The second "op" argument
+  is an integer opcode.   The third
+  argument is a generic pointer which is intended to be a pointer
+  to a structure that may contain arguments or space in which to
+  write return values.  Potential uses for xFileControl() might be
+  functions to enable blocking locks with timeouts, to change the
+  locking strategy (for example to use dot-file locks), to inquire
+  about the status of a lock, or to break stale locks.  The SQLite
+  core reserves opcodes less than 100 for its own use. 
+  A [SQLITE_FCNTL_LOCKSTATE | list of opcodes] less than 100 is available.
+  Applications that define a custom xFileControl method should use opcodes 
+  greater than 100 to avoid conflicts.
 }
 
 PARAGRAPH {
@@ -667,26 +699,27 @@ PARAGRAPH {
   have that SQLite can use to increase performance.  The allowed return
   is the bit-wise OR of the following values:
   <ul>
-  <li> SQLITE_IOCAP_ATOMIC
-  <li> SQLITE_IOCAP_ATOMIC512
-  <li> SQLITE_IOCAP_ATOMIC1K
-  <li> SQLITE_IOCAP_ATOMIC2K
-  <li> SQLITE_IOCAP_ATOMIC4K
-  <li> SQLITE_IOCAP_ATOMIC8K
-  <li> SQLITE_IOCAP_ATOMIC16K
-  <li> SQLITE_IOCAP_ATOMIC32K
-  <li> SQLITE_IOCAP_ATOMIC64K
-  <li> SQLITE_IOCAP_SAFE_APPEND
-  <li> SQLITE_IOCAP_SEQUENTIAL
+  <li> [SQLITE_IOCAP_ATOMIC]
+  <li> [SQLITE_IOCAP_ATOMIC512]
+  <li> [SQLITE_IOCAP_ATOMIC1K]
+  <li> [SQLITE_IOCAP_ATOMIC2K]
+  <li> [SQLITE_IOCAP_ATOMIC4K]
+  <li> [SQLITE_IOCAP_ATOMIC8K]
+  <li> [SQLITE_IOCAP_ATOMIC16K]
+  <li> [SQLITE_IOCAP_ATOMIC32K]
+  <li> [SQLITE_IOCAP_ATOMIC64K]
+  <li> [SQLITE_IOCAP_SAFE_APPEND]
+  <li> [SQLITE_IOCAP_SEQUENTIAL]
   </ul>
-  The SQLITE_IOCAP_ATOMIC bit means that all writes to this device are
+  The [SQLITE_IOCAP_ATOMIC] bit means that all writes to this device are
   atomic in the sense that either the entire write occurs or none of it
-  occurs.  The other SQLITE_IOCAP_ATOMIC<i>nnn</i> values indicate that
+  occurs.  The other 
+  [SQLITE_IOCAP_ATOMIC | SQLITE_IOCAP_ATOMIC<i>nnn</i>] values indicate that
   writes of aligned blocks of the indicated size are atomic.
-  SQLITE_IOCAP_SAFE_APPEND means that when extending a file with new
+  [SQLITE_IOCAP_SAFE_APPEND] means that when extending a file with new
   data, the new data is written first and then the file size is updated.
   So if a power failure occurs, there is no chance that the file might have
-  been extended with randomness.  The SQLITE_IOCAP_SEQUENTIAL bit means
+  been extended with randomness.  The [SQLITE_IOCAP_SEQUENTIAL] bit means
   that all writes occur in the order that they are issued and are not
   reordered by the underlying file system.
 }
@@ -702,7 +735,7 @@ PARAGRAPH {
 PARAGRAPH {
   <ol>
   <li> Define an appropriate subclass of the [sqlite3_file] object.
-  <li> Implement the methods required by the [sqlite_io_methods] object.
+  <li> Implement the methods required by the [sqlite3_io_methods] object.
   <li> Create a static and 
        constant [sqlite3_io_methods] object containing pointers
        to the methods from the previous step.
@@ -868,10 +901,11 @@ PARAGRAPH {
   substituted in that case.  The argument to [sqlite3_mutex_alloc()]
   can also be a constant designating one of several static mutexes:
   <ul>
-  <li>  SQLITE_MUTEX_STATIC_MASTER
-  <li>  SQLITE_MUTEX_STATIC_MEM
-  <li>  SQLITE_MUTEX_STATIC_MEM2
-  <li>  SQLITE_MUTEX_STATIC_PRNG
+  <li>  [SQLITE_MUTEX_STATIC_MASTER]
+  <li>  [SQLITE_MUTEX_STATIC_MEM]
+  <li>  [SQLITE_MUTEX_STATIC_MEM2]
+  <li>  [SQLITE_MUTEX_STATIC_PRNG]
+  <li>  [SQLITE_MUTEX_STATIC_LRU]
   </ul>
   These static mutexes are reserved for use internally by SQLite
   and should not be used by the application.  The static mutexes
@@ -887,7 +921,7 @@ PARAGRAPH {
 PARAGRAPH {
   The [sqlite3_mutex_enter()] attempts to enter the mutex and blocks
   if another threads is already there.  [sqlite3_mutex_try()] attempts
-  to enter and returns SQLITE_OK on success or SQLITE_BUSY if another
+  to enter and returns [SQLITE_OK] on success or [SQLITE_BUSY] if another
   thread is already there.  [sqlite3_mutex_leave()] exits a mutex.
   The mutex is held until the number of exits matches the number of
   entrances.  If [sqlite3_mutex_leave()] is called on a mutex that 
index f85c8aefb33f51b4d399a9af975a73b3297b5c6b..94b8c108924f21f8a368ee5996ea85c86fdc2877 100644 (file)
@@ -28,6 +28,32 @@ proc chng {date desc} {
   puts "</DD>"
 }
 
+
+chng {2007 Sep 3 (3.5.0 beta)} {
+<li>Redesign the OS interface layer.  See
+    <a href="34to35.html">34to35.html</a> for details.
+    <font color="red">*** Potentially incompatible change ***</font>
+<li>The <a href="capi3ref.html#sqlite3_release_memory">
+    sqlite3_release_memory()</a>,
+    <a href="capi3ref.html#sqlite3_soft_heap_limit">
+    sqlite3_soft_heap_limit()</a>,
+    and <a href="capi3ref.html#sqlite3_enable_shared_cache">
+    sqlite3_enable_shared_cache()</a> interfaces now work cross all
+    threads in the process, not just the single thread in which they
+    are invoked.
+    <font color="red">*** Potentially incompatible change ***</font>
+<li>Added the 
+    <a href="capi3ref.html#sqlite3_open_v2">sqlite3_open_v2()</a>
+    interface.  
+<li>Reimplemented the memory allocation subsystem and made it 
+    replacable at compile-time.
+<li>Created a new mutex subsystem and made it replacable at
+    compile-time.
+<li>The same database connection may now be used simultaneously by
+    separate threads.
+}
+
+
 chng {2007 August 13 (3.4.2)} {
 <li>Fix a database corruption bug that might occur if a ROLLBACK command
 is executed in <a href="pragma.html#pragma_auto_vacuum">auto-vacuum mode</a>
index d6562428ca539666e8c6d6d01093176ce821facc..83a2dcfd03d84688f10398ec8c7c014911a1c92e 100644 (file)
@@ -1,7 +1,7 @@
 #
 # Run this Tcl script to generate the formatchng.html file.
 #
-set rcsid {$Id: formatchng.tcl,v 1.19 2006/08/12 14:38:47 drh Exp $ }
+set rcsid {$Id: formatchng.tcl,v 1.20 2007/09/03 20:32:45 drh Exp $ }
 source common.tcl
 header {File Format Changes in SQLite}
 puts {
@@ -252,6 +252,19 @@ occurred since version 1.0.0:
   understand the new file format.  That might take several
   years.</p></td>
 </tr>
+<tr>
+  <td valign="top">3.4.2 to 3.5.0</td>
+  <td valign="top">2007-Sep-3</td>
+  <td><p>The design of the OS interface layer was changed for
+  release 3.5.0.  Applications that implemented a custom OS
+  interface will need to be modified in order to upgrade.
+  There are also some subtly different semantics a few obscure
+  APIs.  An <a href="34to35.html">article</a> is avilable which
+  describing the changes in detail.</p>
+
+  <p>The on-disk file format is unchanged.</p>
+  </td>
+</tr>
 </table>
 </blockquote>
 
index de86382524a6f6bf44ea68dc477ebe2e64ab17d7..118d9ce2cd70165f0f27b7d063fd51968333c526 100644 (file)
@@ -71,6 +71,20 @@ proc newsitem {date title text} {
   puts "<hr width=\"50%\">"
 }
 
+newsitem {2007-Sep-3} {Version 3.5.0 beta} {
+  The OS interface layer and the memory allocation subsystems in
+  SQLite have been reimplemented.  The published API is largely unchanged
+  but the (unpublished) OS interface has been modified extensively.  
+  Application that implement their own OS interface will require
+  modification.  See
+  <a href="34to35.html">34to35.html</a> for details.<p>
+
+  This is a large change approximately 1 line of count of out 10 was
+  modified.  We are calling this first release "beta" in order to give
+  the user community time to test and evaluate the changes before we
+  freeze the new design.
+}
+
 newsitem {2007-Aug-13} {Version 3.4.2} {
   While stress-testing the 
   <a href="capi3ref.html#sqlite3_soft_heap_limit">soft_heap_limit</a>
@@ -125,4 +139,4 @@ puts {
 <p align="right"><a href="oldnews.html">Old news...</a></p>
 </td></tr></table>
 }
-footer {$Id: index.tcl,v 1.159 2007/08/13 16:15:29 drh Exp $}
+footer {$Id: index.tcl,v 1.160 2007/09/03 20:32:46 drh Exp $}