mirror of
https://github.com/MariaDB/server.git
synced 2026-04-19 06:45:32 +02:00
MDEV-29889 mariadb-dump --tab --header is slow
--header applied an ORDER BY to ensure that the header row was the first row in the output given UNION ALL doesn't in the standard enforce the order. We change that now only add the ORDER BY if --order-by-primary is used. An assumption that if UNION ALL change to a different behaviour the resulting mysqldump-header test may also change.
This commit is contained in:
parent
c194db34d9
commit
a5be6c91cb
1 changed files with 8 additions and 4 deletions
|
|
@ -4230,9 +4230,13 @@ static void dump_table(const char *table, const char *db, const uchar *hash_key,
|
|||
|
||||
if (opt_header)
|
||||
{
|
||||
dynstr_append_checked(&query_string, " FROM (SELECT 0 AS `_$is_data_row$_`,");
|
||||
dynstr_append_checked(&query_string, " FROM ( SELECT ");
|
||||
if (order_by)
|
||||
dynstr_append_checked(&query_string, " 0 AS `_$is_data_row$_`,");
|
||||
dynstr_append_checked(&query_string, select_field_names_for_header.str);
|
||||
dynstr_append_checked(&query_string, " UNION ALL SELECT 1 AS `_$is_data_row$_`,");
|
||||
dynstr_append_checked(&query_string, " UNION ALL SELECT ");
|
||||
if (order_by)
|
||||
dynstr_append_checked(&query_string, "1 AS `_$is_data_row$_`,");
|
||||
dynstr_append_checked(&query_string, select_field_names.str);
|
||||
}
|
||||
dynstr_append_checked(&query_string, " FROM ");
|
||||
|
|
@ -4247,12 +4251,12 @@ static void dump_table(const char *table, const char *db, const uchar *hash_key,
|
|||
dynstr_append_checked(&query_string, where);
|
||||
}
|
||||
if (opt_header)
|
||||
dynstr_append_checked(&query_string, ") s ORDER BY `_$is_data_row$_`");
|
||||
dynstr_append_checked(&query_string, ") s");
|
||||
|
||||
if (order_by)
|
||||
{
|
||||
if (opt_header)
|
||||
dynstr_append_checked(&query_string, ",");
|
||||
dynstr_append_checked(&query_string, " ORDER BY `_$is_data_row$_`,");
|
||||
else
|
||||
dynstr_append_checked(&query_string, " ORDER BY ");
|
||||
dynstr_append_checked(&query_string, order_by);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue