diff options
author | Robert Bindar <robert@mariadb.org> | 2019-05-13 12:30:35 +0300 |
---|---|---|
committer | Sergey Vojtovich <svoj@mariadb.org> | 2019-05-15 18:45:58 +0400 |
commit | a941e58fb8a1911b1dabcd85c8f906e88466318d (patch) | |
tree | 9a439a074bf74abdfe16990537ed1d66b00dd55c | |
parent | 47637a3dd13d19e897a7cbfd1499f1bf3b2fdb2a (diff) | |
download | mariadb-git-a941e58fb8a1911b1dabcd85c8f906e88466318d.tar.gz |
MDEV-788 mysqlimport should support the ability to disable foreign keys
-rw-r--r-- | client/mysqlimport.c | 11 | ||||
-rw-r--r-- | mysql-test/r/mysqldump.result | 18 | ||||
-rw-r--r-- | mysql-test/t/mysqldump.test | 29 |
3 files changed, 56 insertions, 2 deletions
diff --git a/client/mysqlimport.c b/client/mysqlimport.c index 38cec6da668..4cd51477e32 100644 --- a/client/mysqlimport.c +++ b/client/mysqlimport.c @@ -48,8 +48,8 @@ static char *add_load_option(char *ptr,const char *object, const char *statement); static my_bool verbose=0,lock_tables=0,ignore_errors=0,opt_delete=0, - replace=0,silent=0,ignore=0,opt_compress=0, - opt_low_priority= 0, tty_password= 0; + replace, silent, ignore, ignore_foreign_keys, + opt_compress, opt_low_priority, tty_password; static my_bool debug_info_flag= 0, debug_check_flag= 0; static uint opt_use_threads=0, opt_local_file=0, my_end_arg= 0; static char *opt_password=0, *current_user=0, @@ -123,6 +123,10 @@ static struct my_option my_long_options[] = ¤t_host, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"ignore", 'i', "If duplicate unique key was found, keep old row.", &ignore, &ignore, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"ignore-foreign-keys", 'k', + "Disable foreign key checks while importing the data.", + &ignore_foreign_keys, &ignore_foreign_keys, 0, GET_BOOL, NO_ARG, + 0, 0, 0, 0, 0, 0}, {"ignore-lines", OPT_IGN_LINES, "Ignore first n lines of data infile.", &opt_ignore_lines, &opt_ignore_lines, 0, GET_LL, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, @@ -487,6 +491,9 @@ static MYSQL *db_connect(char *host, char *database, ignore_errors=0; db_error(mysql); } + if (ignore_foreign_keys) + mysql_query(mysql, "set foreign_key_checks= 0;"); + return mysql; } diff --git a/mysql-test/r/mysqldump.result b/mysql-test/r/mysqldump.result index 25c1931d0e0..8d8e3b7eda4 100644 --- a/mysql-test/r/mysqldump.result +++ b/mysql-test/r/mysqldump.result @@ -5610,3 +5610,21 @@ DROP FUNCTION f; # DROP VIEW v1; DROP FUNCTION f; +# +# MDEV-788 New option to ignore foreign key contraints in mysqlimport +# +create table t1 ( +id int primary key +) engine=InnoDB; +create table t2 ( +t1_id int, +CONSTRAINT fk +FOREIGN KEY (t1_id) REFERENCES t1 (id) +) ENGINE = InnoDB; +select count(*) from t2; +count(*) +1 +select count(*) from t2; +count(*) +2 +drop tables t2, t1; diff --git a/mysql-test/t/mysqldump.test b/mysql-test/t/mysqldump.test index e8a0cc3f81f..7382bd455c8 100644 --- a/mysql-test/t/mysqldump.test +++ b/mysql-test/t/mysqldump.test @@ -2484,6 +2484,7 @@ DROP TABLE t1; DROP TABLE t2; DROP DATABASE db_20772273; USE test; +--remove_file $MYSQLTEST_VARDIR/tmp/t2.txt --echo # --echo # Bug #25717383: MYSQLDUMP MAY EXECUTE ANY ARBITRARY QUERY @@ -2649,3 +2650,31 @@ DROP FUNCTION f; --echo # DROP VIEW v1; DROP FUNCTION f; + +--echo # +--echo # MDEV-788 New option to ignore foreign key contraints in mysqlimport +--echo # +create table t1 ( + id int primary key +) engine=InnoDB; + +create table t2 ( + t1_id int, + CONSTRAINT fk + FOREIGN KEY (t1_id) REFERENCES t1 (id) +) ENGINE = InnoDB; + +--write_file $MYSQLTEST_VARDIR/tmp/t2.txt +0 +EOF + +--error 1 +--exec $MYSQL_IMPORT --silent test $MYSQLTEST_VARDIR/tmp/t2.txt +--exec $MYSQL_IMPORT --silent -k test $MYSQLTEST_VARDIR/tmp/t2.txt +select count(*) from t2; + +--exec $MYSQL_IMPORT --silent --ignore-foreign-keys test $MYSQLTEST_VARDIR/tmp/t2.txt +select count(*) from t2; + +--remove_file $MYSQLTEST_VARDIR/tmp/t2.txt +drop tables t2, t1; |