diff --git a/go/libraries/doltcore/env/actions/commit.go b/go/libraries/doltcore/env/actions/commit.go index 4655792ef23..61b2ede4ca4 100644 --- a/go/libraries/doltcore/env/actions/commit.go +++ b/go/libraries/doltcore/env/actions/commit.go @@ -101,10 +101,17 @@ func GetCommitStaged( } } - roots.Staged, err = doltdb.ValidateForeignKeysOnSchemas(ctx, tableResolver, roots.Staged) + fkChecks, err := ctx.GetSessionVariable(ctx, "foreign_key_checks") if err != nil { return nil, err } + + if intValue, ok := fkChecks.(int8); ok && intValue == 1 { + roots.Staged, err = doltdb.ValidateForeignKeysOnSchemas(ctx, tableResolver, roots.Staged) + if err != nil { + return nil, err + } + } } meta, err := datas.NewCommitMetaWithUserTS(props.Name, props.Email, props.Message, props.Date) diff --git a/go/libraries/doltcore/sqle/enginetest/dolt_queries.go b/go/libraries/doltcore/sqle/enginetest/dolt_queries.go index 213d91afd6b..b033d19f77a 100644 --- a/go/libraries/doltcore/sqle/enginetest/dolt_queries.go +++ b/go/libraries/doltcore/sqle/enginetest/dolt_queries.go @@ -8253,6 +8253,19 @@ var DoltCommitTests = []queries.ScriptTest{ }, }, }, + { + Name: "DOLT_COMMIT respects foreign_key_checks=0", + SetUpScript: []string{ + "SET @@foreign_key_checks=0;", + "CREATE TABLE invalidFK (id int primary key, constraint fk foreign key (id) references invalidTable(id))", + }, + Assertions: []queries.ScriptTestAssertion{ + { + Query: "CALL DOLT_COMMIT('-A', '-m', 'Table with foreign key violation');", + Expected: []sql.Row{{doltCommit}}, + }, + }, + }, } var DoltIndexPrefixScripts = []queries.ScriptTest{