1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

MDEV-20699 followup.

Normally we disable caching of routines in "SHOW CREATE".
Introduce an exception, if debug_dbug="+d,cache_sp_in_show_create".
lock_sync.test needs a way to populate the cache without side effects,
or else it runs into debug_sync timeouts.

So, this possibility to cache will be remain only for very special tests.
This commit is contained in:
Vladislav Vaintroub
2021-09-29 20:40:00 +02:00
parent f3bc4f49f7
commit 333d6c30f8
3 changed files with 14 additions and 0 deletions

View File

@ -205,6 +205,8 @@ end|
# called below. # called below.
# #
connection con1; connection con1;
set @save_dbug=@@debug_dbug;
set debug_dbug="+d,cache_sp_in_show_create";
# Cache all functions used in the tests below so statements # Cache all functions used in the tests below so statements
# calling them won't need to open and lock mysql.proc table # calling them won't need to open and lock mysql.proc table
# and we can assume that each statement locks its tables # and we can assume that each statement locks its tables
@ -229,6 +231,7 @@ show create function f14;
show create function f15; show create function f15;
show create function f16; show create function f16;
show create function f17; show create function f17;
set debug_dbug=@save_dbug;
connection default; connection default;
# #
# 1. Statements that read tables and do not use subqueries. # 1. Statements that read tables and do not use subqueries.

View File

@ -232,6 +232,8 @@ let $con_aux2= con2;
let $table= t1; let $table= t1;
connection con1; connection con1;
set @save_dbug=@@debug_dbug;
set debug_dbug="+d,cache_sp_in_show_create";
--echo # Cache all functions used in the tests below so statements --echo # Cache all functions used in the tests below so statements
--echo # calling them won't need to open and lock mysql.proc table --echo # calling them won't need to open and lock mysql.proc table
--echo # and we can assume that each statement locks its tables --echo # and we can assume that each statement locks its tables
@ -257,6 +259,7 @@ show create function f14;
show create function f15; show create function f15;
show create function f16; show create function f16;
show create function f17; show create function f17;
set debug_dbug=@save_dbug;
--enable_result_log --enable_result_log
connection default; connection default;

View File

@ -1903,6 +1903,14 @@ Sp_handler::sp_show_create_routine(THD *thd,
of the binary log or the query cache, which currently it does not. of the binary log or the query cache, which currently it does not.
*/ */
sp_head *sp= 0; sp_head *sp= 0;
DBUG_EXECUTE_IF("cache_sp_in_show_create",
/* Some tests need just need a way to cache SP without other side-effects.*/
sp_cache_routine(thd, name, false, &sp);
sp->show_create_routine(thd, this);
DBUG_RETURN(false);
);
bool free_sp= db_find_routine(thd, name, &sp) == SP_OK; bool free_sp= db_find_routine(thd, name, &sp) == SP_OK;
bool ret= !sp || sp->show_create_routine(thd, this); bool ret= !sp || sp->show_create_routine(thd, this);
if (ret) if (ret)