From: drh Date: Tue, 2 Feb 2016 02:22:30 +0000 (+0000) Subject: Merge all recent enhancements from trunk. X-Git-Tag: version-3.13.0~148^2~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=33c1eb64772caf48a33d92e1a3c5a577c9ba1aa9;p=thirdparty%2Fsqlite.git Merge all recent enhancements from trunk. FossilOrigin-Name: f3f9200115caf4b356f90ec97c351d1afbcb9bf6 --- 33c1eb64772caf48a33d92e1a3c5a577c9ba1aa9 diff --cc Makefile.msc index 08f75bf82a,3427b8177a..0a0a99f0ba --- a/Makefile.msc +++ b/Makefile.msc @@@ -1849,11 -1966,7 +1994,11 @@@ showwal.exe: $(TOP)\tool\showwal.c $(SQ $(LTLINK) $(NO_WARN) -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION -Fe$@ \ $(TOP)\tool\showwal.c $(SQLITE3C) /link $(LDFLAGS) $(LTLINKOPTS) +changeset.exe: $(TOP)\ext\session\changeset.c $(SQLITE3C) + $(LTLINK) -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION -Fe$@ \ + $(TOP)\ext\session\changeset.c $(SQLITE3C) + - fts3view.exe: $(TOP)\ext\fts3\tool\fts3view.c $(SQLITE3C) + fts3view.exe: $(TOP)\ext\fts3\tool\fts3view.c $(SQLITE3C) $(SQLITE3H) $(LTLINK) $(NO_WARN) -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION -Fe$@ \ $(TOP)\ext\fts3\tool\fts3view.c $(SQLITE3C) /link $(LDFLAGS) $(LTLINKOPTS) @@@ -1894,10 -2009,9 +2041,10 @@@ clean del /Q testloadext.dll 2>NUL del /Q testfixture.exe test.db 2>NUL del /Q LogEst.exe fts3view.exe rollback-test.exe showdb.exe 2>NUL + del /Q changeset.exe 2>NUL del /Q showjournal.exe showstat4.exe showwal.exe speedtest1.exe 2>NUL - del /Q mptester.exe wordcount.exe 2>NUL - del /Q sqlite3.exe sqlite3.dll sqlite3.def 2>NUL + del /Q mptester.exe wordcount.exe rbu.exe 2>NUL + del /Q $(SQLITE3EXE) $(SQLITE3DLL) sqlite3.def 2>NUL del /Q sqlite3.c sqlite3-*.c 2>NUL del /Q sqlite3rc.h 2>NUL del /Q shell.c sqlite3ext.h 2>NUL diff --cc main.mk index 90b4f89b0e,1dda2d153f..51b0c48c1d --- a/main.mk +++ b/main.mk @@@ -907,9 -890,9 +907,10 @@@ clean rm -f showjournal showjournal.exe rm -f showstat4 showstat4.exe rm -f showwal showwal.exe + rm -f changeset changeset.exe rm -f speedtest1 speedtest1.exe rm -f wordcount wordcount.exe + rm -f rbu rbu.exe rm -f sqlite3.c sqlite3-*.c fts?amal.c tclsqlite3.c rm -f sqlite3rc.h rm -f shell.c sqlite3ext.h diff --cc manifest index 5649e90988,3952435799..d3554573d4 --- a/manifest +++ b/manifest @@@ -1,8 -1,8 +1,8 @@@ - C Merge\sthe\sLIKE-operator\sbug\sfix\sfrom\strunk. - D 2016-01-20T16:02:48.763 - F Makefile.in a47ec69daac0cdfe3413e50ceea6dc8da3dc4ecb -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 -F Makefile.in 027c1603f255390c43a426671055a31c0a65fdb4 ++C Merge\sall\srecent\senhancements\sfrom\strunk. ++D 2016-02-02T02:22:30.647 ++F Makefile.in b12720a3957eb741a77a41d3412745b80ac3fa5d F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 - F Makefile.msc b4d0270955b3f102214b2242f2a1b802c22ee21b -F Makefile.msc 72b7858f02017611c3ac1ddc965251017fed0845 ++F Makefile.msc c6dfe4708e38482130e3ccc374be6d5ca4aeb26e 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 7b1ea0dcaf49fafba262ce4b0ee8cb3281b555d1 -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 @@@ -289,7 -271,7 +291,7 @@@ F ext/userauth/userauth.c 5fa3bdb492f48 F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895 x F ltmain.sh 3ff0879076df340d2e23ae905484d8c15d5fdea8 F magic.txt 8273bf49ba3b0c8559cb2774495390c31fd61c60 - F main.mk ad2c0fe02599cf4d58d13776ee57be1e53883909 -F main.mk 960071a0bceb043bc5627573986154f507931f33 ++F main.mk 9a8522feb55a25b14024ff749079fb470fe77acb F mkso.sh fd21c06b063bb16a5d25deea1752c2da6ac3ed83 F mptest/config01.test 3c6adcbc50b991866855f1977ff172eb6d901271 F mptest/config02.test 4415dfe36c48785f751e16e32c20b077c28ae504 @@@ -316,17 -298,17 +318,17 @@@ F src/callback.c 29ae4faba226c7ebb9aee9 F src/complete.c addcd8160b081131005d5bc2d34adf20c1c5c92f F src/ctime.c 60e135af364d777a9ab41c97e5e89cd224da6198 F src/date.c 997651e3ee6c2818fbf7fcdb7156cef9eb3ece20 - F src/dbstat.c ffd63fc8ba7541476ced189b95e95d7f2bc63f78 - F src/delete.c 86e3940d07fe69a40270c2aaf6ca6c7adf19246c - F src/expr.c df0d7c3230d59abd679da22ff5ce4cfd0e3a0e63 + F src/dbstat.c b2ec6793eef97aebb4d171d490a4ffdfa9f2475c -F src/delete.c 33ed87dc0746b1f8ce186f62b608bf40801af9c0 ++F src/delete.c b6d96db8c7e01ddf1448381c9afd26c7eb4d20d3 + F src/expr.c d10c1cdef5810cdbf73adc9f9b383684230b360a F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb - F src/fkey.c e18b3dff7d47c7bcac5ac4fc178a89b9fd322b44 - F src/func.c ba6c03f9e440f5693086c08ee88e6e60212b3504 + F src/fkey.c c66d3e5b35d4d95b5c1e2ee6c12f5df13a7f9ad6 + F src/func.c 42b24923328f65849f52f1659efb2a0907ad78fd F src/global.c bd5a0af3f30b0c01be6db756c626cd3c33a3d260 F src/hash.c 4263fbc955f26c2e8cdc0cf214bc42435aa4e4f5 F src/hash.h c8f3c31722cf3277d03713909761e152a5b81094 F src/hwtime.h d32741c8f4df852c7d959236615444e2b1063b08 - F src/insert.c 0be969e32a28107a4a7008ea4fe7cb15ff47b0ef -F src/insert.c 410f52b9ef4603dc0aebb169b7cb6b3c60eda07e ++F src/insert.c ca97b03d6eccbe9eb79c4091722660625fb55495 F src/journal.c b4124532212b6952f42eb2c12fa3c25701d8ba8d F src/legacy.c ba1863ea58c4c840335a84ec276fc2b25e22bc4e F src/loadext.c 84996d7d70a605597d79c1f1d7b2012a5fd34f2b @@@ -365,16 -347,16 +367,16 @@@ 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 cf22ad1d52dca2c9862d63833e581028119aab7e +F src/shell.c 01e109c27300379b1c35b254cd294cde635f0179 - F src/sqlite.h.in bb645ccc4090a6e95e7b5d92818f46e41033d076 - F src/sqlite3.rc 992c9f5fb8285ae285d6be28240a7e8d3a7f2bad ++F src/sqlite.h.in 301c01f7c514cbb9ff5110889ea24e1a9715edac + F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 F src/sqlite3ext.h dfbe62ffd95b99afe2140d8c35b180d11924072d - F src/sqliteInt.h cf3ca8ec73daef3b744d41663e124c2275fb6f26 -F src/sqliteInt.h 2f80b9b1506a8d602b2a99f3f0bfae22df3e7d70 ++F src/sqliteInt.h c44a27bbb24b842e69812f115b74a90909b90f29 F src/sqliteLimit.h 216557999cb45f2e3578ed53ebefe228d779cb46 F src/status.c 70912d7be68e9e2dbc4010c93d344af61d4c59ba F src/table.c 51b46b2a62d1b3a959633d593b89bab5e2c9155e - F src/tclsqlite.c b2fa693e57720dc87c18183dd5c0399bf7038ebd -F src/tclsqlite.c 94ef6e2794220c5b6064d4c78ec7169a8c5cc45d ++F src/tclsqlite.c 769c38453ec3e9dfc60822ed1d17f4bc76de1db6 F src/test1.c 4f1b42699068b7806af3111786f5ad760c2c1ff7 F src/test2.c 5586f43fcd9a1be0830793cf9d354082c261b25b F src/test3.c a8887dabbbee3059af338f20d290084a63ed1b0f @@@ -424,23 -406,23 +426,23 @@@ 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/update.c d8d675aa299336ac086ad2039d7e812cd6237db0 - 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 1443ca69877410c90ba521220d4336d5ef689cdd -F src/vdbe.c a0a0ada4b51161d3950fe30fc696b6c8235a841f -F src/vdbe.h 7a733ea8aac1b77305a67698e784fa3484ee3337 -F src/vdbeInt.h 4b69d5451bcadd473e745af53ef1e8abfdce0a79 -F src/vdbeapi.c 9d640d5efd9a140a6bda8da53b220aa258167993 -F src/vdbeaux.c f0e7cfa04f7ac44d69866868531dbaf20659d0a2 -F src/vdbeblob.c 37c3d11a753e403698c69e17383d282e1ae73e75 -F src/vdbemem.c b9181e77eca2a095929d46250daf85c8d2621fc0 ++F src/vdbe.c c5244f9750e778a0c5501d6cffa3bfda508f2f2a +F src/vdbe.h 19162d5d75d00ee9e634ad630f2a873e1cf76359 - F src/vdbeInt.h 1bff4effc71888e3f304e2e6ac7484e39ab78c28 - F src/vdbeapi.c 75fa852c0d6e7e9c1334aaaa91b6821cba6a713b - F src/vdbeaux.c 3781db199a8d9376c9512fb7e1304aae7af67dfa ++F src/vdbeInt.h 2a8796b099a463cf6c32514f8aa138d3b0c36b23 ++F src/vdbeapi.c 648ebb95c1a60ced4f0e23ecfb12b43d6aca55ec ++F src/vdbeaux.c e41d494842aaa8b6d47d9d40bb58b1aa4bb3ddaa +F src/vdbeblob.c 6ccda01a78b3f9d9a0c75f79e7a1150f3fb0cb39 +F src/vdbemem.c 6c962ee0a77de009dafb6d7f3c7e8bf7b82c47f8 - 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/walker.c 0f142b5bd3ed2041fc52d773880748b212e63354 @@@ -1440,7 -1422,7 +1443,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 327af5f644a49b2f41d5456958f9d61a2b704e1c e8adeb64d4e463772feb58dbd6f00715b92e735c - R ed9d6c66302fd811ae6a8e53c4d95620 -P 6d7d4703ebf3754bec74123d5ba7e861a705f90f -R a0fd58918162f72722cea72a597641d9 ++P 36cb3d6e274a06a78693ca506feaad0b14bde11d d8b7b1996eefae7768bfcb82d4ff22c69392aa63 ++R a6848fc70bf84dd1da28684cee4a5e04 U drh - Z 8662dc0834e686268b7ae44f172fcd73 -Z 8a77cde1543981fcb216eb719b02e019 ++Z 8c0e589f1ff041b7f5f063df66382fc8 diff --cc manifest.uuid index df02854c57,dae04066fb..1979b8ac77 --- a/manifest.uuid +++ b/manifest.uuid @@@ -1,1 -1,1 +1,1 @@@ - 36cb3d6e274a06a78693ca506feaad0b14bde11d -d8b7b1996eefae7768bfcb82d4ff22c69392aa63 ++f3f9200115caf4b356f90ec97c351d1afbcb9bf6 diff --cc src/delete.c index 68c4c4b360,5b5a5e3cb1..feda71bf8d --- a/src/delete.c +++ b/src/delete.c @@@ -719,18 -715,17 +718,22 @@@ void sqlite3GenerateRowDelete /* Delete the index and table entries. Skip this step if pTab is really ** a view (in which case the only effect of the DELETE statement is to - ** fire the INSTEAD OF triggers). */ + ** fire the INSTEAD OF triggers). + ** + ** If variable 'count' is non-zero, then this OP_Delete instruction should + ** invoke the update-hook. The pre-update-hook, on the other hand should + ** be invoked unless table pTab is a system table. The difference is that + ** the update-hook is not invoked for rows removed by REPLACE, but the + ** pre-update-hook is. + */ if( pTab->pSelect==0 ){ + u8 p5 = 0; sqlite3GenerateRowIndexDelete(pParse, pTab, iDataCur, iIdxCur,0,iIdxNoSeek); sqlite3VdbeAddOp2(v, OP_Delete, iDataCur, (count?OPFLAG_NCHANGE:0)); - if( count ){ - sqlite3VdbeChangeP4(v, -1, pTab->zName, P4_TRANSIENT); - } + sqlite3VdbeChangeP4(v, -1, (char*)pTab, P4_TABLE); + if( eMode!=ONEPASS_OFF ){ + sqlite3VdbeChangeP5(v, OPFLAG_AUXDELETE); + } if( iIdxNoSeek>=0 ){ sqlite3VdbeAddOp1(v, OP_Delete, iIdxNoSeek); } diff --cc src/sqliteInt.h index 25871ff684,dbe1595af9..3da16465cf --- a/src/sqliteInt.h +++ b/src/sqliteInt.h @@@ -2854,11 -2846,9 +2854,12 @@@ struct AuthContext /* ** Bitfield flags for P5 value in various opcodes. +** +** Note that the values for ISNOOP and LENGTHARG are the same. But as +** those bits are never used on the same opcode, the overlap is harmless. */ - #define OPFLAG_NCHANGE 0x01 /* Set to update db->nChange */ + #define OPFLAG_NCHANGE 0x01 /* OP_Insert: Set to update db->nChange */ + /* Also used in P2 (not P5) of OP_Delete */ #define OPFLAG_EPHEM 0x01 /* OP_Column: Ephemeral output is ok */ #define OPFLAG_LASTROWID 0x02 /* Set to update db->lastRowid */ #define OPFLAG_ISUPDATE 0x04 /* This OP_Insert is an sql UPDATE */ diff --cc src/vdbe.c index 786534df8a,1cf4cb16a7..5d68d2632a --- a/src/vdbe.c +++ b/src/vdbe.c @@@ -4440,8 -4376,25 +4431,27 @@@ case OP_Delete: } #endif + if( opflags & OPFLAG_ISNOOP ) break; + + /* Only flags that can be set are SAVEPOISTION and AUXDELETE */ + assert( (pOp->p5 & ~(OPFLAG_SAVEPOSITION|OPFLAG_AUXDELETE))==0 ); + assert( OPFLAG_SAVEPOSITION==BTREE_SAVEPOSITION ); + assert( OPFLAG_AUXDELETE==BTREE_AUXDELETE ); + + #ifdef SQLITE_DEBUG + if( p->pFrame==0 ){ + if( pC->isEphemeral==0 + && (pOp->p5 & OPFLAG_AUXDELETE)==0 + && (pC->wrFlag & OPFLAG_FORDELETE)==0 + ){ + nExtraDelete++; + } + if( pOp->p2 & OPFLAG_NCHANGE ){ + nExtraDelete--; + } + } + #endif + rc = sqlite3BtreeDelete(pC->uc.pCursor, pOp->p5); pC->cacheStatus = CACHE_STALE;