Bug# 20221- Dumping of multiple databases containing view(s) yields maleformed dumps.
This commit is contained in:
parent
00ec3973f7
commit
ad12809f35
@ -2637,7 +2637,7 @@ static int init_dumping(char *database)
|
|||||||
/*
|
/*
|
||||||
length of table name * 2 (if name contains quotes), 2 quotes and 0
|
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);
|
char *qdatabase= quote_name(database,quoted_database_buf,opt_quoted);
|
||||||
if (opt_comments)
|
if (opt_comments)
|
||||||
{
|
{
|
||||||
@ -2786,7 +2786,18 @@ static my_bool dump_all_views_in_db(char *database)
|
|||||||
DB_error(sock, "when selecting the database");
|
DB_error(sock, "when selecting the database");
|
||||||
return 1;
|
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)
|
if (opt_xml)
|
||||||
print_xml_tag1(md_result_file, "", "database name=", database, "\n");
|
print_xml_tag1(md_result_file, "", "database name=", database, "\n");
|
||||||
if (lock_tables)
|
if (lock_tables)
|
||||||
@ -3239,7 +3250,7 @@ static char *primary_key_fields(const char *table_name)
|
|||||||
MYSQL_RES *res = NULL;
|
MYSQL_RES *res = NULL;
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
/* SHOW KEYS FROM + table name * 2 (escaped) + 2 quotes + \0 */
|
/* 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;
|
uint result_length = 0;
|
||||||
char *result = 0;
|
char *result = 0;
|
||||||
|
|
||||||
|
@ -2503,6 +2503,8 @@ DROP TABLE IF EXISTS `v2`;
|
|||||||
`b` varchar(32),
|
`b` varchar(32),
|
||||||
`c` varchar(32)
|
`c` varchar(32)
|
||||||
) */;
|
) */;
|
||||||
|
|
||||||
|
USE `test`;
|
||||||
/*!50001 DROP TABLE IF EXISTS `v0`*/;
|
/*!50001 DROP TABLE IF EXISTS `v0`*/;
|
||||||
/*!50001 DROP VIEW IF EXISTS `v0`*/;
|
/*!50001 DROP VIEW IF EXISTS `v0`*/;
|
||||||
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||||
@ -2826,6 +2828,8 @@ DROP TABLE IF EXISTS `v1`;
|
|||||||
/*!50001 CREATE TABLE `v1` (
|
/*!50001 CREATE TABLE `v1` (
|
||||||
`id` int(11)
|
`id` int(11)
|
||||||
) */;
|
) */;
|
||||||
|
|
||||||
|
USE `mysqldump_test_db`;
|
||||||
/*!50001 DROP TABLE IF EXISTS `v1`*/;
|
/*!50001 DROP TABLE IF EXISTS `v1`*/;
|
||||||
/*!50001 DROP VIEW IF EXISTS `v1`*/;
|
/*!50001 DROP VIEW IF EXISTS `v1`*/;
|
||||||
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||||
@ -2867,6 +2871,10 @@ USE `mysqldump_views`;
|
|||||||
/*!50001 CREATE TABLE `nasishnasifu` (
|
/*!50001 CREATE TABLE `nasishnasifu` (
|
||||||
`id` bigint(20) unsigned
|
`id` bigint(20) unsigned
|
||||||
) */;
|
) */;
|
||||||
|
|
||||||
|
USE `mysqldump_tables`;
|
||||||
|
|
||||||
|
USE `mysqldump_views`;
|
||||||
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||||
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||||
/*!50001 VIEW `mysqldump_views`.`nasishnasifu` AS select `mysqldump_tables`.`basetable`.`id` AS `id` from `mysqldump_tables`.`basetable` */;
|
/*!50001 VIEW `mysqldump_views`.`nasishnasifu` AS select `mysqldump_tables`.`basetable`.`id` AS `id` from `mysqldump_tables`.`basetable` */;
|
||||||
@ -2874,3 +2882,34 @@ drop view nasishnasifu;
|
|||||||
drop database mysqldump_views;
|
drop database mysqldump_views;
|
||||||
drop table mysqldump_tables.basetable;
|
drop table mysqldump_tables.basetable;
|
||||||
drop database mysqldump_tables;
|
drop database mysqldump_tables;
|
||||||
|
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;
|
||||||
|
drop view v1;
|
||||||
|
drop table t1;
|
||||||
|
drop database mysqldump_dbb;
|
||||||
|
use mysqldump_dba;
|
||||||
|
drop view v1;
|
||||||
|
drop table t1;
|
||||||
|
drop database mysqldump_dba;
|
||||||
|
select * from mysqldump_dba.v1;
|
||||||
|
f1 f2
|
||||||
|
1 1
|
||||||
|
select * from mysqldump_dbb.v1;
|
||||||
|
f1 f2
|
||||||
|
2 2
|
||||||
|
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;
|
||||||
|
@ -1230,3 +1230,41 @@ drop view nasishnasifu;
|
|||||||
drop database mysqldump_views;
|
drop database mysqldump_views;
|
||||||
drop table mysqldump_tables.basetable;
|
drop table mysqldump_tables.basetable;
|
||||||
drop database mysqldump_tables;
|
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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user