diff options
author | drh <drh@noemail.net> | 2018-12-29 02:26:59 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2018-12-29 02:26:59 +0000 |
commit | ec4ccdbcb1bd9d129888b38f209ed36bbe38a5d8 (patch) | |
tree | aff455cde56406dac489f5097da7ff4eaa480ebb /src/delete.c | |
parent | 81f9159b5ec0e19d9aafee9c03a13bc4e7735cd8 (diff) | |
download | sqlite-ec4ccdbcb1bd9d129888b38f209ed36bbe38a5d8.tar.gz sqlite-ec4ccdbcb1bd9d129888b38f209ed36bbe38a5d8.zip |
A new implementation of sqlite3VdbeMakeLabel() is faster and makes fewer
memory allocations by deferring memory allocation until
sqlite3VdbeResolveLabel() is called, at which point the code generator has
a better idea of how big the relocation table needs to be.
The sqlite3VdbeMakeLabel() routine now takes a Parse* parameter instead of
Vdbe*.
FossilOrigin-Name: 4a0929ac76d8aa5dd65eac3b83d6bbf41e505e01d175ca0fb2b19ba02d439415
Diffstat (limited to 'src/delete.c')
-rw-r--r-- | src/delete.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/delete.c b/src/delete.c index 4ba8e4256..0525dfd3f 100644 --- a/src/delete.c +++ b/src/delete.c @@ -517,7 +517,7 @@ void sqlite3DeleteFrom( /* If this DELETE cannot use the ONEPASS strategy, this is the ** end of the WHERE loop */ if( eOnePass!=ONEPASS_OFF ){ - addrBypass = sqlite3VdbeMakeLabel(v); + addrBypass = sqlite3VdbeMakeLabel(pParse); }else{ sqlite3WhereEnd(pWInfo); } @@ -706,7 +706,7 @@ void sqlite3GenerateRowDelete( /* Seek cursor iCur to the row to delete. If this row no longer exists ** (this can happen if a trigger program has already deleted it), do ** not attempt to delete it or fire any DELETE triggers. */ - iLabel = sqlite3VdbeMakeLabel(v); + iLabel = sqlite3VdbeMakeLabel(pParse); opSeek = HasRowid(pTab) ? OP_NotExists : OP_NotFound; if( eMode==ONEPASS_OFF ){ sqlite3VdbeAddOp4Int(v, opSeek, iDataCur, iLabel, iPk, nPk); @@ -912,7 +912,7 @@ int sqlite3GenerateIndexKey( if( piPartIdxLabel ){ if( pIdx->pPartIdxWhere ){ - *piPartIdxLabel = sqlite3VdbeMakeLabel(v); + *piPartIdxLabel = sqlite3VdbeMakeLabel(pParse); pParse->iSelfTab = iDataCur + 1; sqlite3ExprIfFalseDup(pParse, pIdx->pPartIdxWhere, *piPartIdxLabel, SQLITE_JUMPIFNULL); |