mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-29 08:01:23 +03:00
Ensure the counts of "deferred FK violations" and "deferred immediate FK violations" are kept separate when "PRAGMA defer_foreign_keys" is used.
FossilOrigin-Name: c5190b0fd9bd76653fb7bb08e931699e42c88cef8a00352360d091948cda93a2
This commit is contained in:
@ -1153,7 +1153,10 @@ void sqlite3Pragma(
|
||||
}
|
||||
}else{
|
||||
db->flags &= ~mask;
|
||||
if( mask==SQLITE_DeferFKs ) db->nDeferredImmCons = 0;
|
||||
if( mask==SQLITE_DeferFKs ){
|
||||
db->nDeferredImmCons = 0;
|
||||
db->nDeferredCons = 0;
|
||||
}
|
||||
if( (mask & SQLITE_WriteSchema)!=0
|
||||
&& sqlite3_stricmp(zRight, "reset")==0
|
||||
){
|
||||
|
10
src/vdbe.c
10
src/vdbe.c
@ -7483,12 +7483,14 @@ case OP_Param: { /* out2 */
|
||||
** statement counter is incremented (immediate foreign key constraints).
|
||||
*/
|
||||
case OP_FkCounter: {
|
||||
if( db->flags & SQLITE_DeferFKs ){
|
||||
db->nDeferredImmCons += pOp->p2;
|
||||
}else if( pOp->p1 ){
|
||||
if( pOp->p1 ){
|
||||
db->nDeferredCons += pOp->p2;
|
||||
}else{
|
||||
p->nFkConstraint += pOp->p2;
|
||||
if( db->flags & SQLITE_DeferFKs ){
|
||||
db->nDeferredImmCons += pOp->p2;
|
||||
}else{
|
||||
p->nFkConstraint += pOp->p2;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
Reference in New Issue
Block a user