Index: misc/althttpd.c ================================================================== --- misc/althttpd.c +++ misc/althttpd.c @@ -212,10 +212,11 @@ static char *zHttpHost = 0; /* Name according to the web browser */ static char *zRealPort = 0; /* The real TCP port when running as daemon */ static char *zRemoteAddr = 0; /* IP address of the request */ static char *zReferer = 0; /* Name of the page that refered to us */ static char *zAccept = 0; /* What formats will be accepted */ +static char *zAcceptEncoding =0; /* gzip or default */ static char *zContentLength = 0; /* Content length reported in the header */ static char *zContentType = 0; /* Content type reported in the header */ static char *zQuerySuffix = 0; /* The part of the URL after the first ? */ static char *zAuthType = 0; /* Authorization type (basic or digest) */ static char *zAuthArg = 0; /* Authorization values */ @@ -1124,10 +1125,12 @@ RemoveNewline(zVal); if( strcasecmp(zFieldName,"User-Agent:")==0 ){ zAgent = StrDup(zVal); }else if( strcasecmp(zFieldName,"Accept:")==0 ){ zAccept = StrDup(zVal); + }else if( strcasecmp(zFieldName,"Accept-Encoding:")==0 ){ + zAcceptEncoding = StrDup(zVal); }else if( strcasecmp(zFieldName,"Content-length:")==0 ){ zContentLength = StrDup(zVal); }else if( strcasecmp(zFieldName,"Content-type:")==0 ){ zContentType = StrDup(zVal); }else if( strcasecmp(zFieldName,"Referer:")==0 ){ @@ -1418,10 +1421,11 @@ { "CONTENT_LENGTH", &zContentLength }, { "CONTENT_TYPE", &zContentType }, { "DOCUMENT_ROOT", &zHome }, { "GATEWAY_INTERFACE", &gateway_interface }, { "HTTP_ACCEPT", &zAccept }, + { "HTTP_ACCEPT_ENCODING", &zAcceptEncoding }, { "HTTP_COOKIE", &zCookie }, { "HTTP_HOST", &zHttpHost }, { "HTTP_REFERER", &zReferer }, { "HTTP_USER_AGENT", &zAgent }, { "PATH", &default_path }, Index: pages/changes.in ================================================================== --- pages/changes.in +++ pages/changes.in @@ -15,10 +15,63 @@ proc chng {date desc {options {}}} { global nChng aChng set aChng($nChng) [list $date $desc $options] incr nChng } + +chng {2014-12-09 (3.8.7.4)} { +
  • Bug fix: Add in a mutex that was omitted from the previous release. +
  • SQLITE_SOURCE_ID: "2014-12-09 01:34:36 f66f7a17b78ba617acde90fc810107f34f1a1f2e" +
  • SHA1 for sqlite3.c: 0a56693a3c24aa3217098afab1b6fecccdedfd23 +} + +chng {2014-12-06 (3.8.7.3)} { +
  • Bug fix: Ensure the cached KeyInfo objects (an internal abstraction not visible to the + application) do not go stale when operating in [shared cache mode] and frequently closing + and reopening some database connections while leaving other database connections on the + same shared cache open continuously. Ticket + [https://www.sqlite.org/src/info/e4a18565a36884b00edf|e4a18565a36884b00edf]. +
  • Bug fix: Recognize that any column in the right-hand table of a LEFT JOIN can be + NULL even if the column has a NOT NULL constraint. Do not apply optimizations that + assume the column is never NULL. Ticket + [https://www.sqlite.org/src/info/6f2222d550f5b0ee7ed|6f2222d550f5b0ee7ed]. + +
  • SQLITE_SOURCE_ID: "2014-12-05 22:29:24 647e77e853e81a5effeb4c33477910400a67ba86" +
  • SHA1 for sqlite3.c: 3ad2f5ba3a4a3e3e51a1dac9fda9224b359f0261 +} + +chng {2014-11-19 (3.8.7.2)} { +
  • Enhance the [ROLLBACK] command so that pending queries are allowed to continue as long + as the schema is unchanged. Formerly, a ROLLBACK would cause all pending queries to + fail with an [SQLITE_ABORT] or [SQLITE_ABORT_ROLLBACK] error. That error is still returned + if the ROLLBACK modifies the schema. +
  • Bug fix: Make sure that NULL results from OP_Column are fully and completely NULL and + do not have the MEM_Ephem bit set. + Ticket [http://www.sqlite.org/src/info/094d39a4c95ee4|094d39a4c95ee4]. +
  • Bug fix: The %c format in sqlite3_mprintf() is able to handle precisions greater than 70. +
  • Bug fix: Do not automatically remove the DISTINCT keyword from a SELECT that forms + the right-hand side of an IN operator since it is necessary if the SELECT also + contains a LIMIT. + Ticket [http://www.sqlite.org/src/info/db87229497|db87229497]. + +
  • SQLITE_SOURCE_ID: "2014-11-18 20:57:56 2ab564bf9655b7c7b97ab85cafc8a48329b27f93" +
  • SHA1 for sqlite3.c: b2a68d5783f48dba6a8cb50d8bf69b238c5ec53a +} + +chng {2014-10-30 (3.8.7.1)} { +
  • In [PRAGMA journal_mode=TRUNCATE] mode, call fsync() immediately after truncating + the journal file to ensure that the transaction is durable across a power loss. +
  • Fix an assertion fault that can occur when updating the NULL value of a field + at the end of a table that was added using [ALTER TABLE|ALTER TABLE ADD COLUMN]. +
  • Do not attempt to use the strchrnul() function from the standard C library unless + the HAVE_STRCHRNULL compile-time option is set. +
  • Fix a couple of problems associated with running an UPDATE or DELETE on a + [CREATE VIEW|VIEW] with a [rowid] in the WHERE clause. + +
  • SQLITE_SOURCE_ID: "2014-10-29 13:59:56 3b7b72c4685aa5cf5e675c2c47ebec10d9704221" +
  • SHA1 for sqlite3.c: 2d25bd1a73dc40f538f3a81c28e6efa5999bdf0c +} chng {2014-10-17 (3.8.7)} {

    Performance Enhancements:

  • Many micro-optimizations result in 20.3% more work for the same number of CPU cycles relative to the previous release. Index: pages/download.in ================================================================== --- pages/download.in +++ pages/download.in @@ -94,28 +94,20 @@ Heading {Pre-release Source-Code Snapshots} {} $Caution Product {snapshot/sqlite-amalgamation-DATE.zip} { - This is a snapshot (as of VERSION) of the current SQLite source code under - development. + The [amalgamation] as of VERSION. See the pending - change log or the - timeline - for a summary of updates since the last release. - This ZIP archive contains all preprocessed C code combined into a - single source file (the [amalgamation]). + change log for details. } Product {snapshot/sqlite-amalgamation32k-DATE.zip} { - This is a snapshot (as of VERSION) of the current SQLite source code under - development. + The [amalgamation] as of VERSION. See the pending - change log or the - timeline - for a summary of updates since the last release. - The code in this ZIP archive is split into a small number of source files, - such that no single source file is longer than 32767 lines of code. + change log for details. — + This version of the amalgamation is split into separate source files + such that no single source file is longer than 32767 lines of code. } Product {snapshot/sqlite-tea-DATE.zip} { This is a snapshot (as of VERSION) of the current SQLite code under development, packaged and ready to build using the Tcl Extension Architecture (TEA). @@ -123,20 +115,20 @@ } Heading {Pre-release Windows DLLs} {} $Caution Product snapshot/sqlite-dll-win32-x86-DATE.zip { - This ZIP archive contains a DLL for the SQLite library snapshot as of VERSION for - 32-bit x86 processors using the Win32 API. See the + A 32-bit Windows DLL as of VERSION. + See the pending change log - for a list of changes. + for details. } Product snapshot/sqlite-dll-win64-x64-DATE.zip { - This ZIP archive contains a DLL for the SQLite library snapshot as of VERSION for - 64-bit x64 processors using the Win64 API. See the + A 64-bit Windows DLL as of VERSION. + See the pending change log - for a list of changes. + for details. } Product {snapshot/sqlite-shell-win32-x86-DATE.zip} { This is a snapshot (as of VERSION) build of the [CLI | sqlite3.exe command-line shell] @@ -320,30 +312,21 @@ website and especially the download page for source code and binaries of SQLite for .NET. " } -Heading {Legacy Source Code Distribution Formats (Not Recommended)} old +Heading {Alternative Source Code Formats} old Product {YEAR/sqlite-src-VVV.zip} { - A ZIP archive of the complete source tree for SQLite version VERSION - as extracted from the version control system. The Makefile and - configure script in this tarball are not supported. Their use - is not recommended. The SQLite developers do not use them. - You should not use them either. If you want a configure script and - an automated build, use either the amalgamation tarball or TEA tarball - instead of this one. - To build from this tarball, hand-edit one of the template Makefiles - in the root directory of the tarball and build using your own customized - Makefile. + A ZIP archive of the complete (raw) source tree for SQLite version VERSION + as extracted from the version control system. Build using "./configure; make" on unix + or mingw/msys or using "nmake -f Makefile.msc" using MSVC. } Product {YEAR/sqlite-preprocessed-VVV.zip} { - This ZIP archive contains preprocessed C code for SQLite version VERSION - individual source files. The use of this source distribution is - not recommended. Use one of the amalgamation packages above - unless you have a compelling reason not to. + A ZIP archive contains preprocessed C code for SQLite version VERSION + individual source files. } Index: pages/index.in ================================================================== --- pages/index.in +++ pages/index.in @@ -42,32 +42,24 @@ \ Bloomberg - \ A world leader in financial-information technology.' sponsor[2] = '\ - \ - adobe.com\ - \ - Adobe revolutionizes how the \ - world engages with ideas and information - anywhere, anytime, and \ - through any medium.' - - sponsor[3] = '\ \ oracle.com\ \ Oracle -\ Software. Hardware. Complete.' - sponsor[4] = '\ + sponsor[3] = '\ \ bentley.com\ \ Bentley - Comprehensive software \ solutions for Sustaining Infrastructure.' - count = 5 + count = 4 while( count>0 ){ i = Math.floor(Math.random()*6) if( sponsor[i]!=null ){ document.write(sponsor[i]) sponsor[i] = null @@ -85,11 +77,11 @@

    Current Status

    Index: pages/news.in ================================================================== --- pages/news.in +++ pages/news.in @@ -16,10 +16,77 @@ regsub -all {[Tt]icket #(\d+)} $txt \ {\0} txt hd_resolve "
    $txt
    " hd_puts "
    " } + +newsitem {2014-12-09} {Release 3.8.7.4} { +

    SQLite [version 3.8.7.4] an unscheduled bug-fix release. Changes from + the previous release and from [version 3.8.7] are minimal. + +

    This release fixes adds in a mutex that is required by the changes of + the 3.8.7.3 patch but was accidently omitted. The mutex was not required + by any of the internal SQLite tests, but Firefox crashes without it. + Test cases have been added to ensure that mutex is never again missed. +} + +newsitem {2014-12-06} {Release 3.8.7.3} { +

    SQLite [version 3.8.7.3] an unscheduled bug-fix release. Changes from + the previous release and from [version 3.8.7] are minimal. + +

    This release fixes two obscure bugs that can result in incorrect + query results and/or application crashes, but not (as far as we can + tell) security vulnerabilities. Both bugs have been latent in the + code across multiple prior releases and have never before been encountered, + so they are unlikely to cause problems. Nevertheless + it seems prudent to publish fixes for them both. See the + change log for details. +} + +newsitem {2014-11-19} {Release 3.8.7.2} { +

    SQLite [version 3.8.7.2] is a patch and bug-fix release. Changes from + the previous release are minimal. + +

    The primary reason for this release is to enhance the [ROLLBACK] command + so that it allows running queries on the same database connection to + continue running as long as the ROLLBACK does not change the schema. + In all previous versions of SQLite, a ROLLBACK would cause pending + queries to stop immediately and return [SQLITE_ABORT] or + [SQLITE_ABORT_ROLLBACK]. Pending queries still abort if the ROLLBACK + changes the database schema, but as of this patch release, the queries + are allowed to continue running if the schema is unmodified. + +

    In addition to the ROLLBACK enhancement, this patch release also + includes fixes for three obscure bugs. See the + [version 3.8.7.2|change log] for details. +} + +newsitem {2014-10-30} {Release 3.8.7.1} { +

    SQLite [version 3.8.7.1] is a bug-fix release. + +

    The primary reason for this bug-fix release is to address a problem with + updating the value of fields at the end of a table that were added + using [ALTER TABLE|ALTER TABLE ADD COLUMN]. This problem + [https://www.sqlite.org/src/info/43107840f1c02|1] first appeared in the + 3.8.7 release. + +

    Another minor annoyance in the 3.8.7 release was the fact that the + Android build tried to use the strchrnul() function from the standard + C library but that function is not available on Android. Android builds + had to add -DHAVE_STRCHRNUL=0 to work around the problem. This patch + fixes that so that Android builds should now work without any changes. + +

    The operation of [PRAGMA journal_mode=TRUNCATE] has been enhanced so that + it invokes fsync() after truncating the journal file when + [PRAGMA synchronous=FULL]. This helps to preserve transaction durability + in the case of a power loss occurring shortly after commit. + +

    Finally, a couple of long-standing and obscure problems associated with run + UPDATE and DELETE on VIEWs were fixed. + +

    The [https://www.sqlite.org/src/vdiff?from=e4ab094f8afce0817f4074e823fabe59fc29ebb4&to=83afe23e553e802c0947c80d0ffdd120423e7c52&sbs=1|changes from 3.8.7] are minimal. +} newsitem {2014-10-17} {Release 3.8.7} {

    SQLite [version 3.8.7] is a regularly scheduled maintenance release. Upgrading from all prior versions is recommended. Index: pages/rescode.in ================================================================== --- pages/rescode.in +++ pages/rescode.in @@ -491,23 +491,23 @@ for [SQLITE_IOERR] indicating that the xDelete method on the [sqlite3_vfs] object failed because the file being deleted does not exist. } RESCODE SQLITE_IOERR_MMAP {SQLITE_IOERR | (24<<8)} { - The SQLITE_IOERR_SEEK error code is an [ext-v-prim|extended error code] + The SQLITE_IOERR_MMAP error code is an [ext-v-prim|extended error code] for [SQLITE_IOERR] indicating an I/O error within the xFetch or xUnfetch methods on the [sqlite3_io_methods] object while trying to map or unmap part of the database file into the process address space. } RESCODE SQLITE_IOERR_GETTEMPPATH {SQLITE_IOERR | (25<<8)} { - The SQLITE_IOERR_SEEK error code is an [ext-v-prim|extended error code] + The SQLITE_IOERR_GETTEMPPATH error code is an [ext-v-prim|extended error code] for [SQLITE_IOERR] indicating that the [VFS] is unable to determine a suitable directory in which to place temporary files. } RESCODE SQLITE_IOERR_CONVPATH {SQLITE_IOERR | (26<<8)} { - The SQLITE_IOERR_SEEK error code is an [ext-v-prim|extended error code] + The SQLITE_IOERR_CONVPATH error code is an [ext-v-prim|extended error code] for [SQLITE_IOERR] used only by Cygwin [VFS] and indicating that the cygwin_conv_path() system call failed. See also: [SQLITE_CANTOPEN_CONVPATH] } RESCODE SQLITE_LOCKED_SHAREDCACHE {SQLITE_LOCKED | (1<<8)} { @@ -569,11 +569,11 @@ The SQLITE_CANTOPEN_FULLPATH error code is an [ext-v-prim|extended error code] for [SQLITE_CANTOPEN] indicating that a file open operation failed because the operating system was unable to convert the filename into a full pathname. } RESCODE SQLITE_CANTOPEN_CONVPATH {SQLITE_CANTOPEN | (4<<8)} { - The SQLITE_CANTOPEN_SEEK error code is an [ext-v-prim|extended error code] + The SQLITE_CANTOPEN_CONVPATH error code is an [ext-v-prim|extended error code] for [SQLITE_CANTOPEN] used only by Cygwin [VFS] and indicating that the cygwin_conv_path() system call failed while trying to open a file. See also: [SQLITE_IOERR_CONVPATH] } RESCODE SQLITE_CORRUPT_VTAB {SQLITE_CORRUPT | (1<<8)} { Index: pages/support.in ================================================================== --- pages/support.in +++ pages/support.in @@ -59,31 +59,31 @@

    Mailing Lists

    Three separate mailing lists have been established to help support SQLite:

    Most users of SQLite will want to join the - + sqlite-announce list and many will want to join the - + sqlite-users list. The - + sqlite-dev list is more specialized and appeals to a narrower audience. Off-site archives of the - + sqlite-users list are available at:

    [http://www.mail-archive.com/sqlite-users%40sqlite.org/]
    Index: pages/syntaxdiagrams.in ================================================================== --- pages/syntaxdiagrams.in +++ pages/syntaxdiagrams.in @@ -5,10 +5,11 @@ foreach name $syntax_order { # hd_fragment $name *$name "$name syntax diagram" + hd_puts "" hd_puts "

    $name:

    " hd_puts "
    \n" hd_puts "

    " foreach {cx px} $syntax_linkage($name) break if {[llength $px]>0} { Index: pages/whentouse.in ================================================================== --- pages/whentouse.in +++ pages/whentouse.in @@ -39,12 +39,12 @@ SQLite has been used with great success as the on-disk file format for desktop applications such as version control systems, financial analysis tools, media cataloging and editing suites, CAD packages, record keeping programs, and so forth. The traditional File/Open operation calls sqlite3_open() to attach to the database -file. Updates happen atomically as application content is revised -so the File/Save menu option become superfluous. The File/Save_As +file. Updates happen automatically as application content is revised +so the File/Save menu option becomes superfluous. The File/Save_As menu option can be implemented using the [backup API].

    There are many advantages to using SQLite as an application file format, Index: search/search.tcl ================================================================== --- search/search.tcl +++ search/search.tcl @@ -394,11 +394,11 @@ News Support

    -
    +
    Index: wrap.tcl ================================================================== --- wrap.tcl +++ wrap.tcl @@ -525,11 +525,11 @@ } } if {1} { putsin4 $fd {
    -
    +