mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-08 14:02:16 +03:00
Always use the sqlite3VdbeDeleteAuxdata() routine for clearing auxdata on
function parameter, rather than having a separate deleteAuxdataFromFrame() for doing the job for trigger frames. FossilOrigin-Name: 64386fa339adb91439da979d74062f67a6ec68fd
This commit is contained in:
16
manifest
16
manifest
@@ -1,5 +1,5 @@
|
||||
C Avoid\screating\sa\smaster\sjournal\sunless\stwo\sor\smore\sdatabases\sin\sthe\ntransaction\scan\sactually\sbenefit\sfrom\sthat\smaster\sjournal.
|
||||
D 2016-02-22T14:57:38.065
|
||||
C Always\suse\sthe\ssqlite3VdbeDeleteAuxdata()\sroutine\sfor\sclearing\sauxdata\son\nfunction\sparameter,\srather\sthan\shaving\sa\sseparate\sdeleteAuxdataFromFrame()\nfor\sdoing\sthe\sjob\sfor\strigger\sframes.
|
||||
D 2016-02-22T16:04:31.519
|
||||
F Makefile.in 4e90dc1521879022aa9479268a4cd141d1771142
|
||||
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
|
||||
F Makefile.msc 28fc4ee02333996d31b3602b39eeb8e609a89ce4
|
||||
@@ -414,11 +414,11 @@ F src/update.c a7eeeaffad59c6506f01303a071dac11de8269ca
|
||||
F src/utf.c 699001c79f28e48e9bcdf8a463da029ea660540c
|
||||
F src/util.c 38c06684c922694809ccb988a13562c16890a3d5
|
||||
F src/vacuum.c feb1eabb20987983d9350cad98299b21fa811f52
|
||||
F src/vdbe.c 822e44c1dd859794f8c414e8bae4d96ac1fa774d
|
||||
F src/vdbe.c 87ae3a5657fefed7875f3eb30e7ababd48013d71
|
||||
F src/vdbe.h c743791f723049db94f009e3e30958952bc2d512
|
||||
F src/vdbeInt.h 581e5bff9a401fabdb917b816503cda7356ec3e1
|
||||
F src/vdbeInt.h 84827a809229917fdd3cc05af719dbb61314a5a3
|
||||
F src/vdbeapi.c 95b1f8e527240a18a9aea41a655b013bf07a7009
|
||||
F src/vdbeaux.c 51aaf15e5c29512423429cc0e0477e08f7181514
|
||||
F src/vdbeaux.c 9583c5c05a75feb699591c9f24e4750def6537fb
|
||||
F src/vdbeblob.c 3b570b730109e8f653d9d2081649f6e7015113db
|
||||
F src/vdbemem.c be8381ed6de54eb9cb9dfa802823cdeb5166d855
|
||||
F src/vdbesort.c 307460bfa4de4d1c3901fcd42089159131e34062
|
||||
@@ -1429,7 +1429,7 @@ F tool/vdbe_profile.tcl 246d0da094856d72d2c12efec03250d71639d19f
|
||||
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
|
||||
F tool/warnings.sh a98af506df552f3b3c0d904f94e4cdc4e1a6d598
|
||||
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
||||
P 9230ba6c01f4a550d92a0cbbf36dbe81af14fbfc
|
||||
R 28c7602ad1de5114aacb14204e4f7226
|
||||
P 3ed1890612bd45bd9c72f670d2cbb0b8fbd35d92
|
||||
R 087e6cf717ab51d03c5c0e76eb47f593
|
||||
U drh
|
||||
Z aad5fe626dac38bb4fd331764966d6a1
|
||||
Z ce8b779f1a9ea7c56d4a99bdf5d3c13f
|
||||
|
@@ -1 +1 @@
|
||||
3ed1890612bd45bd9c72f670d2cbb0b8fbd35d92
|
||||
64386fa339adb91439da979d74062f67a6ec68fd
|
@@ -1679,7 +1679,7 @@ case OP_Function: {
|
||||
sqlite3VdbeError(p, "%s", sqlite3_value_text(pCtx->pOut));
|
||||
rc = pCtx->isError;
|
||||
}
|
||||
sqlite3VdbeDeleteAuxData(p, pCtx->iOp, pOp->p1);
|
||||
sqlite3VdbeDeleteAuxData(db, &p->pAuxData, pCtx->iOp, pOp->p1);
|
||||
if( rc ) goto abort_due_to_error;
|
||||
}
|
||||
|
||||
|
@@ -444,7 +444,7 @@ u8 sqlite3VdbeOneByteSerialTypeLen(u8);
|
||||
u32 sqlite3VdbeSerialType(Mem*, int, u32*);
|
||||
u32 sqlite3VdbeSerialPut(unsigned char*, Mem*, u32);
|
||||
u32 sqlite3VdbeSerialGet(const unsigned char*, u32, Mem*);
|
||||
void sqlite3VdbeDeleteAuxData(Vdbe*, int, int);
|
||||
void sqlite3VdbeDeleteAuxData(sqlite3*, AuxData**, int, int);
|
||||
|
||||
int sqlite2BtreeKeyCompare(BtCursor *, const void *, int, int, int *);
|
||||
int sqlite3VdbeIdxKeyCompare(sqlite3*,VdbeCursor*,UnpackedRecord*,int*);
|
||||
|
@@ -1476,21 +1476,6 @@ static void releaseMemArray(Mem *p, int N){
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
** Delete the linked list of AuxData structures attached to frame *p.
|
||||
*/
|
||||
static void deleteAuxdataInFrame(sqlite3 *db, VdbeFrame *p){
|
||||
AuxData *pAux = p->pAuxData;
|
||||
while( pAux ){
|
||||
AuxData *pNext = pAux->pNext;
|
||||
if( pAux->xDelete ){
|
||||
pAux->xDelete(pAux->pAux);
|
||||
}
|
||||
sqlite3DbFree(db, pAux);
|
||||
pAux = pNext;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
** Delete a VdbeFrame object and its contents. VdbeFrame objects are
|
||||
** allocated by the OP_Program opcode in sqlite3VdbeExec().
|
||||
@@ -1503,7 +1488,7 @@ void sqlite3VdbeFrameDelete(VdbeFrame *p){
|
||||
sqlite3VdbeFreeCursor(p->v, apCsr[i]);
|
||||
}
|
||||
releaseMemArray(aMem, p->nChildMem);
|
||||
deleteAuxdataInFrame(p->v->db, p);
|
||||
sqlite3VdbeDeleteAuxData(p->v->db, &p->pAuxData, -1, 0);
|
||||
sqlite3DbFree(p->v->db, p);
|
||||
}
|
||||
|
||||
@@ -2032,7 +2017,7 @@ int sqlite3VdbeFrameRestore(VdbeFrame *pFrame){
|
||||
v->db->lastRowid = pFrame->lastRowid;
|
||||
v->nChange = pFrame->nChange;
|
||||
v->db->nChange = pFrame->nDbChange;
|
||||
sqlite3VdbeDeleteAuxData(v, -1, 0);
|
||||
sqlite3VdbeDeleteAuxData(v->db, &v->pAuxData, -1, 0);
|
||||
v->pAuxData = pFrame->pAuxData;
|
||||
pFrame->pAuxData = 0;
|
||||
return pFrame->pc;
|
||||
@@ -2066,7 +2051,7 @@ static void closeAllCursors(Vdbe *p){
|
||||
}
|
||||
|
||||
/* Delete any auxdata allocations made by the VM */
|
||||
if( p->pAuxData ) sqlite3VdbeDeleteAuxData(p, -1, 0);
|
||||
if( p->pAuxData ) sqlite3VdbeDeleteAuxData(p->db, &p->pAuxData, -1, 0);
|
||||
assert( p->pAuxData==0 );
|
||||
}
|
||||
|
||||
@@ -2914,8 +2899,7 @@ int sqlite3VdbeFinalize(Vdbe *p){
|
||||
** * the corresponding bit in argument mask is clear (where the first
|
||||
** function parameter corresponds to bit 0 etc.).
|
||||
*/
|
||||
void sqlite3VdbeDeleteAuxData(Vdbe *pVdbe, int iOp, int mask){
|
||||
AuxData **pp = &pVdbe->pAuxData;
|
||||
void sqlite3VdbeDeleteAuxData(sqlite3 *db, AuxData **pp, int iOp, int mask){
|
||||
while( *pp ){
|
||||
AuxData *pAux = *pp;
|
||||
if( (iOp<0)
|
||||
@@ -2926,7 +2910,7 @@ void sqlite3VdbeDeleteAuxData(Vdbe *pVdbe, int iOp, int mask){
|
||||
pAux->xDelete(pAux->pAux);
|
||||
}
|
||||
*pp = pAux->pNext;
|
||||
sqlite3DbFree(pVdbe->db, pAux);
|
||||
sqlite3DbFree(db, pAux);
|
||||
}else{
|
||||
pp= &pAux->pNext;
|
||||
}
|
||||
|
Reference in New Issue
Block a user