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

MDEV-31194: Server crash or assertion failure with join_cache_level=4

The problem, introduced in patch for MDEV-26301:

When check_join_cache_usage() decides not to use join buffer, it must
adjust the access method accordingly. For BNL-H joins this means switching
from pseudo-"ref access"(with index=MAX_KEY) to some other access method.

Failing to do this will cause assertions down the line when code that is
not aware of BNL-H will try to initialize index use for ref access with
index=MAX_KEY.

The fix is to follow the regular code path to disable the join buffer for
the join_tab ("goto no_join_cache") instead of just returning from
check_join_cache_usage().
This commit is contained in:
Sergei Petrunia
2023-05-05 11:16:23 +03:00
parent 7973ffde0f
commit 2594da7a33
3 changed files with 40 additions and 1 deletions

View File

@ -12873,7 +12873,7 @@ uint check_join_cache_usage(JOIN_TAB *tab,
join->return_tab= 0;
if (tab->no_forced_join_cache)
return 0;
goto no_join_cache;
/*
Don't use join cache if @@join_cache_level==0 or this table is the first