[MDEV-19280] Server crashes on SELECT with derived tables Created: 2019-04-18  Updated: 2019-11-25  Resolved: 2019-11-25

Status: Closed
Project: MariaDB Server
Component/s: Optimizer
Affects Version/s: 10.2.14
Fix Version/s: N/A

Type: Bug Priority: Critical
Reporter: Valerii Kravchuk Assignee: Unassigned
Resolution: Incomplete Votes: 0
Labels: None


 Description   

Server (10.2.14 build 22254 from bb-10.2-compatibility tree to be specific) crashes while executing complex enough select over 3 InnoDB tables that uses nested derived tables). Stack trace is:

Thread pointer: 0x7fd7b00a9c18
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
stack_bottom = 0x7fd7c0f1ad30 thread_stack 0x40000
/usr/sbin/mysqld(my_print_stacktrace+0x2e)[0x562f9634cfde]
/usr/sbin/mysqld(handle_fatal_signal+0x355)[0x562f95de1cd5]
/lib64/libpthread.so.0(+0xf680)[0x7fdc894c6680]
/usr/sbin/mysqld(_ZN13st_join_table39get_splitting_cond_for_grouping_derivedEP3THD+0xc9)[0x562f95c53039]
/usr/sbin/mysqld(_ZN4JOIN19improve_chosen_planEP3THD+0x93)[0x562f95c71693]
/usr/sbin/mysqld(+0x5bd43c)[0x562f95c7343c]
/usr/sbin/mysqld(_ZN4JOIN14optimize_innerEv+0x875)[0x562f95c760d5]
/usr/sbin/mysqld(_ZN4JOIN8optimizeEv+0x36)[0x562f95c762f6]
/usr/sbin/mysqld(_Z22mysql_derived_optimizeP3THDP3LEXP10TABLE_LIST+0xe5)[0x562f95bf5175]
/usr/sbin/mysqld(_Z27mysql_handle_single_derivedP3LEXP10TABLE_LISTj+0xe4)[0x562f95bf4ac4]
/usr/sbin/mysqld(_ZN4JOIN14optimize_innerEv+0x53c)[0x562f95c75d9c]
/usr/sbin/mysqld(_ZN4JOIN8optimizeEv+0x36)[0x562f95c762f6]
/usr/sbin/mysqld(_Z12mysql_selectP3THDP10TABLE_LISTjR4ListI4ItemEPS4_jP8st_orderS9_S7_S9_yP13select_resultP18st_select_lex_unitP13st_select_lex+0x94)[0x562f95c778a4]
/usr/sbin/mysqld(_Z13handle_selectP3THDP3LEXP13select_resultm+0x15e)[0x562f95c7839e]
/usr/sbin/mysqld(+0x4885c1)[0x562f95b3e5c1]
/usr/sbin/mysqld(_Z21mysql_execute_commandP3THD+0x6910)[0x562f95c256b0]
/usr/sbin/mysqld(_Z11mysql_parseP3THDPcjP12Parser_statebb+0x392)[0x562f95c28602]
/usr/sbin/mysqld(_Z16dispatch_command19enum_server_commandP3THDPcjbb+0x29d5)[0x562f95c2c0f5]
/usr/sbin/mysqld(_Z10do_commandP3THD+0x149)[0x562f95c2ce39]
/usr/sbin/mysqld(_Z24do_handle_one_connectionP7CONNECT+0x1aa)[0x562f95cf3cda]
/usr/sbin/mysqld(handle_one_connection+0x3d)[0x562f95cf3dfd]
/lib64/libpthread.so.0(+0x7dd5)[0x7fdc894bedd5]
/lib64/libc.so.6(clone+0x6d)[0x7fdc87a92b3d]

The value of optimizer_switch is:

index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=on,mrr_cost_based=on,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=on,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_grouping_derived=on

The query is confidential and can not be shared, but it looks like this:

select ... from (SELECT DISTINCT A.c1, ... , B.* FROM t1 A LEFT JOIN (SELECT ... from t1 A, t2 B WHERE A.col1 = B.col1 AND A.col2 = B.col2 ) AB GROUP BY c, d, e) B ON A.c3 = B.c4 AND A.c5 = B.c5 AND A.c = B.c LEFT JOIN t3 C ON A.c6 = C.c6 AND A.c7 = C.c7 AND (A.c8 in ('0','1') OR ,.. ()) AND C.c9 IN ( .... list of string constants... ) DDD LIMIT 0, 50000;


Generated at Thu Feb 08 08:50:25 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.