From: drh Date: Tue, 2 Feb 2016 02:53:49 +0000 (+0000) Subject: Merge recent enhancements from trunk. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7c9ecc62c5db76c63e0a21c02dfa176f48ceaacc;p=thirdparty%2Fsqlite.git Merge recent enhancements from trunk. FossilOrigin-Name: 347f6a80c2aa6dde9b58d28069156db22cd21b6d --- 7c9ecc62c5db76c63e0a21c02dfa176f48ceaacc diff --cc manifest index ff2c17ccf8,3952435799..80f4b12516 --- a/manifest +++ b/manifest @@@ -1,8 -1,8 +1,8 @@@ -C Enhance\sthe\scomment\son\sthe\ssqlite3_index_constraint\sobject\sto\sbring\sattention\s\nto\sthe\sfact\sthan\siColumn\sfield\scan\sbe\snegative\sfor\sa\srowid. -D 2016-02-02T02:04:21.840 +C Merge\srecent\senhancements\sfrom\strunk. - D 2016-01-20T12:18:31.407 - F Makefile.in a476545d0c8626224d0bacac85c6e2967474af81 ++D 2016-02-02T02:53:49.800 + F Makefile.in 027c1603f255390c43a426671055a31c0a65fdb4 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 - F Makefile.msc 01e855f958932d0d3ed62ec675fc63e2cef61fcb + F Makefile.msc 72b7858f02017611c3ac1ddc965251017fed0845 F README.md 8ecc12493ff9f820cdea6520a9016001cb2e59b7 F VERSION 866588d1edf0ccb5b0d33896974338f97564f719 F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50 @@@ -10,10 -10,11 +10,11 @@@ F art/sqlite370.eps aa97a671332b432a54e F art/sqlite370.ico af56c1d00fee7cd4753e8631ed60703ed0fc6e90 F art/sqlite370.jpg d512473dae7e378a67e28ff96a34da7cb331def2 F autoconf/INSTALL 83e4a25da9fd053c7b3665eaaaf7919707915903 - F autoconf/Makefile.am 089e5ecdb5761e64ea1013ded02feb4d8b29927d - F autoconf/README 14458f1046c118efa721aadec5f227e876d3cd38 + F autoconf/Makefile.am 1c1657650775960804945dc392e14d9e43c5ed84 + F autoconf/Makefile.msc 2ce3b1565a52d7083a1dbf57a1706fd14cc1ee0c F autoconf/README.first 6c4f34fe115ff55d4e8dbfa3cecf04a0188292f7 - F autoconf/configure.ac 2f41055b10873cfe443a08185343e38c47e2f9f0 -F autoconf/README.txt e9757a381e5ce2553dbaa6247bb8ad00eb8d87aa ++F autoconf/README.txt e9757a381e5ce2553dbaa6247bb8ad00eb8d87aa w autoconf/README + F autoconf/configure.ac 72a5e42beb090b32bca580285dc0ab3c4670adb8 F autoconf/tea/Makefile.in b438a7020446c8a8156e8d97c8914a04833da6fd F autoconf/tea/README 3e9a3c060f29a44344ab50aec506f4db903fb873 F autoconf/tea/aclocal.m4 52c47aac44ce0ddb1f918b6993e8beb8eee88f43 @@@ -288,10 -290,10 +290,10 @@@ F src/auth.c b56c78ebe40a2110fd361379f7 F src/backup.c 2869a76c03eb393ee795416e2387005553df72bc F src/bitvec.c 1a78d450a17c5016710eec900bedfc5729bf9bdf F src/btmutex.c bc87dd3b062cc26edfe79918de2200ccb8d41e73 - F src/btree.c 7d0dc384f737edf264a3625417f52d2561a0e94c - F src/btree.h 8b91bee00ad110e0ae1645ca51d52d23db529380 -F src/btree.c a2a0244ea3f0b3f57f75019c2f229c744ca5d202 -F src/btree.h 368ceeb4bd9312dc8df2ffd64b4b7dbcf4db5f8e -F src/btreeInt.h c18b7d2a3494695133e4e60ee36061d37f45d9a5 -F src/build.c 33dea2cef04c16a902c55f9d83b1a2065f213979 ++F src/btree.c 3d3c562e11ae10f4824f1ea12d7b6dbe13183464 ++F src/btree.h 3c4f3fc066071991907e19ccf3fac5ac4a36bfc1 +F src/btreeInt.h ca40607c2c9d4b4b7ded98e3d707b15c2f17f1bf - F src/build.c 408543fbdded83ff65cee535aa8f787e36a5db7b ++F src/build.c a183756487c190aadad28e7865d84255ffe29aee F src/callback.c 29ae4faba226c7ebb9aee93016b5ce8a8f071261 F src/complete.c addcd8160b081131005d5bc2d34adf20c1c5c92f F src/ctime.c 60e135af364d777a9ab41c97e5e89cd224da6198 @@@ -329,12 -331,12 +331,12 @@@ F src/os.c 8fd25588eeba74068d41102d2681 F src/os.h 3e57a24e2794a94d3cf2342c6d9a884888cd96bf F src/os_common.h abdb9a191a367793268fe553d25bab894e986a0e F src/os_setup.h c9d4553b5aaa6f73391448b265b89bed0b890faa - F src/os_unix.c b509b49b40a269e7b75ab511b6e92b2dc9444359 - F src/os_win.c 386fba30419e8458b13209781c2af5590eab2811 + F src/os_unix.c 5bb20172d0c9a6afcfa829a88c406970593c848d + F src/os_win.c ccf29ddded3e41e506b6bd98c1171aa0963b23f2 F src/os_win.h eb7a47aa17b26b77eb97e4823f20a00b8bda12ca - F src/pager.c d718fb21839adc7b7e1e7f568c06d5d3323bf957 -F src/pager.c 2916c66aee50f69d9ec56a7619b62d9c6a3bee61 -F src/pager.h 1c2a49143dfba9e69cc8159ef019f472ed8d260b -F src/parse.y 426a91fbbbf7cdde3fd4b8798de7317a8782bec5 ++F src/pager.c 040531b0c2e4f046ee077600bc5814a4ac42597e +F src/pager.h 4a489a631d6f6dfcd52f629dd22e9932e58efcaf - F src/parse.y 2a2b07ab26adc58878bc9c6091e16b87b89c40cc ++F src/parse.y e6a091aeae2d7c3c30ee5f337493065d7a0962e0 F src/pcache.c 73895411fa6b7bd6f0091212feabbe833b358d23 F src/pcache.h 4d0ccaad264d360981ec5e6a2b596d6e85242545 F src/pcache1.c 72f644dc9e1468c72922eff5904048427b817051 @@@ -345,12 -347,12 +347,12 @@@ F src/printf.c 98a5cef7fc84577ab8a3098c F src/random.c ba2679f80ec82c4190062d756f22d0c358180696 F src/resolve.c 9f7ce3a3c087afb7597b7c916c99126ff3f12f0c F src/rowset.c eccf6af6d620aaa4579bd3b72c1b6395d9e9fa1e - F src/select.c 718954db86277d696c520fe671148db1e9c4ed3c + F src/select.c ea6f3b0c279aa37eb3701792d094673a7ad1bf88 F src/shell.c dcd7a83645ef2a58ee9c6d0ea4714d877d7835c4 - F src/sqlite.h.in 214476a62012e578f42133a9a3b4f97a9aa421a3 - F src/sqlite3.rc 992c9f5fb8285ae285d6be28240a7e8d3a7f2bad + F src/sqlite.h.in cf22ad1d52dca2c9862d63833e581028119aab7e + F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 F src/sqlite3ext.h dfbe62ffd95b99afe2140d8c35b180d11924072d - F src/sqliteInt.h d2bf936ba54f0696ec257e20f49f9663c790edd0 -F src/sqliteInt.h 2f80b9b1506a8d602b2a99f3f0bfae22df3e7d70 ++F src/sqliteInt.h 02cef8cd17974ef60c25d27c6a83a3aeb9ebb676 F src/sqliteLimit.h 216557999cb45f2e3578ed53ebefe228d779cb46 F src/status.c 70912d7be68e9e2dbc4010c93d344af61d4c59ba F src/table.c 51b46b2a62d1b3a959633d593b89bab5e2c9155e @@@ -404,29 -406,29 +406,29 @@@ F src/test_windirent.h b12055cab6227f7b F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9 F src/threads.c bbfb74450643cb5372a43ad4f6cffd7e9dfcecb0 F src/tokenize.c 5606871a377f390af7040ec3c12e0d183512d785 - F src/treeview.c 78842e90c1f71269e7a73a1d4221b6fe360bab66 - F src/trigger.c 056e51182a3677434423e3be0c74e61b90b4a663 + F src/treeview.c dc39ccf04e9331237388b9cb73289c9d87ea050b + F src/trigger.c 72d876b2d0c66604a112362bdae07dae9b104816 F src/update.c 17332f9fe818cbc0444c36a811800af8498af4c3 - F src/utf.c 32d7f82aa921322f3e1c956f4b58f019ebd2c6b3 - F src/util.c e802e8e311a0d6c48cd1b3e89db164f6f0248d70 + F src/utf.c 10cc2519e82e3369344d0969ad4b1a333dc86d18 + F src/util.c 72d40df0a52d3f30b462a15f0e094fcbade6dc82 -F src/vacuum.c 2ddd5cad2a7b9cef7f9e431b8c7771634c6b1701 -F src/vdbe.c a0a0ada4b51161d3950fe30fc696b6c8235a841f +F src/vacuum.c 983cc3754718ef169a6ea9aef86798bd28106f21 - F src/vdbe.c 7013f866c0a9d967093a8de5efc21f26eda65fd3 ++F src/vdbe.c f4a056b92fac805b61064ac03450a79978ddfbc6 F src/vdbe.h 7a733ea8aac1b77305a67698e784fa3484ee3337 - F src/vdbeInt.h 42eefa4f9e7432b9968d321b44e48821ec13b189 - F src/vdbeapi.c ffae8f5af4570fbd548504e815e9fb7227f0822e - F src/vdbeaux.c c7854a476860496fd74d9785e571eb2fca964561 + F src/vdbeInt.h 4b69d5451bcadd473e745af53ef1e8abfdce0a79 + F src/vdbeapi.c 9d640d5efd9a140a6bda8da53b220aa258167993 -F src/vdbeaux.c f0e7cfa04f7ac44d69866868531dbaf20659d0a2 ++F src/vdbeaux.c f2afda3daa3b89d6ccefffb0ba5b93ba943527ef F src/vdbeblob.c 37c3d11a753e403698c69e17383d282e1ae73e75 F src/vdbemem.c b9181e77eca2a095929d46250daf85c8d2621fc0 - F src/vdbesort.c 0971557e5d3c289e46f56a52aed2197c13251de7 - F src/vdbetrace.c 8befe829faff6d9e6f6e4dee5a7d3f85cc85f1a0 + F src/vdbesort.c ef3c6d1f1a7d44cf67bb2bee59ea3d1fe5bad174 + F src/vdbetrace.c f75c5455d8cf389ef86a8bfdfd3177e0e3692484 F src/vtab.c 320682cca733115b4cbe71320b5c5eeb1074ebde - F src/vxworks.h 974e7d9a98f602d6310d563e1dc4e08f9fc48e47 + F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9 -F src/wal.c d21b99fd1458159d0b1ecdccc8ee6ada4fdc4c54 -F src/wal.h 2f7c831cf3b071fa548bf2d5cac640846a7ff19c +F src/wal.c 2390cb2e5cc8529ab4dee92ee8292db1a4f824d8 +F src/wal.h 327e94c3e366154f52a8d9be9be0ea790cc4e08c F src/walker.c 0f142b5bd3ed2041fc52d773880748b212e63354 - F src/where.c bb69654f841ae7af0a20cc6fb8f0ac57901c31be + F src/where.c af9bf5dcec1a0e52726c550924aa91d837166251 F src/whereInt.h 78b6b4de94db84aecbdc07fe3e38f648eb391e9a - F src/wherecode.c 8dee26eb181ea9daa8b1a4d96f34c0860aaf99bd + F src/wherecode.c 923f5d04b379b7417bc29f3b86b5eae9d1923d72 F src/whereexpr.c 197a448b52073aee43eca3a2233fc113369eb2d4 F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2 F test/affinity2.test a6d901b436328bd67a79b41bb0ac2663918fe3bd @@@ -1363,8 -1362,8 +1365,8 @@@ F test/zeroblob.test 3857870fe681b81856 F test/zerodamage.test cf6748bad89553cc1632be51a6f54e487e4039ac F tool/GetFile.cs a15e08acb5dd7539b75ba23501581d7c2b462cb5 F tool/GetTclKit.bat 629d87562e0487c386db630033931d12d62e6372 -F tool/addopcodes.tcl 4ca9c3ef196f08da30add5d07ce0c9458dc8c633 +F tool/addopcodes.tcl 783164304cdbf2b473e119b2c4db0c01b92a2b84 - F tool/build-all-msvc.bat 204a039f985d5a4f4f9df3a3aa594fd17848c37e x + F tool/build-all-msvc.bat 77f85f4268c2711d637c629610d0cf3df5338638 x F tool/build-shell.sh 950f47c6174f1eea171319438b93ba67ff5bf367 F tool/cg_anno.tcl 692ce4b8693d59e3a3de77ca97f4139ecfa641b0 x F tool/checkSpacing.c 810e51703529a204fc4e1eb060e9ab663e3c06d2 @@@ -1379,10 -1378,11 +1381,11 @@@ F tool/lemon.c 799e73e19a33b8dd7767a7fa F tool/lempar.c 3ec1463a034b37d87d782be5f6b8b10a3b1ecbe7 F tool/loadfts.c c3c64e4d5e90e8ba41159232c2189dba4be7b862 F tool/logest.c eef612f8adf4d0993dafed0416064cf50d5d33c6 - F tool/mkautoconfamal.sh 5a5441280b509d2bb3bdc71bfb63781b0d570373 + F tool/mkautoconfamal.sh a29b14d54302b33fd892958f6895582ea90e4a45 -F tool/mkkeywordhash.c 06ec0b78bd4fa68c12d90ef2bdfe76b039133ff8 +F tool/mkkeywordhash.c 24c1fb16c51f4f72c9027230ff575c47b6d3b828 - F tool/mkopcodec.tcl edde8adc42621b5e598127f8cdc6d52cfe21f52b - F tool/mkopcodeh.tcl e04177031532b7aa9379ded50e820231ac4abd6e + F tool/mkmsvcmin.tcl d57e6efc9428605f5418d0b235721ddf7b5d9c0b + F tool/mkopcodec.tcl d1b6362bd3aa80d5520d4d6f3765badf01f6c43c + F tool/mkopcodeh.tcl 385c62d78c38b2d92146dcb5abd319dbbc33506d F tool/mkopts.tcl 66ac10d240cc6e86abd37dc908d50382f84ff46e F tool/mkpragmatab.tcl f0d5bb266d1d388cf86fce5ba01a891e95d72d41 F tool/mkspeedsql.tcl a1a334d288f7adfe6e996f2e712becf076745c97 @@@ -1422,7 -1422,7 +1425,7 @@@ F tool/vdbe_profile.tcl 246d0da094856d7 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f - P fccc5f20c360fa17c3692a9f1fc1d16612632a7f 18d61c8e40ed1466b6a3a2f53bf0eeb09687c20e - R c5e7135c9880ad67a6f698683df434c2 -P 6d7d4703ebf3754bec74123d5ba7e861a705f90f -R a0fd58918162f72722cea72a597641d9 ++P 5520f600eade720f465575ab1661dcddaba5adcf d8b7b1996eefae7768bfcb82d4ff22c69392aa63 ++R 9213491ac284f4e4eb57c9c322bab19c U drh - Z 0f1cff00228814b4a74b5faddee4cad3 -Z 8a77cde1543981fcb216eb719b02e019 ++Z a83bc501058d2433447cf9fd85f4cd41 diff --cc manifest.uuid index fe8f92b587,dae04066fb..4126f5ea94 --- a/manifest.uuid +++ b/manifest.uuid @@@ -1,1 -1,1 +1,1 @@@ - 5520f600eade720f465575ab1661dcddaba5adcf -d8b7b1996eefae7768bfcb82d4ff22c69392aa63 ++347f6a80c2aa6dde9b58d28069156db22cd21b6d diff --cc src/vdbe.c index ae35da15fb,1cf4cb16a7..e80859a940 --- a/src/vdbe.c +++ b/src/vdbe.c @@@ -3003,18 -3008,11 +3012,16 @@@ case OP_Savepoint: case OP_AutoCommit: { int desiredAutoCommit; int iRollback; - int turnOnAC; + int bConcurrent; + int hrc; desiredAutoCommit = pOp->p1; iRollback = pOp->p2; + bConcurrent = pOp->p3; - turnOnAC = desiredAutoCommit && !db->autoCommit; assert( desiredAutoCommit==1 || desiredAutoCommit==0 ); assert( desiredAutoCommit==1 || iRollback==0 ); + assert( desiredAutoCommit==0 || bConcurrent==0 ); + assert( db->autoCommit==0 || db->bConcurrent==0 ); assert( db->nVdbeActive>0 ); /* At least this one VM is active */ assert( p->bIsReader ); @@@ -3037,7 -3021,14 +3030,21 @@@ assert( desiredAutoCommit==1 ); sqlite3RollbackAll(db, SQLITE_ABORT_ROLLBACK); db->autoCommit = 1; - }else if( desiredAutoCommit && db->nVdbeWrite>0 ){ - /* If this instruction implements a COMMIT and other VMs are writing - ** return an error indicating that the other VMs must complete first. - */ + db->bConcurrent = 0; ++ }else if( desiredAutoCommit ++ && (db->nVdbeWrite>0 || (db->bConcurrent && db->nVdbeActive>1)) ){ ++ /* A transaction may only be committed if there are no other active ++ ** writer VMs. If the transaction is CONCURRENT, then it may only be ++ ** committed if there are no active VMs at all (readers or writers). ++ ** ++ ** If this instruction is a COMMIT and the transaction may not be ++ ** committed due to one of the conditions above, return an error ++ ** indicating that other VMs must complete before the COMMIT can ++ ** be processed. */ + sqlite3VdbeError(p, "cannot commit transaction - " + "SQL statements in progress"); + rc = SQLITE_BUSY; + break; }else if( (rc = sqlite3VdbeCheckFk(p, 1))!=SQLITE_OK ){ goto vdbe_return; }else{ @@@ -3242,25 -3230,11 +3249,23 @@@ case OP_SetCookie: pDb = &db->aDb[pOp->p1]; assert( pDb->pBt!=0 ); assert( sqlite3SchemaMutexHeld(db, pOp->p1, 0) ); - pIn3 = &aMem[pOp->p3]; - sqlite3VdbeMemIntegerify(pIn3); +#ifndef SQLITE_OMIT_CONCURRENT + if( db->bConcurrent + && (pOp->p2==BTREE_USER_VERSION || pOp->p2==BTREE_APPLICATION_ID) + ){ + rc = SQLITE_ERROR; + sqlite3VdbeError(p, "cannot modify %s within CONCURRENT transaction", + pOp->p2==BTREE_USER_VERSION ? "user_version" : "application_id" + ); + break; + } +#endif /* See note about index shifting on OP_ReadCookie */ - rc = sqlite3BtreeUpdateMeta(pDb->pBt, pOp->p2, (int)pIn3->u.i); + rc = sqlite3BtreeUpdateMeta(pDb->pBt, pOp->p2, pOp->p3); if( pOp->p2==BTREE_SCHEMA_VERSION ){ /* When the schema cookie changes, record the new cookie internally */ + assert( db->bConcurrent==0 ); - pDb->pSchema->schema_cookie = (int)pIn3->u.i; + pDb->pSchema->schema_cookie = pOp->p3; db->flags |= SQLITE_InternChanges; }else if( pOp->p2==BTREE_FILE_FORMAT ){ /* Record changes in the file format */