diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/build.c | 2 | ||||
-rw-r--r-- | src/fkey.c | 6 | ||||
-rw-r--r-- | src/sqliteInt.h | 1 |
3 files changed, 7 insertions, 2 deletions
diff --git a/src/build.c b/src/build.c index 215b3c0a9..7b0ea04bf 100644 --- a/src/build.c +++ b/src/build.c @@ -2267,7 +2267,7 @@ void sqlite3DeferForeignKey(Parse *pParse, int isDeferred){ Table *pTab; FKey *pFKey; if( (pTab = pParse->pNewTable)==0 || (pFKey = pTab->pFKey)==0 ) return; - assert( isDeferred==0 || isDeferred==1 ); + assert( isDeferred==0 || isDeferred==1 ); /* EV: R-30323-21917 */ pFKey->isDeferred = (u8)isDeferred; #endif } diff --git a/src/fkey.c b/src/fkey.c index 55d0a4f92..8af7ea924 100644 --- a/src/fkey.c +++ b/src/fkey.c @@ -1178,7 +1178,11 @@ void sqlite3FkDelete(Table *pTab){ fkTriggerDelete(pTab->dbMem, pFKey->apTrigger[1]); #endif - /* Delete the memory allocated for the FK structure. */ + /* EV: R-30323-21917 Each foreign key constraint in SQLite is + ** classified as either immediate or deferred. + */ + assert( pFKey->isDeferred==0 || pFKey->isDeferred==1 ); + pNext = pFKey->pNextFrom; sqlite3DbFree(pTab->dbMem, pFKey); } diff --git a/src/sqliteInt.h b/src/sqliteInt.h index 03ff1be11..2675f44fb 100644 --- a/src/sqliteInt.h +++ b/src/sqliteInt.h @@ -1289,6 +1289,7 @@ struct FKey { FKey *pNextTo; /* Next foreign key on table named zTo */ FKey *pPrevTo; /* Previous foreign key on table named zTo */ int nCol; /* Number of columns in this key */ + /* EV: R-30323-21917 */ u8 isDeferred; /* True if constraint checking is deferred till COMMIT */ u8 aAction[2]; /* ON DELETE and ON UPDATE actions, respectively */ Trigger *apTrigger[2]; /* Triggers for aAction[] actions */ |