Details
-
Bug
-
Status: Open (View Workflow)
-
Major
-
Resolution: Unresolved
-
11.4, 11.0.3, 12.0(EOL), 11.8
-
None
Description
--source include/have_innodb.inc
|
|
|
SET @innodb_lookup_cost.save= @@InnoDB.OPTIMIZER_KEY_LOOKUP_COST; |
|
|
CREATE TABLE t (a INT, b INT, KEY(b)) ENGINE=InnoDB; |
SET OPTIMIZER_SCAN_SETUP_COST= 10000; |
SET GLOBAL InnoDB.OPTIMIZER_KEY_LOOKUP_COST= 1000; |
SET optimizer_switch= 'mrr=on'; |
|
|
SELECT * FROM t WHERE b IN (1,2,3,4,5) OR b = 6; |
|
|
SET GLOBAL InnoDB.OPTIMIZER_KEY_LOOKUP_COST= @innodb_lookup_cost.save; |
DROP TABLE t; |
|
11.4 3109d994ebf867d6f3efc65a0e4c41195b8239f9 |
mariadbd: /data/bld/11.4-asan-ubsan/sql/sql_select.cc:9605: void best_access_path(JOIN*, JOIN_TAB*, table_map, const POSITION*, uint, bool, double, POSITION*, POSITION*): Assertion `compare_cost(file->cost_no_capping(&cost) + range->cost.comp_cost + range->cost.setup_cost, s->quick->read_time)' failed.
|
250727 21:22:27 [ERROR] /share8t/bld/11.4-asan-ubsan/sql/mariadbd got signal 6 ;
|
|
|
#10 0x00007f7945653eb2 in __GI___assert_fail (assertion=0x55cfe39b2f00 "compare_cost(file->cost_no_capping(&cost) + range->cost.comp_cost + range->cost.setup_cost, s->quick->read_time)", file=0x55cfe39a25c0 "/data/bld/11.4-asan-ubsan/sql/sql_select.cc", line=9605, function=0x55cfe39b26e0 "void best_access_path(JOIN*, JOIN_TAB*, table_map, const POSITION*, uint, bool, double, POSITION*, POSITION*)") at ./assert/assert.c:101
|
#11 0x000055cfe02485bb in best_access_path (join=0x62d0000de898, s=s@entry=0x62d0000df810, remaining_tables=remaining_tables@entry=1, join_positions=<optimized out>, idx=idx@entry=0, disable_jbuf=<optimized out>, record_count=<optimized out>, record_count@entry=1, pos=<optimized out>, loose_scan_pos=<optimized out>) at /data/bld/11.4-asan-ubsan/sql/sql_select.cc:9605
|
#12 0x000055cfe024cdd5 in get_costs_for_tables (join=join@entry=0x62d0000de898, remaining_tables=remaining_tables@entry=1, idx=idx@entry=0, record_count=record_count@entry=1, trace_one_table=trace_one_table@entry=0x7f79343ff2e0, pos=pos@entry=0x62d0000dfe78, store_position=store_position@entry=0x7f79343ff1e0, allowed_tables=<optimized out>, stop_on_eq_ref=<optimized out>) at /data/bld/11.4-asan-ubsan/sql/sql_select.cc:11451
|
#13 0x000055cfe02507ad in best_extension_by_limited_search (join=join@entry=0x62d0000de898, remaining_tables=remaining_tables@entry=1, idx=idx@entry=0, record_count=record_count@entry=1, read_time=read_time@entry=0, search_depth=search_depth@entry=62, use_cond_selectivity=use_cond_selectivity@entry=4, processed_eq_ref_tables=processed_eq_ref_tables@entry=0x7f79343ff4c0) at /data/bld/11.4-asan-ubsan/sql/sql_select.cc:12023
|
#14 0x000055cfe0255348 in greedy_search (join=join@entry=0x62d0000de898, remaining_tables=remaining_tables@entry=1, search_depth=search_depth@entry=62, use_cond_selectivity=use_cond_selectivity@entry=4) at /data/bld/11.4-asan-ubsan/sql/sql_select.cc:10677
|
#15 0x000055cfe025d617 in choose_plan (join=join@entry=0x62d0000de898, join_tables=<optimized out>, emb_sjm_nest=emb_sjm_nest@entry=0x0) at /data/bld/11.4-asan-ubsan/sql/sql_select.cc:10186
|
#16 0x000055cfe02a144b in make_join_statistics (join=join@entry=0x62d0000de898, tables_list=..., keyuse_array=keyuse_array@entry=0x62d0000debf8) at /data/bld/11.4-asan-ubsan/sql/sql_select.cc:6331
|
#17 0x000055cfe02aae1a in JOIN::optimize_inner (this=this@entry=0x62d0000de898) at /data/bld/11.4-asan-ubsan/sql/sql_select.cc:2708
|
#18 0x000055cfe02abf01 in JOIN::optimize (this=this@entry=0x62d0000de898) at /data/bld/11.4-asan-ubsan/sql/sql_select.cc:2003
|
#19 0x000055cfe02ad11f in mysql_select (thd=thd@entry=0x62c0001e0218, tables=<optimized out>, fields=..., conds=conds@entry=0x62d0000ddd90, og_num=og_num@entry=0, order=order@entry=0x0, group=<optimized out>, having=<optimized out>, proc_param=<optimized out>, select_options=<optimized out>, result=<optimized out>, unit=<optimized out>, select_lex=<optimized out>) at /data/bld/11.4-asan-ubsan/sql/sql_select.cc:5349
|
#20 0x000055cfe02ae563 in handle_select (thd=thd@entry=0x62c0001e0218, lex=lex@entry=0x62c0001e45e8, result=result@entry=0x62d0000de868, setup_tables_done_option=setup_tables_done_option@entry=0) at /data/bld/11.4-asan-ubsan/sql/sql_select.cc:642
|
#21 0x000055cfdff3634b in execute_sqlcom_select (thd=thd@entry=0x62c0001e0218, all_tables=<optimized out>) at /data/bld/11.4-asan-ubsan/sql/sql_parse.cc:6183
|
#22 0x000055cfdff7a359 in mysql_execute_command (thd=thd@entry=0x62c0001e0218, is_called_from_prepared_stmt=is_called_from_prepared_stmt@entry=false) at /data/bld/11.4-asan-ubsan/sql/sql_parse.cc:3975
|
#23 0x000055cfdff98727 in mysql_parse (thd=thd@entry=0x62c0001e0218, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x7f7934401ac0) at /data/bld/11.4-asan-ubsan/sql/sql_parse.cc:7898
|
#24 0x000055cfdffa1a07 in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x62c0001e0218, packet=packet@entry=0x62900028f219 "SELECT * FROM t WHERE b IN (1,2,3,4,5) OR b = 6", packet_length=packet_length@entry=47, blocking=blocking@entry=true) at /data/bld/11.4-asan-ubsan/sql/sql_parse.cc:1904
|
#25 0x000055cfdffae65d in do_command (thd=thd@entry=0x62c0001e0218, blocking=blocking@entry=true) at /data/bld/11.4-asan-ubsan/sql/sql_parse.cc:1417
|
#26 0x000055cfe07cd63a in do_handle_one_connection (connect=<optimized out>, connect@entry=0x608000008fb8, put_in_cache=put_in_cache@entry=true) at /data/bld/11.4-asan-ubsan/sql/sql_connect.cc:1408
|
#27 0x000055cfe07ce797 in handle_one_connection (arg=0x608000008fb8) at /data/bld/11.4-asan-ubsan/sql/sql_connect.cc:1320
|
#28 0x000055cfe21e73b3 in pfs_spawn_thread (arg=0x617000007e98) at /data/bld/11.4-asan-ubsan/storage/perfschema/pfs.cc:2201
|
#29 0x00007f79456a81c4 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
|
#30 0x00007f794572885c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
|
ANALYZE/EXPLAIN also fails on the assertion.
No obvious immediate problem on a non-debug build. The plan on the non-debug build:
|
11.4 non-debug 3109d994ebf867d6f3efc65a0e4c41195b8239f9 |
ANALYZE FORMAT=JSON SELECT * FROM t WHERE b IN (1,2,3,4,5) OR b = 6; |
ANALYZE
|
{
|
"query_optimization": { |
"r_total_time_ms": 0.152959717 |
},
|
"query_block": { |
"select_id": 1, |
"cost": 2.002584125, |
"r_loops": 1, |
"r_total_time_ms": 0.094202868, |
"nested_loop": [ |
{
|
"table": { |
"table_name": "t", |
"access_type": "range", |
"possible_keys": ["b"], |
"key": "b", |
"key_length": "5", |
"used_key_parts": ["b"], |
"loops": 1, |
"r_loops": 1, |
"rows": 1, |
"r_rows": 0, |
"cost": 2.002584125, |
"r_engine_stats": { |
"pages_accessed": 6 |
},
|
"filtered": 100, |
"r_filtered": 100, |
"index_condition": "t.b in (1,2,3,4,5) or t.b = 6", |
"mrr_type": "Rowid-ordered scan" |
}
|
}
|
]
|
}
|
}
|