Loading client/mysqldump.c +14 −3 Original line number Diff line number Diff line Loading @@ -2910,7 +2910,7 @@ static int init_dumping(char *database) /* length of table name * 2 (if name contains quotes), 2 quotes and 0 */ char quoted_database_buf[64*2+3]; char quoted_database_buf[NAME_LEN*2+3]; char *qdatabase= quote_name(database,quoted_database_buf,opt_quoted); if (opt_comments) { Loading Loading @@ -3067,7 +3067,18 @@ static my_bool dump_all_views_in_db(char *database) DB_error(sock, "when selecting the database"); return 1; } if (opt_databases || opt_alldbs) { char quoted_database_buf[NAME_LEN*2+3]; char *qdatabase= quote_name(database,quoted_database_buf,opt_quoted); if (opt_comments) { fprintf(md_result_file,"\n--\n-- Current Database: %s\n--\n", qdatabase); check_io(md_result_file); } fprintf(md_result_file,"\nUSE %s;\n", qdatabase); check_io(md_result_file); } if (opt_xml) print_xml_tag1(md_result_file, "", "database name=", database, "\n"); if (lock_tables) Loading Loading @@ -3526,7 +3537,7 @@ static char *primary_key_fields(const char *table_name) MYSQL_RES *res = NULL; MYSQL_ROW row; /* SHOW KEYS FROM + table name * 2 (escaped) + 2 quotes + \0 */ char show_keys_buff[15 + 64 * 2 + 3]; char show_keys_buff[15 + NAME_LEN * 2 + 3]; uint result_length = 0; char *result = 0; Loading mysql-test/t/mysqldump.test +44 −0 Original line number Diff line number Diff line Loading @@ -1235,6 +1235,50 @@ create database mysqldump_views; use mysqldump_views; create view nasishnasifu as select mysqldump_tables.basetable.id from mysqldump_tables.basetable; --exec $MYSQL_DUMP --skip-comments --compact --databases mysqldump_tables mysqldump_views; drop view nasishnasifu; drop database mysqldump_views; drop table mysqldump_tables.basetable; drop database mysqldump_tables; # Bug20221 Dumping of multiple databases containing view(s) yields maleformed dumps create database mysqldump_dba; use mysqldump_dba; create table t1 (f1 int, f2 int); insert into t1 values (1,1); create view v1 as select f1, f2 from t1; create database mysqldump_dbb; use mysqldump_dbb; create table t1 (f1 int, f2 int); insert into t1 values (2,2); create view v1 as select f1, f2 from t1; --exec $MYSQL_DUMP --skip-comments --add-drop-database --databases mysqldump_dba mysqldump_dbb > $MYSQLTEST_VARDIR/tmp/bug20221_backup; drop view v1; drop table t1; drop database mysqldump_dbb; use mysqldump_dba; drop view v1; drop table t1; drop database mysqldump_dba; --exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug20221_backup; select * from mysqldump_dba.v1; select * from mysqldump_dbb.v1; use mysqldump_dba; drop view v1; drop table t1; drop database mysqldump_dba; use mysqldump_dbb; drop view v1; drop table t1; drop database mysqldump_dbb; --exec $MYSQL_DUMP --skip-comments --databases mysqldump_tables mysqldump_views; drop view nasishnasifu; Loading Loading
client/mysqldump.c +14 −3 Original line number Diff line number Diff line Loading @@ -2910,7 +2910,7 @@ static int init_dumping(char *database) /* length of table name * 2 (if name contains quotes), 2 quotes and 0 */ char quoted_database_buf[64*2+3]; char quoted_database_buf[NAME_LEN*2+3]; char *qdatabase= quote_name(database,quoted_database_buf,opt_quoted); if (opt_comments) { Loading Loading @@ -3067,7 +3067,18 @@ static my_bool dump_all_views_in_db(char *database) DB_error(sock, "when selecting the database"); return 1; } if (opt_databases || opt_alldbs) { char quoted_database_buf[NAME_LEN*2+3]; char *qdatabase= quote_name(database,quoted_database_buf,opt_quoted); if (opt_comments) { fprintf(md_result_file,"\n--\n-- Current Database: %s\n--\n", qdatabase); check_io(md_result_file); } fprintf(md_result_file,"\nUSE %s;\n", qdatabase); check_io(md_result_file); } if (opt_xml) print_xml_tag1(md_result_file, "", "database name=", database, "\n"); if (lock_tables) Loading Loading @@ -3526,7 +3537,7 @@ static char *primary_key_fields(const char *table_name) MYSQL_RES *res = NULL; MYSQL_ROW row; /* SHOW KEYS FROM + table name * 2 (escaped) + 2 quotes + \0 */ char show_keys_buff[15 + 64 * 2 + 3]; char show_keys_buff[15 + NAME_LEN * 2 + 3]; uint result_length = 0; char *result = 0; Loading
mysql-test/t/mysqldump.test +44 −0 Original line number Diff line number Diff line Loading @@ -1235,6 +1235,50 @@ create database mysqldump_views; use mysqldump_views; create view nasishnasifu as select mysqldump_tables.basetable.id from mysqldump_tables.basetable; --exec $MYSQL_DUMP --skip-comments --compact --databases mysqldump_tables mysqldump_views; drop view nasishnasifu; drop database mysqldump_views; drop table mysqldump_tables.basetable; drop database mysqldump_tables; # Bug20221 Dumping of multiple databases containing view(s) yields maleformed dumps create database mysqldump_dba; use mysqldump_dba; create table t1 (f1 int, f2 int); insert into t1 values (1,1); create view v1 as select f1, f2 from t1; create database mysqldump_dbb; use mysqldump_dbb; create table t1 (f1 int, f2 int); insert into t1 values (2,2); create view v1 as select f1, f2 from t1; --exec $MYSQL_DUMP --skip-comments --add-drop-database --databases mysqldump_dba mysqldump_dbb > $MYSQLTEST_VARDIR/tmp/bug20221_backup; drop view v1; drop table t1; drop database mysqldump_dbb; use mysqldump_dba; drop view v1; drop table t1; drop database mysqldump_dba; --exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug20221_backup; select * from mysqldump_dba.v1; select * from mysqldump_dbb.v1; use mysqldump_dba; drop view v1; drop table t1; drop database mysqldump_dba; use mysqldump_dbb; drop view v1; drop table t1; drop database mysqldump_dbb; --exec $MYSQL_DUMP --skip-comments --databases mysqldump_tables mysqldump_views; drop view nasishnasifu; Loading