Re: Valgrind warning/crash in MRR with join_cache_level=8
Further valgrind warnings obtained during the simplification process:
==16855== Conditional jump or move depends on uninitialised value(s)
==16855== at 0x82F1C88: JOIN_CACHE::write_record_data(unsigned char*, bool*) (sql_join_cache.cc:1340)
==16855== by 0x82F23A1: JOIN_CACHE::put_record() (sql_join_cache.cc:1530)
==16855== by 0x833D851: sub_select_cache(JOIN*, st_join_table*, bool) (sql_select.cc:14914)
==16855== by 0x833E2AC: evaluate_join_record(JOIN*, st_join_table*, int) (sql_select.cc:15317)
==16855== by 0x833DD57: sub_select(JOIN*, st_join_table*, bool) (sql_select.cc:15160)
==16855== by 0x833D462: do_select(JOIN*, List<Item>, st_table, Procedure*) (sql_select.cc:14783)
==16855== by 0x83203A2: JOIN::exec() (sql_select.cc:2239)
==16855== by 0x8322529: mysql_select(THD*, Item**, TABLE_LIST, unsigned int, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*) (sql_select.cc:2900)
==16855== by 0x831A2FA: handle_select(THD*, st_lex*, select_result*, unsigned long) (sql_select.cc:283)
==16855== by 0x82B4A87: execute_sqlcom_select(THD*, TABLE_LIST*) (sql_parse.cc:5112)
==16855== by 0x82AB844: mysql_execute_command(THD*) (sql_parse.cc:2250)
==16855== by 0x8364CEB: Prepared_statement::execute(String*, bool) (sql_prepare.cc:3735)
==16855== by 0x8364206: Prepared_statement::execute_loop(String*, bool, unsigned char*, unsigned char*) (sql_prepare.cc:3416)
==16855== by 0x8362AD5: mysql_sql_stmt_execute(THD*) (sql_prepare.cc:2641)
==16855== by 0x82AB86D: mysql_execute_command(THD*) (sql_parse.cc:2259)
==16855== by 0x82B70B6: mysql_parse(THD*, char*, unsigned int, char const**) (sql_parse.cc:6112)
==16855== Conditional jump or move depends on uninitialised value(s)
==16855== at 0x82F27EC: JOIN_CACHE::read_record_field(st_cache_field*, bool) (sql_join_cache.cc:1773)
==16855== by 0x82F5CFE: JOIN_CACHE_BKA::get_next_key(unsigned char**) (sql_join_cache.cc:4280)
==16855== by 0x82F553D: bka_range_seq_next(void*, st_key_multi_range*) (sql_join_cache.cc:3924)
==16855== by 0x84BD0EB: Mrr_ordered_index_reader::refill_buffer(bool) (multi_range_read.cc:486)
==16855== by 0x84BD417: Mrr_ordered_rndpos_reader::refill_buffer(bool) (multi_range_read.cc:587)
==16855== by 0x84BDFFC: DsMrr_impl::dsmrr_init(handler*, st_range_seq_if*, void*, unsigned int, unsigned int, st_handler_buffer*) (multi_range_read.cc:920)
==16855== by 0x869B3BF: ha_innobase::multi_range_read_init(st_range_seq_if*, void*, unsigned int, unsigned int, st_handler_buffer*) (ha_innodb.cc:12256)
==16855== by 0x82F5325: JOIN_TAB_SCAN_MRR::open() (sql_join_cache.cc:3814)
==16855== by 0x82F3279: JOIN_CACHE::join_matching_records(bool) (sql_join_cache.cc:2208)
==16855== by 0x82F2E72: JOIN_CACHE::join_records(bool) (sql_join_cache.cc:2045)
==16855== by 0x833D787: sub_select_cache(JOIN*, st_join_table*, bool) (sql_select.cc:14901)
==16855== by 0x833D99F: sub_select(JOIN*, st_join_table*, bool) (sql_select.cc:15063)
==16855== by 0x833D48E: do_select(JOIN*, List<Item>, st_table, Procedure*) (sql_select.cc:14785)
==16855== by 0x83203A2: JOIN::exec() (sql_select.cc:2239)
==16855== by 0x8322529: mysql_select(THD*, Item**, TABLE_LIST, unsigned int, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*) (sql_select.cc:2900)
==16855== by 0x831A2FA: handle_select(THD*, st_lex*, select_result*, unsigned long) (sql_select.cc:283)
==16855==
==16855== Conditional jump or move depends on uninitialised value(s)
==16855== at 0x84275F3: do_copy_null(Copy_field*) (field_conv.cc:217)
==16855== by 0x834F575: store_key_field::copy_inner() (sql_select.h:1323)
==16855== by 0x8253D23: store_key::copy() (sql_select.h:1264)
==16855== by 0x834612D: cp_buffer_from_ref(THD*, st_table*, st_table_ref*) (sql_select.cc:18596)
==16855== by 0x82F5D4A: JOIN_CACHE_BKA::get_next_key(unsigned char**) (sql_join_cache.cc:4284)
==16855== by 0x82F553D: bka_range_seq_next(void*, st_key_multi_range*) (sql_join_cache.cc:3924)
==16855== by 0x84BD0EB: Mrr_ordered_index_reader::refill_buffer(bool) (multi_range_read.cc:486)
==16855== by 0x84BD417: Mrr_ordered_rndpos_reader::refill_buffer(bool) (multi_range_read.cc:587)
==16855== by 0x84BDFFC: DsMrr_impl::dsmrr_init(handler*, st_range_seq_if*, void*, unsigned int, unsigned int, st_handler_buffer*) (multi_range_read.cc:920)
==16855== by 0x869B3BF: ha_innobase::multi_range_read_init(st_range_seq_if*, void*, unsigned int, unsigned int, st_handler_buffer*) (ha_innodb.cc:12256)
==16855== by 0x82F5325: JOIN_TAB_SCAN_MRR::open() (sql_join_cache.cc:3814)
==16855== by 0x82F3279: JOIN_CACHE::join_matching_records(bool) (sql_join_cache.cc:2208)
==16855== by 0x82F2E72: JOIN_CACHE::join_records(bool) (sql_join_cache.cc:2045)
==16855== by 0x833D787: sub_select_cache(JOIN*, st_join_table*, bool) (sql_select.cc:14901)
==16855== by 0x833D99F: sub_select(JOIN*, st_join_table*, bool) (sql_select.cc:15063)
==16855== by 0x833D48E: do_select(JOIN*, List<Item>, st_table, Procedure*) (sql_select.cc:14785)
==16855==
==16855== Conditional jump or move depends on uninitialised value(s)
==16855== at 0x82F5A44: JOIN_CACHE_BKA::get_next_key(unsigned char**) (sql_join_cache.cc:4214)
==16855== by 0x82F553D: bka_range_seq_next(void*, st_key_multi_range*) (sql_join_cache.cc:3924)
==16855== by 0x84BD0EB: Mrr_ordered_index_reader::refill_buffer(bool) (multi_range_read.cc:486)
==16855== by 0x84BD417: Mrr_ordered_rndpos_reader::refill_buffer(bool) (multi_range_read.cc:587)
==16855== by 0x84BDFFC: DsMrr_impl::dsmrr_init(handler*, st_range_seq_if*, void*, unsigned int, unsigned int, st_handler_buffer*) (multi_range_read.cc:920)
==16855== by 0x869B3BF: ha_innobase::multi_range_read_init(st_range_seq_if*, void*, unsigned int, unsigned int, st_handler_buffer*) (ha_innodb.cc:12256)
==16855== by 0x82F5325: JOIN_TAB_SCAN_MRR::open() (sql_join_cache.cc:3814)
==16855== by 0x82F3279: JOIN_CACHE::join_matching_records(bool) (sql_join_cache.cc:2208)
==16855== by 0x82F2E72: JOIN_CACHE::join_records(bool) (sql_join_cache.cc:2045)
==16855== by 0x833D787: sub_select_cache(JOIN*, st_join_table*, bool) (sql_select.cc:14901)
==16855== by 0x833D99F: sub_select(JOIN*, st_join_table*, bool) (sql_select.cc:15063)
==16855== by 0x833D48E: do_select(JOIN*, List<Item>, st_table, Procedure*) (sql_select.cc:14785)
==16855== by 0x83203A2: JOIN::exec() (sql_select.cc:2239)
==16855== by 0x8322529: mysql_select(THD*, Item**, TABLE_LIST, unsigned int, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*) (sql_select.cc:2900)
==16855== by 0x831A2FA: handle_select(THD*, st_lex*, select_result*, unsigned long) (sql_select.cc:283)
==16855== by 0x82B4A87: execute_sqlcom_select(THD*, TABLE_LIST*) (sql_parse.cc:5112)
==16855==
==16855== Use of uninitialised value of size 4
==16855== at 0x82F6728: JOIN_CACHE::get_offset(unsigned int, unsigned char*) (sql_join_cache.h:96)
==16855== by 0x82F6803: JOIN_CACHE::get_rec_length(unsigned char*) (sql_join_cache.h:363)
==16855== by 0x82F5A6E: JOIN_CACHE_BKA::get_next_key(unsigned char**) (sql_join_cache.cc:4218)
==16855== by 0x82F553D: bka_range_seq_next(void*, st_key_multi_range*) (sql_join_cache.cc:3924)
==16855== by 0x84BD0EB: Mrr_ordered_index_reader::refill_buffer(bool) (multi_range_read.cc:486)
==16855== by 0x84BD417: Mrr_ordered_rndpos_reader::refill_buffer(bool) (multi_range_read.cc:587)
==16855== by 0x84BDFFC: DsMrr_impl::dsmrr_init(handler*, st_range_seq_if*, void*, unsigned int, unsigned int, st_handler_buffer*) (multi_range_read.cc:920)
==16855== by 0x869B3BF: ha_innobase::multi_range_read_init(st_range_seq_if*, void*, unsigned int, unsigned int, st_handler_buffer*) (ha_innodb.cc:12256)
==16855== by 0x82F5325: JOIN_TAB_SCAN_MRR::open() (sql_join_cache.cc:3814)
==16855== by 0x82F3279: JOIN_CACHE::join_matching_records(bool) (sql_join_cache.cc:2208)
==16855== by 0x82F2E72: JOIN_CACHE::join_records(bool) (sql_join_cache.cc:2045)
==16855== by 0x833D787: sub_select_cache(JOIN*, st_join_table*, bool) (sql_select.cc:14901)
==16855== by 0x833D99F: sub_select(JOIN*, st_join_table*, bool) (sql_select.cc:15063)
==16855== by 0x833D48E: do_select(JOIN*, List<Item>, st_table, Procedure*) (sql_select.cc:14785)
==16855== by 0x83203A2: JOIN::exec() (sql_select.cc:2239)
==16855== by 0x8322529: mysql_select(THD*, Item**, TABLE_LIST, unsigned int, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*) (sql_select.cc:2900)
==16855==
==16855== Conditional jump or move depends on uninitialised value(s)
==16855== at 0x4007801: memcpy (mc_replace_strmem.c:77)
==16855== by 0x82F2770: JOIN_CACHE::read_flag_fields() (sql_join_cache.cc:1741)
==16855== by 0x82F5AD5: JOIN_CACHE_BKA::get_next_key(unsigned char**) (sql_join_cache.cc:4229)
==16855== by 0x82F553D: bka_range_seq_next(void*, st_key_multi_range*) (sql_join_cache.cc:3924)
==16855== by 0x84BD0EB: Mrr_ordered_index_reader::refill_buffer(bool) (multi_range_read.cc:486)
==16855== by 0x84BD417: Mrr_ordered_rndpos_reader::refill_buffer(bool) (multi_range_read.cc:587)
==16855== by 0x84BDFFC: DsMrr_impl::dsmrr_init(handler*, st_range_seq_if*, void*, unsigned int, unsigned int, st_handler_buffer*) (multi_range_read.cc:920)
==16855== by 0x869B3BF: ha_innobase::multi_range_read_init(st_range_seq_if*, void*, unsigned int, unsigned int, st_handler_buffer*) (ha_innodb.cc:12256)
==16855== by 0x82F5325: JOIN_TAB_SCAN_MRR::open() (sql_join_cache.cc:3814)
==16855== by 0x82F3279: JOIN_CACHE::join_matching_records(bool) (sql_join_cache.cc:2208)
==16855== by 0x82F2E72: JOIN_CACHE::join_records(bool) (sql_join_cache.cc:2045)
==16855== by 0x833D787: sub_select_cache(JOIN*, st_join_table*, bool) (sql_select.cc:14901)
==16855== by 0x833D99F: sub_select(JOIN*, st_join_table*, bool) (sql_select.cc:15063)
==16855== by 0x833D48E: do_select(JOIN*, List<Item>, st_table, Procedure*) (sql_select.cc:14785)
==16855== by 0x83203A2: JOIN::exec() (sql_select.cc:2239)
==16855== by 0x8322529: mysql_select(THD*, Item**, TABLE_LIST, unsigned int, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*) (sql_select.cc:2900)
==16855==
==16855== Conditional jump or move depends on uninitialised value(s)
==16855== at 0x82F6951: JOIN_CACHE::blob_data_is_in_rec_buff(unsigned char*) (sql_join_cache.h:446)
==16855== by 0x82F5CDF: JOIN_CACHE_BKA::get_next_key(unsigned char**) (sql_join_cache.cc:4278)
==16855== by 0x82F553D: bka_range_seq_next(void*, st_key_multi_range*) (sql_join_cache.cc:3924)
==16855== by 0x84BD0EB: Mrr_ordered_index_reader::refill_buffer(bool) (multi_range_read.cc:486)
==16855== by 0x84BD417: Mrr_ordered_rndpos_reader::refill_buffer(bool) (multi_range_read.cc:587)
==16855== by 0x84BDFFC: DsMrr_impl::dsmrr_init(handler*, st_range_seq_if*, void*, unsigned int, unsigned int, st_handler_buffer*) (multi_range_read.cc:920)
==16855== by 0x869B3BF: ha_innobase::multi_range_read_init(st_range_seq_if*, void*, unsigned int, unsigned int, st_handler_buffer*) (ha_innodb.cc:12256)
==16855== by 0x82F5325: JOIN_TAB_SCAN_MRR::open() (sql_join_cache.cc:3814)
==16855== by 0x82F3279: JOIN_CACHE::join_matching_records(bool) (sql_join_cache.cc:2208)
==16855== by 0x82F2E72: JOIN_CACHE::join_records(bool) (sql_join_cache.cc:2045)
==16855== by 0x833D787: sub_select_cache(JOIN*, st_join_table*, bool) (sql_select.cc:14901)
==16855== by 0x833D99F: sub_select(JOIN*, st_join_table*, bool) (sql_select.cc:15063)
==16855== by 0x833D48E: do_select(JOIN*, List<Item>, st_table, Procedure*) (sql_select.cc:14785)
==16855== by 0x83203A2: JOIN::exec() (sql_select.cc:2239)
==16855== by 0x8322529: mysql_select(THD*, Item**, TABLE_LIST, unsigned int, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*) (sql_select.cc:2900)
==16855== by 0x831A2FA: handle_select(THD*, st_lex*, select_result*, unsigned long) (sql_select.cc:283)
==16855==
Re: Valgrind warning/crash in MRR with join_cache_level=8
Also repeatable without views.