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:
15
src/vtab.c
15
src/vtab.c
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user