diff options
author | drh <drh@noemail.net> | 2013-07-11 12:19:12 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2013-07-11 12:19:12 +0000 |
commit | 963c74df5988fa4bf5dd6dda9fb15a9b09a0d6a4 (patch) | |
tree | d4caf2dfae4eb7cac77b5965a4410febaa68074f /src | |
parent | 888e16e7c50efe29c2e48ae7cf8cab942ba496fb (diff) | |
download | sqlite-963c74df5988fa4bf5dd6dda9fb15a9b09a0d6a4.tar.gz sqlite-963c74df5988fa4bf5dd6dda9fb15a9b09a0d6a4.zip |
Rename the SQLITE_DeferForeignKeys macro to shorter SQLITE_DeferFKs. Move
the "defer_foreign_keys" pragma into the flagPragma() routine.
FossilOrigin-Name: 3a2ab74c85a40e0e7ef2d6aef6ec23837cb788e6
Diffstat (limited to 'src')
-rw-r--r-- | src/fkey.c | 4 | ||||
-rw-r--r-- | src/main.c | 2 | ||||
-rw-r--r-- | src/pragma.c | 21 | ||||
-rw-r--r-- | src/sqliteInt.h | 2 | ||||
-rw-r--r-- | src/vdbe.c | 2 | ||||
-rw-r--r-- | src/vdbeaux.c | 2 |
6 files changed, 10 insertions, 23 deletions
diff --git a/src/fkey.c b/src/fkey.c index 3f3c5d8ad..bb59c656f 100644 --- a/src/fkey.c +++ b/src/fkey.c @@ -422,7 +422,7 @@ static void fkLookupParent( } } - if( !pFKey->isDeferred && !(pParse->db->flags & SQLITE_DeferForeignKeys) + if( !pFKey->isDeferred && !(pParse->db->flags & SQLITE_DeferFKs) && !pParse->pToplevel && !pParse->isMultiWrite ){ @@ -816,7 +816,7 @@ void sqlite3FkCheck( SrcList *pSrc; int *aiCol = 0; - if( !pFKey->isDeferred && !(db->flags & SQLITE_DeferForeignKeys) + if( !pFKey->isDeferred && !(db->flags & SQLITE_DeferFKs) && !pParse->pToplevel && !pParse->isMultiWrite ){ assert( regOld==0 && regNew!=0 ); diff --git a/src/main.c b/src/main.c index ad9422b48..b25c43be3 100644 --- a/src/main.c +++ b/src/main.c @@ -1038,7 +1038,7 @@ void sqlite3RollbackAll(sqlite3 *db, int tripCode){ /* Any deferred constraint violations have now been resolved. */ db->nDeferredCons = 0; db->nDeferredImmCons = 0; - db->flags &= ~SQLITE_DeferForeignKeys; + db->flags &= ~SQLITE_DeferFKs; /* If one has been configured, invoke the rollback-hook callback */ if( db->xRollbackCallback && (inTrans || !db->autoCommit) ){ diff --git a/src/pragma.c b/src/pragma.c index 9a288b977..fd0ebc727 100644 --- a/src/pragma.c +++ b/src/pragma.c @@ -197,12 +197,13 @@ static int flagPragma(Parse *pParse, const char *zLeft, const char *zRight){ /* TODO: Maybe it shouldn't be possible to change the ReadUncommitted ** flag if there are any active statements. */ { "read_uncommitted", SQLITE_ReadUncommitted }, - { "recursive_triggers", SQLITE_RecTriggers }, + { "recursive_triggers", SQLITE_RecTriggers }, /* This flag may only be set if both foreign-key and trigger support ** are present in the build. */ #if !defined(SQLITE_OMIT_FOREIGN_KEY) && !defined(SQLITE_OMIT_TRIGGER) - { "foreign_keys", SQLITE_ForeignKeys }, + { "foreign_keys", SQLITE_ForeignKeys }, + { "defer_foreign_keys", SQLITE_DeferFKs }, #endif }; int i; @@ -228,6 +229,7 @@ static int flagPragma(Parse *pParse, const char *zLeft, const char *zRight){ db->flags |= mask; }else{ db->flags &= ~mask; + if( mask==SQLITE_DeferFKs ) db->nDeferredImmCons = 0; } /* Many of the flag-pragmas modify the code generated by the SQL @@ -1169,21 +1171,6 @@ void sqlite3Pragma( } } }else - - if( sqlite3StrICmp(zLeft, "defer_foreign_keys")==0 ){ - if( zRight ){ - if( sqlite3GetBoolean(zRight, 0) ){ - db->flags |= SQLITE_DeferForeignKeys; - }else{ - db->flags &= ~SQLITE_DeferForeignKeys; - db->nDeferredImmCons = 0; - } - sqlite3VdbeAddOp2(v, OP_Expire, 0, 0); - }else{ - int bVal = !!(db->flags & SQLITE_DeferForeignKeys); - returnSingleInt(pParse, "defer_foreign_keys", bVal); - } - } #endif /* !defined(SQLITE_OMIT_FOREIGN_KEY) */ #ifndef SQLITE_OMIT_FOREIGN_KEY diff --git a/src/sqliteInt.h b/src/sqliteInt.h index 228d34fc5..f989c3a30 100644 --- a/src/sqliteInt.h +++ b/src/sqliteInt.h @@ -1018,7 +1018,7 @@ struct sqlite3 { #define SQLITE_PreferBuiltin 0x00100000 /* Preference to built-in funcs */ #define SQLITE_LoadExtension 0x00200000 /* Enable load_extension */ #define SQLITE_EnableTrigger 0x00400000 /* True to enable triggers */ -#define SQLITE_DeferForeignKeys 0x00800000 +#define SQLITE_DeferFKs 0x00800000 /* Defer all FK constraints */ /* ** Bits of the sqlite3.dbOptFlags field that are used by the diff --git a/src/vdbe.c b/src/vdbe.c index e5a40b799..b957212e3 100644 --- a/src/vdbe.c +++ b/src/vdbe.c @@ -5338,7 +5338,7 @@ case OP_Param: { /* out2-prerelease */ ** statement counter is incremented (immediate foreign key constraints). */ case OP_FkCounter: { - if( db->flags & SQLITE_DeferForeignKeys ){ + if( db->flags & SQLITE_DeferFKs ){ db->nDeferredImmCons += pOp->p2; }else if( pOp->p1 ){ db->nDeferredCons += pOp->p2; diff --git a/src/vdbeaux.c b/src/vdbeaux.c index 5ba51dce6..654230dfa 100644 --- a/src/vdbeaux.c +++ b/src/vdbeaux.c @@ -2221,7 +2221,7 @@ int sqlite3VdbeHalt(Vdbe *p){ }else{ db->nDeferredCons = 0; db->nDeferredImmCons = 0; - db->flags &= ~SQLITE_DeferForeignKeys; + db->flags &= ~SQLITE_DeferFKs; sqlite3CommitInternalChanges(db); } }else{ |