1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-08-08 14:02:16 +03:00

Changes to support recursive triggers.

FossilOrigin-Name: 9b9c19211593d5ff7b39254a29c284560a8bcedb
This commit is contained in:
dan
2009-08-28 18:53:45 +00:00
parent e408edac16
commit 165921a742
25 changed files with 889 additions and 581 deletions

View File

@@ -943,18 +943,19 @@ FuncDef *sqlite3VtabOverloadFunction(
void sqlite3VtabMakeWritable(Parse *pParse, Table *pTab){
int i, n;
Table **apVtabLock;
Parse *pRoot = (pParse->pRoot ? pParse->pRoot : pParse);
assert( IsVirtual(pTab) );
for(i=0; i<pParse->nVtabLock; i++){
if( pTab==pParse->apVtabLock[i] ) return;
for(i=0; i<pRoot->nVtabLock; i++){
if( pTab==pRoot->apVtabLock[i] ) return;
}
n = (pParse->nVtabLock+1)*sizeof(pParse->apVtabLock[0]);
apVtabLock = sqlite3_realloc(pParse->apVtabLock, n);
n = (pRoot->nVtabLock+1)*sizeof(pRoot->apVtabLock[0]);
apVtabLock = sqlite3_realloc(pRoot->apVtabLock, n);
if( apVtabLock ){
pParse->apVtabLock = apVtabLock;
pParse->apVtabLock[pParse->nVtabLock++] = pTab;
pRoot->apVtabLock = apVtabLock;
pRoot->apVtabLock[pRoot->nVtabLock++] = pTab;
}else{
pParse->db->mallocFailed = 1;
pRoot->db->mallocFailed = 1;
}
}