1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-11 01:42:22 +03:00

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
This commit is contained in:
drh
2015-09-29 13:25:15 +00:00
parent 94f26a1e22
commit c149f18f4d
6 changed files with 15 additions and 13 deletions

View File

@@ -1,5 +1,5 @@
C Fix\scompiler\swarnings. 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-29T12:32:56.672 D 2015-09-29T13:25:15.973
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in 2143eeef6d0cc26006ae5fc4bb242a4a8b973412 F Makefile.in 2143eeef6d0cc26006ae5fc4bb242a4a8b973412
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -291,7 +291,7 @@ F src/complete.c addcd8160b081131005d5bc2d34adf20c1c5c92f
F src/ctime.c 5a0b735dc95604766f5dac73973658eef782ee8b F src/ctime.c 5a0b735dc95604766f5dac73973658eef782ee8b
F src/date.c fb1c99172017dcc8e237339132c91a21a0788584 F src/date.c fb1c99172017dcc8e237339132c91a21a0788584
F src/dbstat.c e637e7a7ff40ef32132a418c6fdf1cfb63aa27c7 F src/dbstat.c e637e7a7ff40ef32132a418c6fdf1cfb63aa27c7
F src/delete.c 174b140317915e0e8c6e2eff28158eecf95c53d8 F src/delete.c 46bb5e217f83af68574ccb613421485578c41ba8
F src/expr.c 3a76afcdac925294c39903b7002ddb9e5fd29863 F src/expr.c 3a76afcdac925294c39903b7002ddb9e5fd29863
F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb
F src/fkey.c 83e1baba999bed3144ea5a2143fc922edf51135f F src/fkey.c 83e1baba999bed3144ea5a2143fc922edf51135f
@@ -300,7 +300,7 @@ F src/global.c 508e4087f7b41d688e4762dcf4d4fe28cfbc87f9
F src/hash.c 4263fbc955f26c2e8cdc0cf214bc42435aa4e4f5 F src/hash.c 4263fbc955f26c2e8cdc0cf214bc42435aa4e4f5
F src/hash.h c8f3c31722cf3277d03713909761e152a5b81094 F src/hash.h c8f3c31722cf3277d03713909761e152a5b81094
F src/hwtime.h d32741c8f4df852c7d959236615444e2b1063b08 F src/hwtime.h d32741c8f4df852c7d959236615444e2b1063b08
F src/insert.c 9748a37e058256eb2ead69f028ab85ebf203ad15 F src/insert.c 81d6bf397c05b4e8ddc4af2ff6637c113ee7e37a
F src/journal.c b4124532212b6952f42eb2c12fa3c25701d8ba8d F src/journal.c b4124532212b6952f42eb2c12fa3c25701d8ba8d
F src/legacy.c ba1863ea58c4c840335a84ec276fc2b25e22bc4e F src/legacy.c ba1863ea58c4c840335a84ec276fc2b25e22bc4e
F src/lempar.c d344a95d60c24e2f490ee59db9784b1b17439012 F src/lempar.c d344a95d60c24e2f490ee59db9784b1b17439012
@@ -345,7 +345,7 @@ F src/shell.c a11b20da4c6630e0e8f83c47ce36f717dd0422f0
F src/sqlite.h.in 4b76d74d69af48c534c58fb723137dc6944bdedc F src/sqlite.h.in 4b76d74d69af48c534c58fb723137dc6944bdedc
F src/sqlite3.rc 992c9f5fb8285ae285d6be28240a7e8d3a7f2bad F src/sqlite3.rc 992c9f5fb8285ae285d6be28240a7e8d3a7f2bad
F src/sqlite3ext.h 64350bf36833a56ad675e27392a913f417c5c308 F src/sqlite3ext.h 64350bf36833a56ad675e27392a913f417c5c308
F src/sqliteInt.h 5afc6e50402be1e0a870f28e1cd8b32eb9db590f F src/sqliteInt.h b6516bb2727876348b4e05aadd12237797626270
F src/sqliteLimit.h 216557999cb45f2e3578ed53ebefe228d779cb46 F src/sqliteLimit.h 216557999cb45f2e3578ed53ebefe228d779cb46
F src/status.c f266ad8a2892d659b74f0f50cb6a88b6e7c12179 F src/status.c f266ad8a2892d659b74f0f50cb6a88b6e7c12179
F src/table.c 51b46b2a62d1b3a959633d593b89bab5e2c9155e F src/table.c 51b46b2a62d1b3a959633d593b89bab5e2c9155e
@@ -399,7 +399,7 @@ F src/threads.c bbfb74450643cb5372a43ad4f6cffd7e9dfcecb0
F src/tokenize.c 83c6ed569423a3af83a83973b444cf7123be33a6 F src/tokenize.c 83c6ed569423a3af83a83973b444cf7123be33a6
F src/treeview.c 154f0acc622fa3514de8777dcedf4c8a8802b4ce F src/treeview.c 154f0acc622fa3514de8777dcedf4c8a8802b4ce
F src/trigger.c 322f23aad694e8f31d384dcfa386d52a48d3c52f F src/trigger.c 322f23aad694e8f31d384dcfa386d52a48d3c52f
F src/update.c e0169d20524cf3663c9c6d952e61baf3c03ae797 F src/update.c d8f0afe1a1c66b97cbd87e5236f4e71d35ab4840
F src/utf.c fc6b889ba0779b7722634cdeaa25f1930d93820c F src/utf.c fc6b889ba0779b7722634cdeaa25f1930d93820c
F src/util.c fc612367108b74573c5fd13a85d0a23027f438bd F src/util.c fc612367108b74573c5fd13a85d0a23027f438bd
F src/vacuum.c 2ddd5cad2a7b9cef7f9e431b8c7771634c6b1701 F src/vacuum.c 2ddd5cad2a7b9cef7f9e431b8c7771634c6b1701
@@ -1389,7 +1389,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
P b519c0d67a8fc39d65c17eccc9300a6187bd5661 P d1a0783854d2e9272320d9ddfa58362532f58d1a
R 3b0dc7b7710e7cf4f943bdd9f5967b17 R a4e26d59514db031d207946929f0dada
U drh U drh
Z 7521a63b646e7d2736834b9d13be676e Z ab43f3a6d7f071ac781590ae89cc31de

View File

@@ -1 +1 @@
d1a0783854d2e9272320d9ddfa58362532f58d1a 59662cd2b65255a30e1a420331c07c51b644621a

View File

@@ -518,7 +518,7 @@ void sqlite3DeleteFrom(
sqlite3VdbeChangeP5(v, OE_Abort); sqlite3VdbeChangeP5(v, OE_Abort);
assert( eOnePass==ONEPASS_OFF || eOnePass==ONEPASS_SINGLE ); assert( eOnePass==ONEPASS_OFF || eOnePass==ONEPASS_SINGLE );
sqlite3MayAbort(pParse); sqlite3MayAbort(pParse);
if( eOnePass==ONEPASS_SINGLE && pParse==sqlite3ParseToplevel(pParse) ){ if( eOnePass==ONEPASS_SINGLE && sqlite3IsToplevel(pParse) ){
pParse->isMultiWrite = 0; pParse->isMultiWrite = 0;
} }
}else }else

View File

@@ -260,7 +260,7 @@ void sqlite3AutoincrementBegin(Parse *pParse){
/* This routine is never called during trigger-generation. It is /* This routine is never called during trigger-generation. It is
** only called from the top-level */ ** only called from the top-level */
assert( pParse->pTriggerTab==0 ); assert( pParse->pTriggerTab==0 );
assert( pParse==sqlite3ParseToplevel(pParse) ); assert( sqlite3IsToplevel(pParse) );
assert( v ); /* We failed long ago if this is not so */ assert( v ); /* We failed long ago if this is not so */
for(p = pParse->pAinc; p; p = p->pNext){ for(p = pParse->pAinc; p; p = p->pNext){

View File

@@ -3504,6 +3504,7 @@ void sqlite3MaterializeView(Parse*, Table*, Expr*, int);
void sqlite3UnlinkAndDeleteTrigger(sqlite3*,int,const char*); void sqlite3UnlinkAndDeleteTrigger(sqlite3*,int,const char*);
u32 sqlite3TriggerColmask(Parse*,Trigger*,ExprList*,int,int,Table*,int); u32 sqlite3TriggerColmask(Parse*,Trigger*,ExprList*,int,int,Table*,int);
# define sqlite3ParseToplevel(p) ((p)->pToplevel ? (p)->pToplevel : (p)) # define sqlite3ParseToplevel(p) ((p)->pToplevel ? (p)->pToplevel : (p))
# define sqlite3IsToplevel(p) ((p)->pToplevel==0)
#else #else
# define sqlite3TriggersExist(B,C,D,E,F) 0 # define sqlite3TriggersExist(B,C,D,E,F) 0
# define sqlite3DeleteTrigger(A,B) # define sqlite3DeleteTrigger(A,B)
@@ -3513,6 +3514,7 @@ void sqlite3MaterializeView(Parse*, Table*, Expr*, int);
# define sqlite3CodeRowTriggerDirect(A,B,C,D,E,F) # define sqlite3CodeRowTriggerDirect(A,B,C,D,E,F)
# define sqlite3TriggerList(X, Y) 0 # define sqlite3TriggerList(X, Y) 0
# define sqlite3ParseToplevel(p) p # define sqlite3ParseToplevel(p) p
# define sqlite3IsToplevel(p) 1
# define sqlite3TriggerColmask(A,B,C,D,E,F,G) 0 # define sqlite3TriggerColmask(A,B,C,D,E,F,G) 0
#endif #endif

View File

@@ -764,7 +764,7 @@ static void updateVirtualTable(
** above. Also, if this is a top-level parse (not a trigger), clear the ** 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 */ ** multi-write flag so that the VM does not open a statement journal */
sqlite3VdbeChangeToNoop(v, addr); sqlite3VdbeChangeToNoop(v, addr);
if( sqlite3ParseToplevel(pParse)==pParse ){ if( sqlite3IsToplevel(pParse) ){
pParse->isMultiWrite = 0; pParse->isMultiWrite = 0;
} }
}else{ }else{