aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2013-07-11 12:19:12 +0000
committerdrh <drh@noemail.net>2013-07-11 12:19:12 +0000
commit963c74df5988fa4bf5dd6dda9fb15a9b09a0d6a4 (patch)
treed4caf2dfae4eb7cac77b5965a4410febaa68074f /src
parent888e16e7c50efe29c2e48ae7cf8cab942ba496fb (diff)
downloadsqlite-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.c4
-rw-r--r--src/main.c2
-rw-r--r--src/pragma.c21
-rw-r--r--src/sqliteInt.h2
-rw-r--r--src/vdbe.c2
-rw-r--r--src/vdbeaux.c2
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{