mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Bug #9558 mysqldump --no-data db t1 t2 format still dumps data
- Check the Dflag variable inside of function dump_table to see if data should be dumped or not. - Add test for --xml and --no-data as well Reapplying patch! client/mysqldump.c: Move the check of --no-data flag and "number of fields" inside of the dump_table function. mysql-test/r/mysqldump.result: Update test results add ouput for --xml and --no-data mysql-test/t/mysqldump.test: Add tests for XML and --no-data as well.
This commit is contained in:
@ -1595,6 +1595,26 @@ static void dump_table(uint numFields, char *table)
|
||||
const char *table_type;
|
||||
int error= 0;
|
||||
|
||||
/* Check --no-data flag */
|
||||
if (dFlag)
|
||||
{
|
||||
if (verbose)
|
||||
fprintf(stderr,
|
||||
"-- Skipping dump data for table '%s', --no-data was used\n",
|
||||
table);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Check that there are any fields in the table */
|
||||
if(numFields == 0)
|
||||
{
|
||||
if (verbose)
|
||||
fprintf(stderr,
|
||||
"-- Skipping dump data for table '%s', it has no fields\n",
|
||||
table);
|
||||
return;
|
||||
}
|
||||
|
||||
result_table= quote_name(table,table_buff, 1);
|
||||
opt_quoted_table= quote_name(table, table_buff2, 0);
|
||||
|
||||
@ -2204,8 +2224,7 @@ static int dump_all_tables_in_db(char *database)
|
||||
if (include_table(hash_key, end - hash_key))
|
||||
{
|
||||
numrows = get_table_structure(table, database);
|
||||
if (!dFlag && numrows > 0)
|
||||
dump_table(numrows,table);
|
||||
dump_table(numrows,table);
|
||||
my_free(order_by, MYF(MY_ALLOW_ZERO_PTR));
|
||||
order_by= 0;
|
||||
}
|
||||
@ -2392,6 +2411,7 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
|
||||
}
|
||||
if (opt_xml)
|
||||
print_xml_tag1(md_result_file, "", "database name=", db, "\n");
|
||||
|
||||
/* Dump each selected table */
|
||||
const char *table_name;
|
||||
for (i= 0; i < dump_tables.records; i++)
|
||||
@ -2401,6 +2421,8 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
|
||||
numrows = get_table_structure(table_name, db);
|
||||
dump_table(numrows, table_name);
|
||||
}
|
||||
|
||||
/* Dump each selected view */
|
||||
if (was_views)
|
||||
{
|
||||
for(i=0; i < dump_tables.records; i++)
|
||||
|
@ -1529,6 +1529,28 @@ CREATE TABLE `t2` (
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
<?xml version="1.0"?>
|
||||
<mysqldump>
|
||||
<database name="mysqldump_test_db">
|
||||
<table_structure name="t1">
|
||||
<field Field="a" Type="int(11)" Null="YES" Key="" Extra="" />
|
||||
</table_structure>
|
||||
<table_structure name="t2">
|
||||
<field Field="a" Type="int(11)" Null="YES" Key="" Extra="" />
|
||||
</table_structure>
|
||||
</database>
|
||||
</mysqldump>
|
||||
<?xml version="1.0"?>
|
||||
<mysqldump>
|
||||
<database name="mysqldump_test_db">
|
||||
<table_structure name="t1">
|
||||
<field Field="a" Type="int(11)" Null="YES" Key="" Extra="" />
|
||||
</table_structure>
|
||||
<table_structure name="t2">
|
||||
<field Field="a" Type="int(11)" Null="YES" Key="" Extra="" />
|
||||
</table_structure>
|
||||
</database>
|
||||
</mysqldump>
|
||||
DROP TABLE t1, t2;
|
||||
DROP DATABASE mysqldump_test_db;
|
||||
create database mysqldump_test_db;
|
||||
|
@ -600,6 +600,8 @@ INSERT INTO t1 VALUES (1), (2);
|
||||
INSERT INTO t2 VALUES (1), (2);
|
||||
--exec $MYSQL_DUMP --skip-comments --no-data mysqldump_test_db
|
||||
--exec $MYSQL_DUMP --skip-comments --no-data mysqldump_test_db t1 t2
|
||||
--exec $MYSQL_DUMP --skip-comments --skip-create --xml --no-data mysqldump_test_db
|
||||
--exec $MYSQL_DUMP --skip-comments --skip-create --xml --no-data mysqldump_test_db t1 t2
|
||||
DROP TABLE t1, t2;
|
||||
DROP DATABASE mysqldump_test_db;
|
||||
|
||||
|
Reference in New Issue
Block a user