mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Bug#21014: Segmentation fault of mysqldump on view
mysqldump did not select the correct database before trying to dump views from it. this resulted in an empty result set, which in turn startled mysql-dump into a core-dump. this only happened for views, not for tables, and was only visible with multiple databases that weren't by sheer luck in the order mysqldump required, anyway. this fixes by selecting the correct database before dumping views; it also catches the empty set-condition if it should occur for other reasons.
This commit is contained in:

parent
b05cd02746
commit
00ec3973f7
@ -2781,6 +2781,12 @@ static my_bool dump_all_views_in_db(char *database)
|
||||
uint numrows;
|
||||
char table_buff[NAME_LEN*2+3];
|
||||
|
||||
if (mysql_select_db(sock, database))
|
||||
{
|
||||
DB_error(sock, "when selecting the database");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (opt_xml)
|
||||
print_xml_tag1(md_result_file, "", "database name=", database, "\n");
|
||||
if (lock_tables)
|
||||
@ -3436,12 +3442,13 @@ static my_bool get_view_structure(char *table, char* db)
|
||||
mysql_free_result(table_res);
|
||||
|
||||
/* Get the result from "select ... information_schema" */
|
||||
if (!(table_res= mysql_store_result(sock)))
|
||||
if (!(table_res= mysql_store_result(sock)) ||
|
||||
!(row= mysql_fetch_row(table_res)))
|
||||
{
|
||||
safe_exit(EX_MYSQLERR);
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
row= mysql_fetch_row(table_res);
|
||||
|
||||
lengths= mysql_fetch_lengths(table_res);
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user