MDEV-34539 Invalid "use" and "Schema" in slow query log file with multi-line schema

quote a database name in the slow log
This commit is contained in:
Sergei Golubchik 2024-07-06 13:36:35 +02:00
parent f12634f5a4
commit 8d813f080b
3 changed files with 54 additions and 3 deletions

View file

@ -181,6 +181,30 @@ SET @@global.slow_query_log= @old_slow_query_log;
SET SESSION slow_query_log=default;
drop table tab_MDEV_30820, tab2;
drop function get_zero;
#
# End of 10.4 tests
#
# MDEV-34539 Invalid "use" and "Schema" in slow query log file with multi-line schema
#
set global log_output='file';
set @@log_slow_filter= 'not_using_index';
set slow_query_log=1;
set timestamp=1234567890;
create database `a
b`;
use `a
b`;
select count(*) from mysql.global_priv where length(priv)>2;
count(*)
5
drop database `a
b`;
use test;
set global log_output= @old_log_output;
set slow_query_log=default;
set log_slow_filter=default;
set timestamp=default;
use `a
b`;
SET timestamp=1234567890;
select count(*) from mysql.global_priv where length(priv)>2
# End of 10.5 tests

View file

@ -186,6 +186,33 @@ drop function get_zero;
--enable_ps2_protocol
--enable_view_protocol
--echo #
--echo # End of 10.4 tests
--echo #
--echo # MDEV-34539 Invalid "use" and "Schema" in slow query log file with multi-line schema
--echo #
set global log_output='file';
set @@log_slow_filter= 'not_using_index';
set slow_query_log=1;
set timestamp=1234567890;
create database `a
b`;
use `a
b`;
--disable_ps_protocol
select count(*) from mysql.global_priv where length(priv)>2;
--enable_ps_protocol
drop database `a
b`;
use test;
set global log_output= @old_log_output;
set slow_query_log=default;
set log_slow_filter=default;
set timestamp=default;
let SEARCH_FILE=`select @@slow_query_log_file`;
let SEARCH_PATTERN=use.*2;
let SEARCH_OUTPUT=matches;
source include/search_pattern_in_file.inc;
--echo # End of 10.5 tests

View file

@ -3324,7 +3324,7 @@ bool MYSQL_QUERY_LOG::write(THD *thd, time_t current_time,
}
if (thd->db.str && strcmp(thd->db.str, db))
{ // Database changed
if (my_b_printf(&log_file,"use %s;\n",thd->db.str))
if (my_b_printf(&log_file,"use %`s;\n",thd->db.str))
goto err;
strmov(db,thd->db.str);
}