From: drh Date: Wed, 23 Mar 2011 22:48:46 +0000 (+0000) Subject: Merge in all the latest changes from the trunk, and especially the interface X-Git-Tag: version-3.13.0~148^2~306 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9a48bf528dec444006776f3b74dbd49cce753658;p=thirdparty%2Fsqlite.git Merge in all the latest changes from the trunk, and especially the interface changes to the SystemCall methods of the VFS. FossilOrigin-Name: 9c3a6e479988e96086bef00c79dbce508a14da0d --- 9a48bf528dec444006776f3b74dbd49cce753658 diff --cc manifest index 1178e77cb3,33efc4be6d..0f7a903c77 --- a/manifest +++ b/manifest @@@ -1,5 -1,8 +1,8 @@@ - C Add\sthe\s"indirect\sflag"\sto\sthe\schangeset\sblob\sformat.\sAlso\sthe\ssqlite3session_indirect()\sAPI. - D 2011-03-23T16:03:12 + -----BEGIN PGP SIGNED MESSAGE----- + Hash: SHA1 + -C Change\sthe\sxSetSyscall\smethods\sof\sthe\sVFS\sso\sthat\sthey\sdo\snot\scast\sobject\npointers\sinto\sfunction\spointers.\s\sFix\sother\sunrelated\scompiler\swarnings. -D 2011-03-23T22:02:23.988 ++C Merge\sin\sall\sthe\slatest\schanges\sfrom\sthe\strunk,\sand\sespecially\sthe\sinterface\nchanges\sto\sthe\sSystemCall\smethods\sof\sthe\sVFS. ++D 2011-03-23T22:48:46.969 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 27701a1653595a1f2187dc61c8117e00a6c1d50f F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@@ -136,7 -132,7 +139,7 @@@ F src/callback.c 5069f224882cbdccd559f5 F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac F src/ctime.c 52ff72f966cee3087e0138a3ec69371c22be3c01 F src/date.c 1548fdac51377e4e7833251de878b4058c148e1b - F src/delete.c 122c1a767883c439ad6393d32920152ecb560429 -F src/delete.c 7ed8a8c8b5f748ece92df173d7e0f7810c899ebd ++F src/delete.c c55748a1628b54c8785de0ff4bd9cbe27fe111cb F src/expr.c 00817c672af554321fd67c44325afd7cef0e4648 F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb F src/fkey.c 418b840007c873975fd0d071746d952f8bca20ce @@@ -150,7 -146,7 +153,7 @@@ F src/journal.c 552839e54d1bf76fb8f7abe F src/legacy.c a199d7683d60cef73089e892409113e69c23a99f F src/lempar.c 7f026423f4d71d989e719a743f98a1cbd4e6d99e F src/loadext.c 8af9fcc75708d60b88636ccba38b4a7b3c155c3e - F src/main.c 22e0f75c17164d4109644e8d623ccaa48a186632 -F src/main.c c4ecb1973419a1e2467cfea31054458da293a307 ++F src/main.c 2563bd9ca8430c7677d375c566b54b890aaf508f F src/malloc.c 92d59a007d7a42857d4e9454aa25b6b703286be1 F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645 F src/mem1.c 00bd8265c81abb665c48fea1e0c234eb3b922206 @@@ -184,10 -180,10 +187,10 @@@ F src/random.c cd4a67b3953b88019f8cd4cc F src/resolve.c 1c0f32b64f8e3f555fe1f732f9d6f501a7f05706 F src/rowset.c 69afa95a97c524ba6faf3805e717b5b7ae85a697 F src/select.c d24406c45dd2442eb2eeaac413439066b149c944 - F src/shell.c 4a5e0ad845475c84881f0b25b1abba2ddaab0a72 - F src/sqlite.h.in 6b93765e048e0023e23c1d9827a561d7ead7100a + F src/shell.c 9dc0b4bb59290c0a35256d278cab0f314987ad6a -F src/sqlite.h.in 2ab8766c32afed165c0ea74292e18483e3aa64b1 ++F src/sqlite.h.in 846a91e163497b596b5bbebd26477eaf234eb1c0 F src/sqlite3ext.h c90bd5507099f62043832d73f6425d8d5c5da754 - F src/sqliteInt.h 10707dc735a0077741e1b4b1550891abc26d7582 -F src/sqliteInt.h f8f1d00a22c98fd3f2fbc94da74eeb880879f89f ++F src/sqliteInt.h 7c11f9a648cf82e87330fd2185fcaa1f7c46dfba F src/sqliteLimit.h a17dcd3fb775d63b64a43a55c54cb282f9726f44 F src/status.c 4997380fbb915426fef9e500b4872e79c99267fc F src/table.c 2cd62736f845d82200acfa1287e33feb3c15d62e @@@ -234,15 -230,15 +237,15 @@@ F src/test_vfstrace.c f5c3b3b893d81a580 F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9 F src/tokenize.c 604607d6813e9551cf5189d899e0a25c12681080 F src/trigger.c ec4813709e990a169b6923293e839fa5dfd64282 - F src/update.c ca6d4ad2d87e743d22c47f1a6715cc5abf5cda05 -F src/update.c 81911be16ece3c3e7716aa18565b4814ec41f8b9 ++F src/update.c f81e9b326cafba3fbe493141e396f3bbfba1d99b F src/utf.c 1baeeac91707a4df97ccc6141ec0f808278af685 F src/util.c cd997077bad039efc0597eb027c929658f93c018 F src/vacuum.c 924bd1bcee2dfb05376f79845bd3b4cec7b54b2f -F src/vdbe.c 8430780c643bf67d4b5da27f24d6ad39804fdaf4 -F src/vdbe.h 4de0efb4b0fdaaa900cf419b35c458933ef1c6d2 -F src/vdbeInt.h e1c6254641168507d25b46affb6dfb53c782f553 -F src/vdbeapi.c a09ad9164cafc505250d5dd6b69660c960f1308c -F src/vdbeaux.c cfd3f3ac674691ba1166ceb9a2698b0d00b2ef91 +F src/vdbe.c c90edafd941481506f001b17cd8523683fdac853 +F src/vdbe.h edef9c4f0be83e1f1dccd049da37b40e021b63d9 - F src/vdbeInt.h 2cf77c1d151a4a54facd596d52be6d60c1cb26e8 ++F src/vdbeInt.h b6748a8ac9be169d83585a0f5daf747863c6b8db +F src/vdbeapi.c e472b3e5985175e948e70025cb3bffa8a2e185c8 - F src/vdbeaux.c 0216b2c37509a44c3833b297765bee7bdd04fa2f ++F src/vdbeaux.c af3be34b1980e428972ea11ef3a1d88acf8f2b9d F src/vdbeblob.c c3ccb7c8732858c680f442932e66ad06bb036562 F src/vdbemem.c 0498796b6ffbe45e32960d6a1f5adfb6e419883b F src/vdbetrace.c 3ba13bc32bdf16d2bdea523245fd16736bed67b5 @@@ -923,7 -918,14 +926,14 @@@ F tool/speedtest2.tcl ee2149167303ba8e9 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f - P bdea70895c2c686a4dd3f4bf0a475fd1501d9551 - R c02abbe676895f559af6fe54b071c0da - U dan - Z 27e4954529d298836a72824c8b085018 -P 7aaf8772274422f5020fad9eea490e195170720f -R 5f5be2467ac2e1a296459a4f106ade8d ++P 1feaf2d35fd9ec777319717ae2c2929d66fe7baa e059152adce3a8fb693f082b82b5669a238c8d6f ++R b36ce5552543fc5931a9682eb2d51184 + U drh -Z fe6ea374366d1c79bf722f1efd9278ca ++Z 274ed2e4f92b071af1545dccfb5f4fc3 + -----BEGIN PGP SIGNATURE----- + Version: GnuPG v1.4.6 (GNU/Linux) + -iD8DBQFNim3zoxKgR168RlERAinxAJ4/cXafMYIecY7RnHEnjd/FDN5wWgCeO1Gr -HyMtzimZVos8zD8aJn2Sy94= -=JB2d ++iD8DBQFNinjSoxKgR168RlERAnfoAJ4yQL1bxQ/2pBGeyDlRWD9l+4WVNwCfXQdV ++nYGZvp774EBPS1/20z/kF+M= ++=eCFJ + -----END PGP SIGNATURE----- diff --cc manifest.uuid index f85c8efaad,49ea63e4ef..928103a89f --- a/manifest.uuid +++ b/manifest.uuid @@@ -1,1 -1,1 +1,1 @@@ - 1feaf2d35fd9ec777319717ae2c2929d66fe7baa -e059152adce3a8fb693f082b82b5669a238c8d6f ++9c3a6e479988e96086bef00c79dbce508a14da0d diff --cc src/delete.c index 3075df05fc,bd7ac3d1f3..a5d00263b5 --- a/src/delete.c +++ b/src/delete.c @@@ -391,7 -391,7 +391,7 @@@ void sqlite3DeleteFrom if( IsVirtual(pTab) ){ const char *pVTab = (const char *)sqlite3GetVTable(db, pTab); sqlite3VtabMakeWritable(pParse, pTab); -- sqlite3VdbeAddOp4(v, OP_VUpdate, 0, 1, iRowid, pVTab, P4_VTAB); ++ sqlite3VdbeAddOp4(v, OP_VUpdate, 0, 1, iRowid, (char*)pVTab, P4_VTAB); sqlite3MayAbort(pParse); }else #endif @@@ -542,7 -535,9 +542,7 @@@ void sqlite3GenerateRowDelete if( pTab->pSelect==0 ){ sqlite3GenerateRowIndexDelete(pParse, pTab, iCur, 0); sqlite3VdbeAddOp2(v, OP_Delete, iCur, (count?OPFLAG_NCHANGE:0)); - sqlite3VdbeChangeP4(v, -1, pTab, P4_TABLE); - if( count ){ - sqlite3VdbeChangeP4(v, -1, pTab->zName, P4_STATIC); - } ++ sqlite3VdbeChangeP4(v, -1, (char*)pTab, P4_TABLE); } /* Do any ON CASCADE, SET NULL or SET DEFAULT operations required to diff --cc src/main.c index 7457877a70,94fdf384b1..9ccd657e79 --- a/src/main.c +++ b/src/main.c @@@ -535,7 -535,7 +535,7 @@@ int sqlite3_db_config(sqlite3 *db, int if( aFlagOp[i].op==op ){ int onoff = va_arg(ap, int); int *pRes = va_arg(ap, int*); -- u32 oldFlags = db->flags; ++ int oldFlags = db->flags; if( onoff>0 ){ db->flags |= aFlagOp[i].mask; }else if( onoff==0 ){ diff --cc src/update.c index b67c76f5fe,315034d86f..fd310fb307 --- a/src/update.c +++ b/src/update.c @@@ -488,22 -488,9 +488,22 @@@ void sqlite3Update j1 = sqlite3VdbeAddOp3(v, OP_NotExists, iCur, 0, regOldRowid); sqlite3GenerateRowIndexDelete(pParse, pTab, iCur, aRegIdx); - /* If changing the record number, delete the old record. */ - if( hasFK || chngRowid ){ - sqlite3VdbeAddOp2(v, OP_Delete, iCur, 0); + /* If changing the rowid value, or if there are foreign key constraints + ** to process, delete the old record. Otherwise, add a noop OP_Delete + ** to invoke the pre-update hook. + ** + ** That (regNew==regnewRowid+1) is true is also important for the + ** pre-update hook. If hte caller invokes preupdate_new(), the returned + ** value is copied from memory cell (regNewRowid+1+iCol), where iCol + ** is the column index supplied by the user. + */ + assert( regNew==regNewRowid+1 ); + sqlite3VdbeAddOp3(v, OP_Delete, iCur, + OPFLAG_ISUPDATE | ((hasFK || chngRowid) ? 0 : OPFLAG_ISNOOP), + regNewRowid + ); + if( !pParse->nested ){ - sqlite3VdbeChangeP4(v, -1, pTab, P4_TABLE); ++ sqlite3VdbeChangeP4(v, -1, (char*)pTab, P4_TABLE); } sqlite3VdbeJumpHere(v, j1);