aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/build.c2
-rw-r--r--src/fkey.c6
-rw-r--r--src/sqliteInt.h1
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 */