Commit bc96ce55 authored by Sergey Petrunya's avatar Sergey Petrunya

MDEV-5723: mysqldump -uroot unusable for multi-database operations, checks all databases

- MariaDB-5.5 part of the fix: since we can't easily fix query optimization for I_S tables, 
  run the affected-tablespaces query with semijoin=off. It happens to have a good query plan
  with that setting.
parent 7449c7d3
...@@ -3991,7 +3991,13 @@ static int dump_tablespaces(char* ts_where) ...@@ -3991,7 +3991,13 @@ static int dump_tablespaces(char* ts_where)
char *ubs; char *ubs;
char *endsemi; char *endsemi;
DBUG_ENTER("dump_tablespaces"); DBUG_ENTER("dump_tablespaces");
/*
Try to turn off semi-join optimization (if that fails, this is a
pre-optimizer_switch server, and the old query plan is ok for us.
*/
mysql_query(mysql, "set optimizer_switch='semijoin=off'");
init_dynamic_string_checked(&sqlbuf, init_dynamic_string_checked(&sqlbuf,
"SELECT LOGFILE_GROUP_NAME," "SELECT LOGFILE_GROUP_NAME,"
" FILE_NAME," " FILE_NAME,"
...@@ -4151,6 +4157,8 @@ static int dump_tablespaces(char* ts_where) ...@@ -4151,6 +4157,8 @@ static int dump_tablespaces(char* ts_where)
mysql_free_result(tableres); mysql_free_result(tableres);
dynstr_free(&sqlbuf); dynstr_free(&sqlbuf);
mysql_query(mysql, "set optimizer_switch=default");
DBUG_RETURN(0); DBUG_RETURN(0);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment