diff options
author | Daniel Black <grooverdan@users.sourceforge.net> | 2018-01-19 19:09:05 +1100 |
---|---|---|
committer | Sergey Vojtovich <svoj@mariadb.org> | 2018-04-16 13:39:41 +0400 |
commit | c9839cb0b34014bb463aa790548a39a1975d9c16 (patch) | |
tree | 230467f44c01ca79f972adf577c9457d2d6b9941 | |
parent | 784e9391c98b799550bd901ce9db1d0e6f276a0b (diff) | |
download | mariadb-git-c9839cb0b34014bb463aa790548a39a1975d9c16.tar.gz |
MDEV-13336: mysqldump --ignore-database address review comments
-rw-r--r-- | client/mysqldump.c | 25 | ||||
-rw-r--r-- | mysql-test/main/mysqldump.result | 8 | ||||
-rw-r--r-- | mysql-test/main/mysqldump.test | 9 |
3 files changed, 30 insertions, 12 deletions
diff --git a/client/mysqldump.c b/client/mysqldump.c index 17dd4824809..694ce4a5134 100644 --- a/client/mysqldump.c +++ b/client/mysqldump.c @@ -212,9 +212,9 @@ TYPELIB compatible_mode_typelib= {array_elements(compatible_mode_names) - 1, #define MED_ENGINES "MRG_MyISAM, MRG_ISAM, CONNECT, OQGRAPH, SPIDER, VP, FEDERATED" -HASH ignore_table; +static HASH ignore_table; -HASH ignore_database; +static HASH ignore_database; static struct my_option my_long_options[] = { @@ -908,7 +908,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), opt_databases=0; break; case (int) OPT_IGNORE_DATABASE: - if (my_hash_insert(&ignore_database, (uchar*)my_strdup(argument, MYF(0)))) + if (my_hash_insert(&ignore_database, (uchar*) my_strdup(argument, MYF(0)))) exit(EX_EOM); break; case (int) OPT_IGNORE_TABLE: @@ -1070,9 +1070,10 @@ static int get_options(int *argc, char ***argv) my_progname_short); return(EX_USAGE); } - if (ignore_database.records && !opt_alldbs) { + if (ignore_database.records && !opt_alldbs) + { fprintf(stderr, - "%s: --ignore-database can only be used toghether with --all-databases.\n", + "%s: --ignore-database can only be used together with --all-databases.\n", my_progname_short); return(EX_USAGE); } @@ -4236,6 +4237,7 @@ static int dump_tablespaces_for_tables(char *db, char **table_names, int tables) return r; } + static int dump_tablespaces_for_databases(char** databases) { int r; @@ -4265,6 +4267,7 @@ static int dump_tablespaces_for_databases(char** databases) return r; } + static int dump_tablespaces(char* ts_where) { MYSQL_ROW row; @@ -4451,11 +4454,11 @@ static int dump_tablespaces(char* ts_where) DBUG_RETURN(0); } -/* Return 1 if we should copy the database */ -my_bool include_database(const uchar *hash_key, size_t len) +/* Return 1 if we should copy the database */ +static my_bool include_database(const char *hash_key) { - return ! my_hash_search(&ignore_database, hash_key, len); + return !my_hash_search(&ignore_database, (uchar*) hash_key, strlen(hash_key)); } @@ -4477,7 +4480,7 @@ static int dump_all_databases() !my_strcasecmp(&my_charset_latin1, row[0], PERFORMANCE_SCHEMA_DB_NAME)) continue; - if (include_database(row[0], strlen(row[0]))) + if (include_database(row[0])) if (dump_all_tables_in_db(row[0])) result=1; } @@ -4501,7 +4504,7 @@ static int dump_all_databases() !my_strcasecmp(&my_charset_latin1, row[0], PERFORMANCE_SCHEMA_DB_NAME)) continue; - if (include_database(row[0], strlen(row[0]))) + if (include_database(row[0])) if (dump_all_views_in_db(row[0])) result=1; } @@ -6087,8 +6090,6 @@ int main(int argc, char **argv) sf_leaking_memory=1; /* don't report memory leaks on early exits */ compatible_mode_normal_str[0]= 0; default_charset= (char *)mysql_universal_client_charset; - bzero((char*) &ignore_database, sizeof(ignore_database)); - bzero((char*) &ignore_table, sizeof(ignore_table)); exit_code= get_options(&argc, &argv); if (exit_code) diff --git a/mysql-test/main/mysqldump.result b/mysql-test/main/mysqldump.result index a1e206dffd7..620afb32666 100644 --- a/mysql-test/main/mysqldump.result +++ b/mysql-test/main/mysqldump.result @@ -4478,6 +4478,14 @@ TRUNCATE mysql.event; SHOW EVENTS; Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation # +# MDEV-13336: add ignore-database option +# with --all-databases +# +DROP DATABASE test; +SHOW DATABASES LIKE 'test'; +Database (test) +CREATE DATABASE test; +# # Bug#31113 mysqldump 5.1 can't handle a dash ("-") in database names # create database `test-database`; diff --git a/mysql-test/main/mysqldump.test b/mysql-test/main/mysqldump.test index 6dde5aa7bc6..ebe54bac44a 100644 --- a/mysql-test/main/mysqldump.test +++ b/mysql-test/main/mysqldump.test @@ -1926,6 +1926,15 @@ TRUNCATE mysql.event; SHOW EVENTS; --remove_file $MYSQLTEST_VARDIR/tmp/bug29938.sql +--echo # +--echo # MDEV-13336: add ignore-database option +--echo # with --all-databases +--echo # +--exec $MYSQL_DUMP --ignore-database test --all-databases > $MYSQLTEST_VARDIR/tmp/mysqldump-MDEV-13336.sql +DROP DATABASE test; +--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/mysqldump-MDEV-13336.sql +SHOW DATABASES LIKE 'test'; +CREATE DATABASE test; --echo # --echo # Bug#31113 mysqldump 5.1 can't handle a dash ("-") in database names |