Use sqlite3DbFreeNN() instead of sqlite3DbFree() in a few hot spots for
better performance. FossilOrigin-Name: b12de0ecc78a4f654c8e7b2b17cc2201688808a4f516908e9563a216677e655c
This commit is contained in:
+1
-1
@@ -710,7 +710,7 @@ int sqlite3RunParser(Parse *pParse, const char *zSql){
|
||||
if( pParse->pNewTrigger && !IN_RENAME_OBJECT ){
|
||||
sqlite3DeleteTrigger(db, pParse->pNewTrigger);
|
||||
}
|
||||
sqlite3DbFree(db, pParse->pVList);
|
||||
if( pParse->pVList ) sqlite3DbFreeNN(db, pParse->pVList);
|
||||
db->pParse = pParentParse;
|
||||
assert( nErr==0 || pParse->rc!=SQLITE_OK );
|
||||
return nErr;
|
||||
|
||||
+6
-4
@@ -3439,7 +3439,10 @@ void sqlite3VdbeDeleteAuxData(sqlite3 *db, AuxData **pp, int iOp, int mask){
|
||||
void sqlite3VdbeClearObject(sqlite3 *db, Vdbe *p){
|
||||
SubProgram *pSub, *pNext;
|
||||
assert( p->db==0 || p->db==db );
|
||||
releaseMemArray(p->aColName, p->nResColumn*COLNAME_N);
|
||||
if( p->aColName ){
|
||||
releaseMemArray(p->aColName, p->nResColumn*COLNAME_N);
|
||||
sqlite3DbFreeNN(db, p->aColName);
|
||||
}
|
||||
for(pSub=p->pProgram; pSub; pSub=pNext){
|
||||
pNext = pSub->pNext;
|
||||
vdbeFreeOpArray(db, pSub->aOp, pSub->nOp);
|
||||
@@ -3447,11 +3450,10 @@ void sqlite3VdbeClearObject(sqlite3 *db, Vdbe *p){
|
||||
}
|
||||
if( p->iVdbeMagic!=VDBE_MAGIC_INIT ){
|
||||
releaseMemArray(p->aVar, p->nVar);
|
||||
sqlite3DbFree(db, p->pVList);
|
||||
sqlite3DbFree(db, p->pFree);
|
||||
if( p->pVList ) sqlite3DbFreeNN(db, p->pVList);
|
||||
if( p->pFree ) sqlite3DbFreeNN(db, p->pFree);
|
||||
}
|
||||
vdbeFreeOpArray(db, p->aOp, p->nOp);
|
||||
sqlite3DbFree(db, p->aColName);
|
||||
sqlite3DbFree(db, p->zSql);
|
||||
#ifdef SQLITE_ENABLE_NORMALIZE
|
||||
sqlite3DbFree(db, p->zNormSql);
|
||||
|
||||
Reference in New Issue
Block a user