From: mistachkin Date: Tue, 25 Sep 2012 12:45:03 +0000 (+0000) Subject: Merge updates from trunk. X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8ea1fb415bbcf36721776d2ff5bd09d62bd2207e;p=thirdparty%2Fsqlite.git Merge updates from trunk. FossilOrigin-Name: 4a470741b65938dd38418c9c1a6e87dad6a84fc7 --- 8ea1fb415bbcf36721776d2ff5bd09d62bd2207e diff --cc manifest index 0f277a2bc3,2e6bf42149..1a4afd51ef --- a/manifest +++ b/manifest @@@ -1,12 -1,12 +1,12 @@@ - C Initial\sprototype\sof\sSQLITE_CONFIG_READONLY. - D 2012-09-10T10:29:06.407 -C Remove\san\sunused\ssubfunction\sparameter\sand\san\sobsolete\scomment\sfrom\sthe\nquery\splanner\slogic\sin\swhere.c. -D 2012-09-24T19:50:00.842 ++C Merge\supdates\sfrom\strunk. ++D 2012-09-25T12:45:03.240 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f - F Makefile.in abd5c10d21d1395f140d9e50ea999df8fa4d6376 + F Makefile.in 5f4f26109f9d80829122e0e09f9cda008fa065fb F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 - F Makefile.msc 2d696f01c228995e98b3b953a08b7bba1d48c130 - F Makefile.vxworks 879f034a64062a364b21000266bbd5bc6e0c19b9 + F Makefile.msc d97ae1025a1b7bb2b365b135fc0aa25247e736b2 + F Makefile.vxworks b18ad88e9a8c6a001f5cf4a389116a4f1a7ab45f F README cd04a36fbc7ea56932a4052d7d0b7f09f27c33d6 - F VERSION a71848df48082f1d6585d4b0819d530fc455485d + F VERSION edab4af5a4623f8198833ea481ce98ab53750a8d F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50 F addopcodes.awk 17dc593f791f874d2c23a0f9360850ded0286531 F art/sqlite370.eps aa97a671332b432a54e1d74ff5e8775be34200c2 @@@ -126,17 -124,17 +124,17 @@@ F src/btmutex.c 976f45a12e37293e32cae02 F src/btree.c 9cf6de113d23d47967df24b8d8ce6501c879d7e6 F src/btree.h 4aee02e879211bfcfd3f551769578d2e940ab6c2 F src/btreeInt.h 4e5c2bd0f9b36b2a815a6d84f771a61a65830621 - F src/build.c a3b700afd475e6387da59be6f2e86161e80d6d87 + F src/build.c c4555e16f8ccdadb2616014c617ed8166c5a93f7 F src/callback.c 0cb4228cdcd827dcc5def98fb099edcc9142dbcd F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac - F src/ctime.c 500d019da966631ad957c37705642be87524463b + F src/ctime.c 72a70dcfda75d3a1f81041ce4573e7afddcd8e4e F src/date.c 067a81c9942c497aafd2c260e13add8a7d0c7dd4 F src/delete.c 335f36750dc6ac88d580aa36a6487459be9889de - F src/expr.c 217840a107dcc1e5dbb57cea311daad04bedbb9a + F src/expr.c 4d1cef0fae6f3cf3c754773fd413f3e221021003 F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb - F src/fkey.c 9c77d842dc9961d92a06a65abb80c64ef1750296 - F src/func.c 18dfedfb857e100b05755a1b12e88b389f957879 - F src/global.c 2f3b6eb7dd5dc94f328f5b40bcdca262d4218be4 + F src/fkey.c c82a04e7a92bb728f9ab972b76590403283be2af + F src/func.c cbb90dc84b22eea25caf39528d342279e61b8898 -F src/global.c fb44b11e02e06c995e6ed6642509edd23599d584 ++F src/global.c 617cf51a1c34d304e29843edb105f99562da2bf7 F src/hash.c a4031441741932da9e7a65bee2b36b5d0e81c073 F src/hash.h 2894c932d84d9f892d4b4023a75e501f83050970 F src/hwtime.h d32741c8f4df852c7d959236615444e2b1063b08 @@@ -145,7 -143,7 +143,7 @@@ F src/journal.c 552839e54d1bf76fb8f7abe F src/legacy.c a199d7683d60cef73089e892409113e69c23a99f F src/lempar.c 0ee69fca0be54cd93939df98d2aca4ca46f44416 F src/loadext.c f20382fbaeec832438a1ba7797bee3d3c8a6d51d - F src/main.c 9600da7dae7ede8999fdd8a59cb55f7abe6809ed -F src/main.c 97d13e749ae84fe62238a5940c5b46b2b22cd369 ++F src/main.c aa1b70eb184c62be0e57939223f49616fa330c6f F src/malloc.c fe085aa851b666b7c375c1ff957643dc20a04bf6 F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645 F src/mem1.c 437c7c4af964895d4650f29881df63535caaa1fa @@@ -176,12 -174,12 +174,12 @@@ F src/printf.c 4a9f882f1c1787a8b494a298 F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50 F src/resolve.c 9e28280ec98035f31900fdd1db01f86f68ca6c32 F src/rowset.c 64655f1a627c9c212d9ab497899e7424a34222e0 - F src/select.c f843c872a97baa1594c2cc3d4c003409a7bd03af - F src/shell.c 87953c5d9c73d9494db97d1607e2e2280418f261 - F src/sqlite.h.in 340c7c9e804335a46d42c0cf300b2ba04930c358 + F src/select.c 1fad66b73a69c4004c9969a95b46d1f03390677d + F src/shell.c 8ee5a3cb502e2d574f97b43972e6c1e275e7bec7 -F src/sqlite.h.in cbe846facaba903654b4136c97e7f57b3ac0bac7 ++F src/sqlite.h.in 360dadb3a8e24011349cfe45406a313657cc964c F src/sqlite3.rc fea433eb0a59f4c9393c8e6d76a6e2596b1fe0c0 F src/sqlite3ext.h 6904f4aadf976f95241311fbffb00823075d9477 - F src/sqliteInt.h 7539de59f231581d153b3f3df47903c711554b52 -F src/sqliteInt.h 6b17114bb5c6ae30d360aeeef30ab40587afad4e ++F src/sqliteInt.h a07fdc863510639b287d0721ba16a8d130af2c3e F src/sqliteLimit.h 164b0e6749d31e0daa1a4589a169d31c0dec7b3d F src/status.c 35939e7e03abf1b7577ce311f48f682c40de3208 F src/table.c 2cd62736f845d82200acfa1287e33feb3c15d62e @@@ -210,7 -208,7 +208,7 @@@ F src/test_intarray.c d879bbf8e4ce085ab F src/test_intarray.h 489edb9068bb926583445cb02589344961054207 F src/test_journal.c f5c0a05b7b3d5930db769b5ee6c3766dc2221a64 F src/test_loadext.c df586c27176e3c2cb2e099c78da67bf14379a56e - F src/test_malloc.c 2fdd098d25a101e228c6a7576d0ebdd87371f9ff -F src/test_malloc.c 01cd65ae7ae93de9fbf8214d1ee6b4eba4850700 ++F src/test_malloc.c 3f25943939e8ec73fa5de60744f93381e138a126 F src/test_multiplex.c ac0fbc1748e5b86a41a1d7a84654fae0d53a881d F src/test_multiplex.h e99c571bc4968b7a9363b661481f3934bfead61d F src/test_mutex.c a6bd7b9cf6e19d989e31392b06ac8d189f0d573e @@@ -1014,10 -1016,7 +1016,7 @@@ F tool/vdbe-compress.tcl f12c884766bd14 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381 F tool/win/sqlite.vsix 67d8a99aceb56384a81b3f30d6c71743146d2cc9 - P a716b9a3091072774d067c0a1258b0f4c39a4180 - R 29425f73d83a1bbd7b16d5c03bbdc177 - T *branch * configReadOnly - T *sym-configReadOnly * - T -sym-trunk * -P 22989f3588531efd555cc29d6c576e7a34b7edc4 -R af274415395e47bec73279dd70f3872e -U drh -Z 2c59ca6ec247c019d5fe7043b4d83355 ++P 7c3401657a0410dd121d49742db102c6e7494964 349a55cd8ba9ce65ebfd987ecfebd1204f7d0a85 ++R ed3fa0fcbd93fed891c622a4358fe97e +U mistachkin - Z c66435427bfb7211d34f4620152d3df9 ++Z d5df0a65995ef30255cb29bc68e328f8 diff --cc manifest.uuid index d52bd36407,2d6a191e78..209999d15e --- a/manifest.uuid +++ b/manifest.uuid @@@ -1,1 -1,1 +1,1 @@@ - 7c3401657a0410dd121d49742db102c6e7494964 -349a55cd8ba9ce65ebfd987ecfebd1204f7d0a85 ++4a470741b65938dd38418c9c1a6e87dad6a84fc7 diff --cc src/global.c index a319b0679f,dc86e1e081..9e9404f44b --- a/src/global.c +++ b/src/global.c @@@ -142,7 -146,7 +146,8 @@@ SQLITE_WSD struct Sqlite3Config sqlite3 1, /* bCoreMutex */ SQLITE_THREADSAFE==1, /* bFullMutex */ SQLITE_USE_URI, /* bOpenUri */ + SQLITE_ALLOW_COVERING_INDEX_SCAN, /* bUseCis */ + 0, /* bReadOnly */ 0x7ffffffe, /* mxStrlen */ 128, /* szLookaside */ 500, /* nLookaside */ diff --cc src/main.c index 7ac4b6f851,466dee5516..4ad9588369 --- a/src/main.c +++ b/src/main.c @@@ -475,11 -475,11 +475,16 @@@ int sqlite3_config(int op, ...) break; } + case SQLITE_CONFIG_COVERING_INDEX_SCAN: { + sqlite3GlobalConfig.bUseCis = va_arg(ap, int); + break; + } + + case SQLITE_CONFIG_READONLY: { + sqlite3GlobalConfig.bReadOnly = va_arg(ap, int); + break; + } + default: { rc = SQLITE_ERROR; break; diff --cc src/sqlite.h.in index ef0aa92ee3,bf97679ab8..57531e1b1e --- a/src/sqlite.h.in +++ b/src/sqlite.h.in @@@ -1562,19 -1563,18 +1563,31 @@@ struct sqlite3_mem_methods ** disabled. The default value may be changed by compiling with the ** [SQLITE_USE_URI] symbol defined. ** + ** [[SQLITE_CONFIG_COVERING_INDEX_SCAN]]
SQLITE_CONFIG_COVERING_INDEX_SCAN + **
This option taks a single integer argument which is interpreted as + ** a boolean in order to enable or disable the use of covering indices for + ** full table scans in the query optimizer. The default setting is determined + ** by the [SQLITE_ALLOW_COVERING_INDEX_SCAN] compile-time option, or is "on" + ** if that compile-time option is omitted. + ** The ability to disable the use of covering indices for full table scans + ** is because some incorrectly coded legacy applications might malfunction + ** malfunction when the optimization is enabled. Providing the ability to + ** disable the optimization allows the older, buggy application code to work + ** without change even with newer versions of SQLite. + ** +** [[SQLITE_CONFIG_READONLY]]
SQLITE_CONFIG_READONLY +**
This option takes a single argument of type int. If non-zero, then +** read-only mode for opening databases is globally enabled. If the parameter +** is zero, then read-only mode for opening databases is globally disabled. If +** read-only mode for opening databases is globally enabled, all databases +** opened by [sqlite3_open()], [sqlite3_open16()], or specified as part of +** [ATTACH] commands will be opened in read-only mode. Additionally, all calls +** to [sqlite3_open_v2()] must have the [SQLITE_OPEN_READONLY] flag set in the +** third argument; otherwise, a [SQLITE_READONLY] error will be returned. If it +** is globally disabled, [sqlite3_open()], [sqlite3_open16()], +** [sqlite3_open_v2()], and [ATTACH] commands will function normally. By +** default, read-only mode is globally disabled. +** ** [[SQLITE_CONFIG_PCACHE]] [[SQLITE_CONFIG_GETPCACHE]] **
SQLITE_CONFIG_PCACHE and SQLITE_CONFIG_GETPCACHE **
These options are obsolete and should not be used by new code. @@@ -1600,7 -1600,7 +1613,8 @@@ #define SQLITE_CONFIG_URI 17 /* int */ #define SQLITE_CONFIG_PCACHE2 18 /* sqlite3_pcache_methods2* */ #define SQLITE_CONFIG_GETPCACHE2 19 /* sqlite3_pcache_methods2* */ - #define SQLITE_CONFIG_READONLY 20 /* int */ + #define SQLITE_CONFIG_COVERING_INDEX_SCAN 20 /* int */ ++#define SQLITE_CONFIG_READONLY 21 /* int */ /* ** CAPI3REF: Database Connection Configuration Options diff --cc src/sqliteInt.h index 002927b10e,7b9894254a..6298c417da --- a/src/sqliteInt.h +++ b/src/sqliteInt.h @@@ -2462,7 -2465,7 +2465,8 @@@ struct Sqlite3Config int bCoreMutex; /* True to enable core mutexing */ int bFullMutex; /* True to enable full mutexing */ int bOpenUri; /* True to interpret filenames as URIs */ + int bUseCis; /* Use covering indices for full-scans */ + int bReadOnly; /* True to force read-only mode */ int mxStrlen; /* Maximum string length */ int szLookaside; /* Default lookaside buffer size */ int nLookaside; /* Default lookaside buffer count */ diff --cc src/test_malloc.c index b2aa848b53,e1420de648..f03a9ba0e0 --- a/src/test_malloc.c +++ b/src/test_malloc.c @@@ -1197,34 -1197,35 +1197,63 @@@ static int test_config_uri return TCL_OK; } + /* + ** Usage: sqlite3_config_cis BOOLEAN + ** + ** Enables or disables the use of the covering-index scan optimization. + ** SQLITE_CONFIG_COVERING_INDEX_SCAN. + */ + static int test_config_cis( + void * clientData, + Tcl_Interp *interp, + int objc, + Tcl_Obj *CONST objv[] + ){ + int rc; + int bUseCis; + + if( objc!=2 ){ + Tcl_WrongNumArgs(interp, 1, objv, "BOOL"); + return TCL_ERROR; + } + if( Tcl_GetBooleanFromObj(interp, objv[1], &bUseCis) ){ + return TCL_ERROR; + } + + rc = sqlite3_config(SQLITE_CONFIG_COVERING_INDEX_SCAN, bUseCis); + Tcl_SetResult(interp, (char *)sqlite3TestErrorName(rc), TCL_VOLATILE); + + return TCL_OK; + } + +/* +** Usage: sqlite3_config_readonly BOOLEAN +** +** Enables or disables global read-only mode using SQLITE_CONFIG_READONLY. +*/ +static int test_config_readonly( + void * clientData, + Tcl_Interp *interp, + int objc, + Tcl_Obj *CONST objv[] +){ + int rc; + int bReadOnly; + + if( objc!=2 ){ + Tcl_WrongNumArgs(interp, 1, objv, "BOOL"); + return TCL_ERROR; + } + if( Tcl_GetBooleanFromObj(interp, objv[1], &bReadOnly) ){ + return TCL_ERROR; + } + + rc = sqlite3_config(SQLITE_CONFIG_READONLY, bReadOnly); + Tcl_SetResult(interp, (char *)sqlite3TestErrorName(rc), TCL_VOLATILE); + + return TCL_OK; +} + /* ** Usage: sqlite3_dump_memsys3 FILENAME ** sqlite3_dump_memsys5 FILENAME @@@ -1475,7 -1476,7 +1504,8 @@@ int Sqlitetest_malloc_Init(Tcl_Interp * { "sqlite3_config_lookaside", test_config_lookaside ,0 }, { "sqlite3_config_error", test_config_error ,0 }, { "sqlite3_config_uri", test_config_uri ,0 }, + { "sqlite3_config_cis", test_config_cis ,0 }, + { "sqlite3_config_readonly", test_config_readonly ,0 }, { "sqlite3_db_config_lookaside",test_db_config_lookaside ,0 }, { "sqlite3_dump_memsys3", test_dump_memsys3 ,3 }, { "sqlite3_dump_memsys5", test_dump_memsys3 ,5 },