diff --git a/configure b/configure old mode 100755 new mode 100644 diff --git a/install-sh b/install-sh old mode 100755 new mode 100644 diff --git a/manifest b/manifest index 7bc0effdc8..244bcd7e4c 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Add\stests\sto\scheck\sthat\ssqlite\srecovers\sfrom\san\serror\sin\ssqlite3_initialize()\scorrectly. -D 2009-08-17T15:16:19 +C More\sdocumentation\sand\scomment\supdates\sfor\ssqlite3_initialize/shutdown\sinterface\schanges\sto\shandle\sfailures. +D 2009-08-17T15:31:23 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0 F Makefile.in 0f7761c5d1c62ae7a841e3393ffaff1fa0f5c00a F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -18,7 +18,7 @@ F art/powered_by_sqlite.gif 7fbcd7d3675391fd3d21672c14c05f5999eb60d1 F config.guess 226d9a188c6196f3033ffc651cbc9dcee1a42977 F config.h.in 868fdb48c028421a203470e15c69ada15b9ba673 F config.sub 9ebe4c3b3dab6431ece34f16828b594fb420da55 -F configure 486c870218ec915bd8edfece7109b6c864e82a5a x +F configure 486c870218ec915bd8edfece7109b6c864e82a5a F configure.ac 14740970ddb674d92a9f5da89083dff1179014ff F contrib/sqlitecon.tcl 210a913ad63f9f991070821e599d600bd913e0ad F doc/lemon.html f0f682f50210928c07e562621c3b7e8ab912a538 @@ -84,7 +84,7 @@ F ext/rtree/rtree_perf.tcl 0fabb6d5c48cb8024e042ce5d4bb88998b6ec1cb F ext/rtree/rtree_util.tcl ee0a0311eb12175319d78bfb37302320496cee6e F ext/rtree/tkt3363.test 6662237ea75bb431cd5d262dfc9535e1023315fc F ext/rtree/viewrtree.tcl 09526398dae87a5a87c5aac2b3854dbaf8376869 -F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895 x +F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895 F ltmain.sh 3ff0879076df340d2e23ae905484d8c15d5fdea8 F main.mk 3ae48161d5a76def45cd8fa253b28295f239dd69 F mkdll.sh 7d09b23c05d56532e9d44a50868eb4b12ff4f74a @@ -138,8 +138,8 @@ F src/mutex.c 73899d158560117c02909b6e9ffe2bad2560a817 F src/mutex.h 9e686e83a88838dac8b9c51271c651e833060f1e F src/mutex_noop.c f5a07671f25a1a9bd7c10ad7107bc2585446200f F src/mutex_os2.c 6b5a74f812082a8483c3df05b47bbaac2424b9a0 -F src/mutex_unix.c 2f936339dfef1a4c142db290d575a3509b77315f -F src/mutex_w32.c a54086ca4af5356120e7e56efcdcee12602e3109 +F src/mutex_unix.c aff26c77f698b552becfedfa677ad1036c42d790 +F src/mutex_w32.c b2c1481ee93b0ac7a8fa5346570fd173b6763fdb F src/notify.c 0127121816d8a861deb0dfd111b495346bf233db F src/os.c 5029ae6c88d1869ad9034008a9531658d53438e4 F src/os.h fa3f4aa0119ff721a2da4b47ffd74406ac864c05 @@ -152,7 +152,7 @@ F src/pager.h 11852d044c86cf5a9d6e34171fb0c4fcf1f6265f F src/parse.y 6c42631e72a3d14cde2bee85e79409066066d3df F src/pcache.c c92ffd4f3e1279b3766854c6d18b5bf4aac0d1fa F src/pcache.h 435ef324197f79391f9c92b71d7f92b548ad7a36 -F src/pcache1.c 6dc833c89feac405dd8b4858232c97e679f182ec +F src/pcache1.c 211295a9ff6a5b30f1ca50516731a5cf3e9bf82c F src/pragma.c 9eb44ac1d3dc1ac3ea4f444abe1a10ae8acaa16c F src/prepare.c 0b966d20979237121ec5fec449c9db45f6b9789a F src/printf.c 508a1c59433353552b6553cba175eaa7331f8fc1 @@ -161,7 +161,7 @@ F src/resolve.c 4a61d03e49b15440878096e6030863fc628828f0 F src/rowset.c c64dafba1f9fd876836c8db8682966b9d197eb1f F src/select.c 67b0778c9585905c8aa75aaa469e76ef3c1d315a F src/shell.c db2643650b9268df89a4bedca3f1c6d9e786f1bb -F src/sqlite.h.in b309f8f5ecc76fc2d56a32d6563b3636901befb1 +F src/sqlite.h.in 393349b50ab4a22ed740a9f8cc4237d17e81e7b4 F src/sqlite3ext.h 1db7d63ab5de4b3e6b83dd03d1a4e64fef6d2a17 F src/sqliteInt.h d675e20da30db2c28e7166deb1fc758fb5b29a9a F src/sqliteLimit.h ffe93f5a0c4e7bd13e70cd7bf84cfb5c3465f45d @@ -503,7 +503,7 @@ F test/permutations.test 1ce2874df8fec876d0b963c7a3ef61c4e9df8827 F test/pragma.test a35b0be36542477183168cdb8b743f5c0d883c4d F test/pragma2.test 5364893491b9231dd170e3459bfc2e2342658b47 F test/printf.test 47e9e5bbec8509023479d54ceb71c9d05a95308a -F test/progress.test 5b075c3c790c7b2a61419bc199db87aaf48b8301 x +F test/progress.test 5b075c3c790c7b2a61419bc199db87aaf48b8301 F test/ptrchng.test ef1aa72d6cf35a2bbd0869a649b744e9d84977fc F test/quick.test f6eb3a98643b5856626ad38933334762270db129 F test/quote.test 215897dbe8de1a6f701265836d6601cc6ed103e6 @@ -728,7 +728,7 @@ F tool/genfkey.test 405a43d54f1646bfaa7a84b03bb959aef62a3a49 F tool/lemon.c 0eb9829c494dfcea449de36ad677efe7f0742801 F tool/lempar.c 2ed70b3fc896a47e07fedfe543324f008f53d223 F tool/mkkeywordhash.c 511a848b2ac7a3d93f36adc1e1086b4c5741224b -F tool/mkopts.tcl 66ac10d240cc6e86abd37dc908d50382f84ff46e x +F tool/mkopts.tcl 66ac10d240cc6e86abd37dc908d50382f84ff46e F tool/mkspeedsql.tcl a1a334d288f7adfe6e996f2e712becf076745c97 F tool/mksqlite3c.tcl 9aea914126a7c938e92f1176d77b111c11c7a956 F tool/mksqlite3h.tcl eb100dce83f24b501b325b340f8b5eb8e5106b3b @@ -746,7 +746,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/vdbe-compress.tcl 672f81d693a03f80f5ae60bfefacd8a349e76746 -P 98c49e6135ae6268a80de88f8b0284f88ef32e1d -R 403bbd0c163020937b591c0dbd3d7490 -U dan -Z d3982d3f3fe40cd70ed5dd9628e2f879 +P 904a371c6c9d3f20332b37767b06161fa0a78113 +R a9ed6e4e5323f07f7cab487d83cce5a4 +U shane +Z f4248855d1755b89d2ad5c1a3e7e2a1a diff --git a/manifest.uuid b/manifest.uuid index 592e3a09eb..eecbf63cfa 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -904a371c6c9d3f20332b37767b06161fa0a78113 \ No newline at end of file +32509bc7339cd6a46cea4c243e3418546860cb2d \ No newline at end of file diff --git a/src/mutex_unix.c b/src/mutex_unix.c index 36b0682f06..dc57988e2f 100644 --- a/src/mutex_unix.c +++ b/src/mutex_unix.c @@ -91,6 +91,7 @@ static int pthreadMutexEnd(void){ return SQLITE_OK; } **
  • SQLITE_MUTEX_STATIC_MEM2 **
  • SQLITE_MUTEX_STATIC_PRNG **
  • SQLITE_MUTEX_STATIC_LRU +**
  • SQLITE_MUTEX_STATIC_LRU2 ** ** ** The first two constants cause sqlite3_mutex_alloc() to create @@ -104,7 +105,7 @@ static int pthreadMutexEnd(void){ return SQLITE_OK; } ** might return such a mutex in response to SQLITE_MUTEX_FAST. ** ** The other allowed parameters to sqlite3_mutex_alloc() each return -** a pointer to a static preexisting mutex. Three static mutexes are +** a pointer to a static preexisting mutex. Six static mutexes are ** used by the current version of SQLite. Future versions of SQLite ** may add additional static mutexes. Static mutexes are for internal ** use by SQLite only. Applications that use SQLite mutexes should diff --git a/src/mutex_w32.c b/src/mutex_w32.c index 0bf29a3544..d82913ba4d 100644 --- a/src/mutex_w32.c +++ b/src/mutex_w32.c @@ -131,11 +131,14 @@ static int winMutexEnd(void){ ** to sqlite3_mutex_alloc() is one of these integer constants: ** ** ** ** The first two constants cause sqlite3_mutex_alloc() to create @@ -149,7 +152,7 @@ static int winMutexEnd(void){ ** might return such a mutex in response to SQLITE_MUTEX_FAST. ** ** The other allowed parameters to sqlite3_mutex_alloc() each return -** a pointer to a static preexisting mutex. Three static mutexes are +** a pointer to a static preexisting mutex. Six static mutexes are ** used by the current version of SQLite. Future versions of SQLite ** may add additional static mutexes. Static mutexes are for internal ** use by SQLite only. Applications that use SQLite mutexes should diff --git a/src/pcache1.c b/src/pcache1.c index 2bb72bc1bd..036af54a23 100644 --- a/src/pcache1.c +++ b/src/pcache1.c @@ -412,6 +412,8 @@ static int pcache1Init(void *NotUsed){ /* ** Implementation of the sqlite3_pcache.xShutdown method. +** Note that the static mutex allocated in xInit does +** not need to be freed. */ static void pcache1Shutdown(void *NotUsed){ UNUSED_PARAMETER(NotUsed); diff --git a/src/sqlite.h.in b/src/sqlite.h.in index 4b1ad23a6e..874364c127 100644 --- a/src/sqlite.h.in +++ b/src/sqlite.h.in @@ -18,8 +18,8 @@ ** Some of the definitions that are in this file are marked as ** "experimental". Experimental interfaces are normally new ** features recently added to SQLite. We do not anticipate changes -** to experimental interfaces but reserve to make minor changes if -** experience from use "in the wild" suggest such changes are prudent. +** to experimental interfaces but reserve the right to make minor changes +** if experience from use "in the wild" suggest such changes are prudent. ** ** The official C-language API documentation for SQLite is derived ** from comments in this file. This file is the authoritative source @@ -52,7 +52,7 @@ extern "C" { /* ** These no-op macros are used in front of interfaces to mark those ** interfaces as either deprecated or experimental. New applications -** should not use deprecated intrfaces - they are support for backwards +** should not use deprecated interfaces - they are support for backwards ** compatibility only. Application writers should be aware that ** experimental interfaces are subject to change in point releases. ** @@ -859,7 +859,7 @@ struct sqlite3_vfs { ** interface is called automatically by sqlite3_initialize() and ** sqlite3_os_end() is called by sqlite3_shutdown(). Appropriate ** implementations for sqlite3_os_init() and sqlite3_os_end() -** are built into SQLite when it is compiled for unix, windows, or os/2. +** are built into SQLite when it is compiled for Unix, Windows, or OS/2. ** When built for other platforms (using the [SQLITE_OS_OTHER=1] compile-time ** option) the application must supply a suitable implementation for ** sqlite3_os_init() and sqlite3_os_end(). An application-supplied @@ -1596,7 +1596,7 @@ void sqlite3_free_table(char **result); /* ** CAPI3REF: Formatted String Printing Functions {H17400} ** -** These routines are workalikes of the "printf()" family of functions +** These routines are work-alikes of the "printf()" family of functions ** from the standard C library. ** ** The sqlite3_mprintf() and sqlite3_vmprintf() routines write their @@ -1883,7 +1883,7 @@ void sqlite3_randomness(int N, void *P); ** database connections for the meaning of "modify" in this paragraph. ** ** When [sqlite3_prepare_v2()] is used to prepare a statement, the -** statement might be reprepared during [sqlite3_step()] due to a +** statement might be re-prepared during [sqlite3_step()] due to a ** schema change. Hence, the application should ensure that the ** correct authorizer callback remains in place during the [sqlite3_step()]. ** @@ -4716,7 +4716,7 @@ int sqlite3_vfs_unregister(sqlite3_vfs*); ** might return such a mutex in response to SQLITE_MUTEX_FAST. ** ** {H17017} The other allowed parameters to sqlite3_mutex_alloc() each return -** a pointer to a static preexisting mutex. {END} Four static mutexes are +** a pointer to a static preexisting mutex. {END} Six static mutexes are ** used by the current version of SQLite. Future versions of SQLite ** may add additional static mutexes. Static mutexes are for internal ** use by SQLite only. Applications that use SQLite mutexes should @@ -5208,24 +5208,35 @@ typedef struct sqlite3_pcache sqlite3_pcache; ** The [sqlite3_config]([SQLITE_CONFIG_PCACHE], ...) interface can ** register an alternative page cache implementation by passing in an ** instance of the sqlite3_pcache_methods structure. The majority of the -** heap memory used by sqlite is used by the page cache to cache data read +** heap memory used by SQLite is used by the page cache to cache data read ** from, or ready to be written to, the database file. By implementing a ** custom page cache using this API, an application can control more -** precisely the amount of memory consumed by sqlite, the way in which +** precisely the amount of memory consumed by SQLite, the way in which ** said memory is allocated and released, and the policies used to ** determine exactly which parts of a database file are cached and for ** how long. ** -** The contents of the structure are copied to an internal buffer by sqlite +** The contents of the structure are copied to an internal buffer by SQLite ** within the call to [sqlite3_config]. ** ** The xInit() method is called once for each call to [sqlite3_initialize()] ** (usually only once during the lifetime of the process). It is passed ** a copy of the sqlite3_pcache_methods.pArg value. It can be used to set ** up global structures and mutexes required by the custom page cache -** implementation. The xShutdown() method is called from within -** [sqlite3_shutdown()], if the application invokes this API. It can be used -** to clean up any outstanding resources before process shutdown, if required. +** implementation. +** +** The xShutdown() method is called from within [sqlite3_shutdown()], +** if the application invokes this API. It can be used to clean up +** any outstanding resources before process shutdown, if required. +** +** SQLite holds a [SQLITE_MUTEX_RECURSIVE] mutex when it invokes +** the xInit method, so the xInit method need not be threadsafe. The +** xShutdown method is only called from [sqlite3_shutdown()] so it does +** not need to be threadsafe either. All other methods must be threadsafe +** in multithreaded applications. +** +** SQLite will never invoke xInit() more than once without an intervening +** call to xShutdown(). ** ** The xCreate() method is used to construct a new cache instance. The ** first parameter, szPage, is the size in bytes of the pages that must diff --git a/test/progress.test b/test/progress.test old mode 100755 new mode 100644 diff --git a/tool/mkopts.tcl b/tool/mkopts.tcl old mode 100755 new mode 100644