|
Re: Crash in Field::is_null with join_cache_level=3 in maria-5.3-mwl128
Valgrind warnings:
==21368== Invalid read of size 1
==21368== at 0x4007637: memcpy (mc_replace_strmem.c:497)
==21368== by 0x82D8AF4: JOIN_CACHE::read_record_field(st_cache_field*, bool) (sql_join_cache.cc:1695)
==21368== by 0x82D8894: JOIN_CACHE::read_all_record_fields() (sql_join_cache.cc:1600)
==21368== by 0x82D86B8: JOIN_CACHE::get_record_by_pos(unsigned char*) (sql_join_cache.cc:1499)
==21368== by 0x82DAB88: JOIN_CACHE_BNLH::read_next_candidate_for_match(unsigned char*) (sql_join_cache.cc:3387)
==21368== by 0x82D9443: JOIN_CACHE::join_matching_records(bool) (sql_join_cache.cc:2117)
==21368== by 0x82D8FDF: JOIN_CACHE::join_records(bool) (sql_join_cache.cc:1926)
==21368== by 0x831FFDA: sub_select_cache(JOIN*, st_join_table*, bool) (sql_select.cc:13103)
==21368== by 0x82D9693: JOIN_CACHE::generate_full_extensions(unsigned char*) (sql_join_cache.cc:2224)
==21368== by 0x82D9455: JOIN_CACHE::join_matching_records(bool) (sql_join_cache.cc:2118)
==21368== by 0x82D8FDF: JOIN_CACHE::join_records(bool) (sql_join_cache.cc:1926)
==21368== by 0x831FFDA: sub_select_cache(JOIN*, st_join_table*, bool) (sql_select.cc:13103)
==21368== by 0x8320901: evaluate_join_record(JOIN*, st_join_table*, int) (sql_select.cc:13487)
==21368== by 0x83203F6: sub_select(JOIN*, st_join_table*, bool) (sql_select.cc:13335)
==21368== by 0x831F6C9: do_select(JOIN*, List<Item>, st_table, Procedure*) (sql_select.cc:12839)
==21368== by 0x8303ADE: JOIN::exec() (sql_select.cc:1990)
==21368== Address 0x186b3528 is 0 bytes after a block of size 192 alloc'd
==21368== at 0x4005BDC: malloc (vg_replace_malloc.c:195)
==21368== by 0x872E982: _mymalloc (safemalloc.c:137)
==21368== by 0x82D7599: JOIN_CACHE::alloc_buffer() (sql_join_cache.cc:827)
==21368== by 0x82D78FB: JOIN_CACHE::init() (sql_join_cache.cc:956)
==21368== by 0x82D9A6E: JOIN_CACHE_HASHED::init() (sql_join_cache.cc:2459)
==21368== by 0x82DAC64: JOIN_CACHE_BNLH::init() (sql_join_cache.cc:3417)
==21368== by 0x83136A2: check_join_cache_usage(st_join_table*, JOIN*, unsigned long long, unsigned int, bool*, bool*) (sql_select.cc:7672)
==21368== by 0x8313F9D: make_join_readinfo(JOIN*, unsigned long long, unsigned int) (sql_select.cc:7859)
==21368== by 0x83015E6: JOIN::optimize() (sql_select.cc:1282)
==21368== by 0x8305D6E: mysql_select(THD*, Item**, TABLE_LIST, unsigned int, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, un
signed long long, select_result*, st_select_lex_unit*, st_select_lex*) (sql_select.cc:2599)
==21368== by 0x82FE4AE: handle_select(THD*, st_lex*, select_result*, unsigned long) (sql_select.cc:277)
==21368== by 0x829B6D3: execute_sqlcom_select(THD*, TABLE_LIST*) (sql_parse.cc:5081)
==21368== by 0x82920B3: mysql_execute_command(THD*) (sql_parse.cc:2265)
==21368== by 0x829D8B4: mysql_parse(THD*, char const*, unsigned int, char const**) (sql_parse.cc:6027)
==21368== by 0x828FAE5: dispatch_command(enum_server_command, THD*, char*, unsigned int) (sql_parse.cc:1184)
==21368== by 0x828EF8B: do_command(THD*) (sql_parse.cc:890)
==21368== Address 0x186b352a is 2 bytes after a block of size 192 alloc'd
==21368== at 0x4005BDC: malloc (vg_replace_malloc.c:195)
==21368== by 0x872E982: _mymalloc (safemalloc.c:137)
==21368== by 0x82D7599: JOIN_CACHE::alloc_buffer() (sql_join_cache.cc:827)
==21368== by 0x82D78FB: JOIN_CACHE::init() (sql_join_cache.cc:956)
==21368== by 0x82D9A6E: JOIN_CACHE_HASHED::init() (sql_join_cache.cc:2459)
==21368== by 0x82DAC64: JOIN_CACHE_BNLH::init() (sql_join_cache.cc:3417)
==21368== by 0x83136A2: check_join_cache_usage(st_join_table*, JOIN*, unsigned long long, unsigned int, bool*, bool*) (sql_select.cc:7672)
==21368== by 0x8313F9D: make_join_readinfo(JOIN*, unsigned long long, unsigned int) (sql_select.cc:7859)
==21368== by 0x83015E6: JOIN::optimize() (sql_select.cc:1282)
==21368== by 0x8305D6E: mysql_select(THD*, Item**, TABLE_LIST, unsigned int, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, un
signed long long, select_result*, st_select_lex_unit*, st_select_lex*) (sql_select.cc:2599)
==21368== by 0x82FE4AE: handle_select(THD*, st_lex*, select_result*, unsigned long) (sql_select.cc:277)
==21368== by 0x829B6D3: execute_sqlcom_select(THD*, TABLE_LIST*) (sql_parse.cc:5081)
==21368== by 0x82920B3: mysql_execute_command(THD*) (sql_parse.cc:2265)
==21368== by 0x829D8B4: mysql_parse(THD*, char const*, unsigned int, char const**) (sql_parse.cc:6027)
==21368== by 0x828FAE5: dispatch_command(enum_server_command, THD*, char*, unsigned int) (sql_parse.cc:1184)
==21368== by 0x828EF8B: do_command(THD*) (sql_parse.cc:890)
==21368== Invalid read of size 1
==21368== at 0x81B9287: Field::is_null(long) (field.h:337)
==21368== by 0x82D89D1: JOIN_CACHE::read_record_field(st_cache_field*, bool) (sql_join_cache.cc:1668)
==21368== by 0x82D8894: JOIN_CACHE::read_all_record_fields() (sql_join_cache.cc:1600)
==21368== by 0x82D86B8: JOIN_CACHE::get_record_by_pos(unsigned char*) (sql_join_cache.cc:1499)
==21368== by 0x82DAB88: JOIN_CACHE_BNLH::read_next_candidate_for_match(unsigned char*) (sql_join_cache.cc:3387)
==21368== by 0x82D9443: JOIN_CACHE::join_matching_records(bool) (sql_join_cache.cc:2117)
==21368== by 0x82D8FDF: JOIN_CACHE::join_records(bool) (sql_join_cache.cc:1926)
==21368== by 0x831FFDA: sub_select_cache(JOIN*, st_join_table*, bool) (sql_select.cc:13103)
==21368== by 0x82D9693: JOIN_CACHE::generate_full_extensions(unsigned char*) (sql_join_cache.cc:2224)
==21368== by 0x82D9455: JOIN_CACHE::join_matching_records(bool) (sql_join_cache.cc:2118)
==21368== by 0x82D8FDF: JOIN_CACHE::join_records(bool) (sql_join_cache.cc:1926)
==21368== by 0x831FFDA: sub_select_cache(JOIN*, st_join_table*, bool) (sql_select.cc:13103)
==21368== by 0x8320901: evaluate_join_record(JOIN*, st_join_table*, int) (sql_select.cc:13487)
==21368== by 0x83203F6: sub_select(JOIN*, st_join_table*, bool) (sql_select.cc:13335)
==21368== by 0x831F6C9: do_select(JOIN*, List<Item>, st_table, Procedure*) (sql_select.cc:12839)
==21368== by 0x8303ADE: JOIN::exec() (sql_select.cc:1990)
|
|
Re: Crash in Field::is_null with join_cache_level=3 in maria-5.3-mwl128
Test case:
--source include/have_innodb.inc
SET SESSION join_cache_level=3;
SET SESSION join_buffer_size=100;
CREATE TABLE `CC` (
`col_int_nokey` int(11) NOT NULL,
`col_int_key` int(11) NOT NULL,
`col_date_key` date NOT NULL,
`col_time_key` time NOT NULL,
`col_varchar_key` varchar(1) NOT NULL,
`col_varchar_nokey` varchar(1) NOT NULL,
KEY `col_int_key` (`col_int_key`),
KEY `col_date_key` (`col_date_key`),
KEY `col_time_key` (`col_time_key`),
KEY `col_varchar_key` (`col_varchar_key`,`col_int_key`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `CC` VALUES (3,8,'2008-12-04','00:00:00','v','v');
INSERT INTO `CC` VALUES (3,8,'2009-03-28','00:00:00','f','f');
INSERT INTO `CC` VALUES (3,5,'1900-01-01','00:55:47','v','v');
INSERT INTO `CC` VALUES (2,8,'2009-10-02','00:00:00','s','s');
INSERT INTO `CC` VALUES (1,8,'1900-01-01','20:51:59','a','a');
INSERT INTO `CC` VALUES (0,6,'2008-06-04','09:47:27','p','p');
INSERT INTO `CC` VALUES (8,7,'2009-01-13','21:58:29','z','z');
INSERT INTO `CC` VALUES (5,2,'1900-01-01','22:45:53','a','a');
INSERT INTO `CC` VALUES (9,5,'2008-01-28','14:06:48','h','h');
INSERT INTO `CC` VALUES (5,7,'2004-09-18','22:17:16','h','h');
INSERT INTO `CC` VALUES (4,2,'2006-10-14','14:59:37','v','v');
INSERT INTO `CC` VALUES (2,9,'1900-01-01','23:37:40','v','v');
INSERT INTO `CC` VALUES (33,142,'2000-11-28','14:14:01','b','b');
INSERT INTO `CC` VALUES (5,3,'2008-04-04','02:54:19','y','y');
INSERT INTO `CC` VALUES (1,0,'2002-07-13','06:34:26','v','v');
INSERT INTO `CC` VALUES (9,3,'2003-01-03','18:07:38','m','m');
INSERT INTO `CC` VALUES (1,5,'2006-04-02','13:55:23','z','z');
INSERT INTO `CC` VALUES (3,9,'2006-10-19','20:32:28','n','n');
INSERT INTO `CC` VALUES (8,1,'2005-06-08','11:57:44','d','d');
INSERT INTO `CC` VALUES (231,107,'2006-12-26','03:10:35','a','a');
SELECT table1 .`col_int_nokey` , table2 .`col_varchar_key` , table1 .`col_varchar_key` , table2 .`col_time_key` , table2 .`col_date_key` , table2 .`col_int_key`
FROM CC table1 STRAIGHT_JOIN ( CC table2 JOIN CC table3 ON table3 .`col_varchar_nokey` ) ON table2 .`col_int_nokey` AND table3 .`col_varchar_key` = table2 .`col_varchar_nokey`
ORDER BY table1 .`col_date_key`;
|