From: drh Date: Tue, 29 Sep 2015 13:25:15 +0000 (+0000) Subject: Create the sqlite3IsToplevel(Parse*) interface to check to see if a top-level X-Git-Tag: version-3.9.0~49^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c149f18f4da6228c78513d164623d8accf4088a2;p=thirdparty%2Fsqlite.git Create the sqlite3IsToplevel(Parse*) interface to check to see if a top-level VDBE is being coded (versus a trigger) and use that interface. FossilOrigin-Name: 59662cd2b65255a30e1a420331c07c51b644621a --- diff --git a/manifest b/manifest index ded8386abb..353278a1a2 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\scompiler\swarnings. -D 2015-09-29T12:32:56.672 +C Create\sthe\ssqlite3IsToplevel(Parse*)\sinterface\sto\scheck\sto\ssee\sif\sa\stop-level\nVDBE\sis\sbeing\scoded\s(versus\sa\strigger)\sand\suse\sthat\sinterface. +D 2015-09-29T13:25:15.973 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 2143eeef6d0cc26006ae5fc4bb242a4a8b973412 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -291,7 +291,7 @@ F src/complete.c addcd8160b081131005d5bc2d34adf20c1c5c92f F src/ctime.c 5a0b735dc95604766f5dac73973658eef782ee8b F src/date.c fb1c99172017dcc8e237339132c91a21a0788584 F src/dbstat.c e637e7a7ff40ef32132a418c6fdf1cfb63aa27c7 -F src/delete.c 174b140317915e0e8c6e2eff28158eecf95c53d8 +F src/delete.c 46bb5e217f83af68574ccb613421485578c41ba8 F src/expr.c 3a76afcdac925294c39903b7002ddb9e5fd29863 F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb F src/fkey.c 83e1baba999bed3144ea5a2143fc922edf51135f @@ -300,7 +300,7 @@ F src/global.c 508e4087f7b41d688e4762dcf4d4fe28cfbc87f9 F src/hash.c 4263fbc955f26c2e8cdc0cf214bc42435aa4e4f5 F src/hash.h c8f3c31722cf3277d03713909761e152a5b81094 F src/hwtime.h d32741c8f4df852c7d959236615444e2b1063b08 -F src/insert.c 9748a37e058256eb2ead69f028ab85ebf203ad15 +F src/insert.c 81d6bf397c05b4e8ddc4af2ff6637c113ee7e37a F src/journal.c b4124532212b6952f42eb2c12fa3c25701d8ba8d F src/legacy.c ba1863ea58c4c840335a84ec276fc2b25e22bc4e F src/lempar.c d344a95d60c24e2f490ee59db9784b1b17439012 @@ -345,7 +345,7 @@ F src/shell.c a11b20da4c6630e0e8f83c47ce36f717dd0422f0 F src/sqlite.h.in 4b76d74d69af48c534c58fb723137dc6944bdedc F src/sqlite3.rc 992c9f5fb8285ae285d6be28240a7e8d3a7f2bad F src/sqlite3ext.h 64350bf36833a56ad675e27392a913f417c5c308 -F src/sqliteInt.h 5afc6e50402be1e0a870f28e1cd8b32eb9db590f +F src/sqliteInt.h b6516bb2727876348b4e05aadd12237797626270 F src/sqliteLimit.h 216557999cb45f2e3578ed53ebefe228d779cb46 F src/status.c f266ad8a2892d659b74f0f50cb6a88b6e7c12179 F src/table.c 51b46b2a62d1b3a959633d593b89bab5e2c9155e @@ -399,7 +399,7 @@ F src/threads.c bbfb74450643cb5372a43ad4f6cffd7e9dfcecb0 F src/tokenize.c 83c6ed569423a3af83a83973b444cf7123be33a6 F src/treeview.c 154f0acc622fa3514de8777dcedf4c8a8802b4ce F src/trigger.c 322f23aad694e8f31d384dcfa386d52a48d3c52f -F src/update.c e0169d20524cf3663c9c6d952e61baf3c03ae797 +F src/update.c d8f0afe1a1c66b97cbd87e5236f4e71d35ab4840 F src/utf.c fc6b889ba0779b7722634cdeaa25f1930d93820c F src/util.c fc612367108b74573c5fd13a85d0a23027f438bd F src/vacuum.c 2ddd5cad2a7b9cef7f9e431b8c7771634c6b1701 @@ -1389,7 +1389,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P b519c0d67a8fc39d65c17eccc9300a6187bd5661 -R 3b0dc7b7710e7cf4f943bdd9f5967b17 +P d1a0783854d2e9272320d9ddfa58362532f58d1a +R a4e26d59514db031d207946929f0dada U drh -Z 7521a63b646e7d2736834b9d13be676e +Z ab43f3a6d7f071ac781590ae89cc31de diff --git a/manifest.uuid b/manifest.uuid index eeb5e662b8..906f2b5996 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -d1a0783854d2e9272320d9ddfa58362532f58d1a \ No newline at end of file +59662cd2b65255a30e1a420331c07c51b644621a \ No newline at end of file diff --git a/src/delete.c b/src/delete.c index ed843c1a75..6a512017e7 100644 --- a/src/delete.c +++ b/src/delete.c @@ -518,7 +518,7 @@ void sqlite3DeleteFrom( sqlite3VdbeChangeP5(v, OE_Abort); assert( eOnePass==ONEPASS_OFF || eOnePass==ONEPASS_SINGLE ); sqlite3MayAbort(pParse); - if( eOnePass==ONEPASS_SINGLE && pParse==sqlite3ParseToplevel(pParse) ){ + if( eOnePass==ONEPASS_SINGLE && sqlite3IsToplevel(pParse) ){ pParse->isMultiWrite = 0; } }else diff --git a/src/insert.c b/src/insert.c index 53b429c1f4..3ade95e4ec 100644 --- a/src/insert.c +++ b/src/insert.c @@ -260,7 +260,7 @@ void sqlite3AutoincrementBegin(Parse *pParse){ /* This routine is never called during trigger-generation. It is ** only called from the top-level */ assert( pParse->pTriggerTab==0 ); - assert( pParse==sqlite3ParseToplevel(pParse) ); + assert( sqlite3IsToplevel(pParse) ); assert( v ); /* We failed long ago if this is not so */ for(p = pParse->pAinc; p; p = p->pNext){ diff --git a/src/sqliteInt.h b/src/sqliteInt.h index 747f19b39a..b32cc21bbb 100644 --- a/src/sqliteInt.h +++ b/src/sqliteInt.h @@ -3504,6 +3504,7 @@ void sqlite3MaterializeView(Parse*, Table*, Expr*, int); void sqlite3UnlinkAndDeleteTrigger(sqlite3*,int,const char*); u32 sqlite3TriggerColmask(Parse*,Trigger*,ExprList*,int,int,Table*,int); # define sqlite3ParseToplevel(p) ((p)->pToplevel ? (p)->pToplevel : (p)) +# define sqlite3IsToplevel(p) ((p)->pToplevel==0) #else # define sqlite3TriggersExist(B,C,D,E,F) 0 # define sqlite3DeleteTrigger(A,B) @@ -3513,6 +3514,7 @@ void sqlite3MaterializeView(Parse*, Table*, Expr*, int); # define sqlite3CodeRowTriggerDirect(A,B,C,D,E,F) # define sqlite3TriggerList(X, Y) 0 # define sqlite3ParseToplevel(p) p +# define sqlite3IsToplevel(p) 1 # define sqlite3TriggerColmask(A,B,C,D,E,F,G) 0 #endif diff --git a/src/update.c b/src/update.c index c90320f0b2..ba5d0380af 100644 --- a/src/update.c +++ b/src/update.c @@ -764,7 +764,7 @@ static void updateVirtualTable( ** above. Also, if this is a top-level parse (not a trigger), clear the ** multi-write flag so that the VM does not open a statement journal */ sqlite3VdbeChangeToNoop(v, addr); - if( sqlite3ParseToplevel(pParse)==pParse ){ + if( sqlite3IsToplevel(pParse) ){ pParse->isMultiWrite = 0; } }else{