RQG: assertion "idx >= 1 && idx <= queue->elements" in queue_remove()
| Affects | Status | Importance | Assigned to | Milestone | |
|---|---|---|---|---|---|
| MariaDB |
Fix Released
|
High
|
Timour Katchaounov | ||
Bug Description
The query from the test below asserts as follows:
mysqld: queues.c:268: queue_remove: Assertion `idx >= 1 && idx <= queue->elements' failed.
backtrace:
# 2010-07-22T16:14:54 #8 0x00133de8 in __assert_fail () from /lib/libc.so.6
# 2010-07-22T16:14:54 #9 0x08735e48 in queue_remove (queue=0x0, idx=0) at queues.c:268
# 2010-07-22T16:14:54 #10 0x08239d26 in subselect_
# 2010-07-22T16:14:54 #11 0x08238f94 in subselect_
# 2010-07-22T16:14:54 #12 0x0822f9e3 in Item_subselect:
# 2010-07-22T16:14:54 #13 0x0822fbdc in Item_in_
# 2010-07-22T16:14:54 #14 0x08231444 in Item_in_
# 2010-07-22T16:14:54 #15 0x081cf35a in Item::val_
# 2010-07-22T16:14:54 #16 0x081fa9cf in Item_in_
# 2010-07-22T16:14:54 #17 0x081cf2fc in Item::val_
# 2010-07-22T16:14:54 #18 0x081cb196 in Item_cache_
# 2010-07-22T16:14:54 #19 0x081d2f4c in Item_cache_
# 2010-07-22T16:14:54 #20 0x081c8e09 in Item_cache_
# 2010-07-22T16:14:54 #21 0x081f6d89 in Item_func_
# 2010-07-22T16:14:54 #22 0x081b8ec6 in Item::val_bool (this=0x99b15040) at item.cc:187
# 2010-07-22T16:14:54 #23 0x0820274f in Item_cond_
# 2010-07-22T16:14:54 #24 0x0823a465 in Item_func_
# 2010-07-22T16:14:54 #25 0x081b8ec6 in Item::val_bool (this=0x99b261b8) at item.cc:187
# 2010-07-22T16:14:54 #26 0x08202669 in Item_cond_
# 2010-07-22T16:14:54 #27 0x0831dc3e in evaluate_
# 2010-07-22T16:14:54 #28 0x0831d9fd in sub_select (join=0xb6cdbb20, join_tab=
# 2010-07-22T16:14:54 #29 0x0831df08 in evaluate_
# 2010-07-22T16:14:54 #30 0x0831d8af in sub_select (join=0xb6cdbb20, join_tab=
# 2010-07-22T16:14:54 #31 0x0831ccae in do_select (join=0xb6cdbb20, fields=0x0, table=0xb6ce97b0, procedure=0x0) at sql_select.cc:12649
# 2010-07-22T16:14:54 #32 0x083014b1 in JOIN::exec (this=0xb6cdbb20) at sql_select.cc:1933
# 2010-07-22T16:14:54 #33 0x08303802 in mysql_select (thd=0xbbb6fc0, rref_pointer_
# 2010-07-22T16:14:54 order=0x99b24538, group=0x99b15778, having=0x0, proc_param=0x0, select_
# 2010-07-22T16:14:54 at sql_select.cc:2556
# 2010-07-22T16:14:54 #34 0x082fbecf in handle_select (thd=0xbbb6fc0, lex=0xbbb863c, result=0x99b245e0, setup_tables_
# 2010-07-22T16:14:54 #35 0x0829a5f0 in execute_
# 2010-07-22T16:14:54 #36 0x08290fd0 in mysql_execute_
# 2010-07-22T16:14:54 #37 0x0829c7d1 in mysql_parse (thd=0xbbb6fc0,
# 2010-07-22T16:14:54 inBuf=0xb6c23108 "SELECT table1 . `col_int_key` AS field1 , table2 . `col_time_key` AS field2 FROM ( C AS table1 LEFT JOIN C AS table2 ON (table2 . `col_varchar_nokey` = table1 . `col_varchar_key` ) ) WHERE ( ( table2 . `col_varchar_nokey` , table1 . `col_varchar_key` ) NOT IN ( SELECT DISTINCT SUBQUERY1_t1 . `col_varchar_key` AS SUBQUERY1_field1 , SUBQUERY1_t2 . `col_varchar_nokey` AS SUBQUERY1_field2 FROM ( CC AS SUBQUERY1_t1 LEFT JOIN ( CC AS SUBQUERY1_t2 INNER JOIN CC AS SUBQUERY1_t3 ON (SUBQUERY1_t3 . `col_varchar_nokey` = SUBQUERY1_t2 . `col_varchar_key` ) ) ON (SUBQUERY1_t3 . `pk` = SUBQUERY1_t2 . `pk` ) ) WHERE SUBQUERY1_t2 . `col_varchar_nokey` >= SUBQUERY1_t3 . `col_varchar_key` ) ) OR ( table1 . `col_int_nokey` <> table1 . `col_int_key` AND table1 . `col_int_nokey` < table1 . `col_int_key` ) GROUP BY field1, field2 ORDER BY table1 . `col_time_key`", length=864, found_semicolon
# 2010-07-22T16:14:54 at sql_parse.cc:6027
# 2010-07-22T16:14:54 #38 0x0828ea02 in dispatch_command (command=COM_QUERY, thd=0xbbb6fc0,
# 2010-07-22T16:14:54 packet=0xbbe3261 " SELECT table1 . `col_int_key` AS field1 , table2 . `col_time_key` AS field2 FROM ( C AS table1 LEFT JOIN C AS table2 ON (table2 . `col_varchar_nokey` = table1 . `col_varchar_key` ) ) WHERE ( ( table2 . `col_varchar_nokey` , table1 . `col_varchar_key` ) NOT IN ( SELECT DISTINCT SUBQUERY1_t1 . `col_varchar_key` AS SUBQUERY1_field1 , SUBQUERY1_t2 . `col_varchar_nokey` AS SUBQUERY1_field2 FROM ( CC AS SUBQUERY1_t1 LEFT JOIN ( CC AS SUBQUERY1_t2 INNER JOIN CC AS SUBQUERY1_t3 ON (SUBQUERY1_t3 . `col_varchar_nokey` = SUBQUERY1_t2 . `col_varchar_key` ) ) ON (SUBQUERY1_t3 . `pk` = SUBQUERY1_t2 . `pk` ) ) WHERE SUBQUERY1_t2 . `col_varchar_nokey` >= SUBQUERY1_t3 . `col_varchar_key` ) ) OR ( table1 . `col_int_nokey` <> table1 . `col_int_key` AND table1 . `col_int_nokey` < table1 . `col_int_key` ) GROUP BY field1, field2 ORDER BY table1 . `col_time_key` ", packet_length=867) at sql_parse.cc:1184
# 2010-07-22T16:14:54 #39 0x0828dea8 in do_command (thd=0xbbb6fc0) at sql_parse.cc:890
# 2010-07-22T16:14:54 #40 0x0828b008 in handle_
# 2010-07-22T16:14:54 #41 0x00a08919 in start_thread () from /lib/libpthread
# 2010-07-22T16:14:54 #42 0x001ede5e in clone () from /lib/libc.so.6
# 2010-07-22T16:14:54 #5 0x009b8424 in __kernel_vsyscall ()
| Changed in maria: | |
| milestone: | none → 5.3 |
| Changed in maria: | |
| assignee: | Timour Katchaounov (timour) → Michael Widenius (monty) |
| assignee: | Michael Widenius (monty) → Timour Katchaounov (timour) |
| Changed in maria: | |
| status: | New → Fix Committed |
| Changed in maria: | |
| status: | Fix Committed → Fix Released |

Test case:
CREATE TABLE `CC` ( varchar_ nokey` varchar(1) DEFAULT NULL, key`,`col_ int_key` )
`pk` int(11) NOT NULL AUTO_INCREMENT,
`col_int_key` int(11) DEFAULT NULL,
`col_time_key` time DEFAULT NULL,
`col_varchar_key` varchar(1) DEFAULT NULL,
`col_
PRIMARY KEY (`pk`),
KEY `col_varchar_key` (`col_varchar_
);
INSERT INTO `CC` VALUES (11,9,' 19:48:31' ,'r','r' ); 00:00:00' ,'a','a' ); '19:53: 05','m' ,'m'); '19:18: 56','y' ,'y'); 10:55:12' ,'j','j' ); 00:25:00' ,'d','d' ); 12:35:47' ,'z','z' ); '19:53: 03','e' ,'e'); 17:53:30' ,'h','h' ); 11:35:49' ,'b','b' ); varchar_ nokey` varchar(1) DEFAULT NULL, key`,`col_ int_key` ) 18:38:59' ,'d','d' ); nokey` , table1 .`col_varchar_key` ) NOT IN ( nokey`
INSERT INTO `CC` VALUES (12,9,'
INSERT INTO `CC` VALUES (13,186,
INSERT INTO `CC` VALUES (14,NULL,
INSERT INTO `CC` VALUES (15,2,'
INSERT INTO `CC` VALUES (16,3,'
INSERT INTO `CC` VALUES (17,0,'
INSERT INTO `CC` VALUES (18,133,
INSERT INTO `CC` VALUES (19,1,'
INSERT INTO `CC` VALUES (20,8,'
CREATE TABLE `C` (
`pk` int(11) NOT NULL AUTO_INCREMENT,
`col_int_key` int(11) DEFAULT NULL,
`col_time_key` time DEFAULT NULL,
`col_varchar_key` varchar(1) DEFAULT NULL,
`col_
PRIMARY KEY (`pk`),
KEY `col_varchar_key` (`col_varchar_
) ENGINE=MyISAM AUTO_INCREMENT=21 DEFAULT CHARSET=latin1;
INSERT INTO `C` VALUES (20,2,'
SELECT table2 .`col_time_key`
FROM C table1 LEFT JOIN C table2 ON table1 .`col_varchar_key`
WHERE ( table2 .`col_varchar_
SELECT SUBQUERY1_t1 .`col_varchar_key` , SUBQUERY1_t2 .`col_varchar_
FROM CC SUBQUERY1_t1 JOIN CC SUBQUERY1_t2 ON SUBQUERY1_t2 .`pk` ) OR table1 .`col_int_key` ;