diff options
author | drh <drh@noemail.net> | 2003-01-12 18:02:16 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2003-01-12 18:02:16 +0000 |
commit | ed6c8671b342e9b3793e2603e7f098ba4fc092a4 (patch) | |
tree | 1243d500342286b978543d20e5c88264cedfa2e5 /src/trigger.c | |
parent | 49f0936ec79dcbdbd80134151658615726643fa1 (diff) | |
download | sqlite-ed6c8671b342e9b3793e2603e7f098ba4fc092a4.tar.gz sqlite-ed6c8671b342e9b3793e2603e7f098ba4fc092a4.zip |
Initial check-in of the code for the new sqlite_set_authorizer() API function.
The code is mostly untested at this point. (CVS 827)
FossilOrigin-Name: 52d5007f64d0af5286b2a0e1f0b9e53c86bece3f
Diffstat (limited to 'src/trigger.c')
-rw-r--r-- | src/trigger.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/trigger.c b/src/trigger.c index 222d09de0..079a4c2f8 100644 --- a/src/trigger.c +++ b/src/trigger.c @@ -50,6 +50,8 @@ void sqliteCreateTrigger( Trigger *nt; Table *tab; + if( sqliteAuthCommand(pParse, "CREATE", "TRIGGER") ) goto trigger_cleanup; + /* Check that: ** 1. the trigger name does not already exist. ** 2. the table (or view) does exist. @@ -102,6 +104,9 @@ void sqliteCreateTrigger( " trigger on table: ", -1, pTableName->z, pTableName->n, 0); goto trigger_cleanup; } + if( sqliteAuthInsert(pParse, SCHEMA_TABLE(tab->isTemp), 1) ){ + goto trigger_cleanup; + } } if (tr_tm == TK_INSTEAD){ @@ -337,6 +342,7 @@ void sqliteDropTrigger(Parse *pParse, Token *pName, int nested){ Table *pTable; Vdbe *v; + if( sqliteAuthCommand(pParse, "DROP", "TRIGGER") ) return; zName = sqliteStrNDup(pName->z, pName->n); /* ensure that the trigger being dropped exists */ @@ -347,13 +353,18 @@ void sqliteDropTrigger(Parse *pParse, Token *pName, int nested){ sqliteFree(zName); return; } + pTable = sqliteFindTable(pParse->db, pTrigger->table); + assert(pTable); + if( sqliteAuthDelete(pParse, SCHEMA_TABLE(pTable->isTemp), 1) ){ + sqliteFree(zName); + return; + } + /* * If this is not an "explain", then delete the trigger structure. */ if( !pParse->explain ){ - pTable = sqliteFindTable(pParse->db, pTrigger->table); - assert(pTable); if( pTable->pTrigger == pTrigger ){ pTable->pTrigger = pTrigger->pNext; }else{ |