[MDEV-4612] SQ pushdown: Server crashes in make_join_statistics with materialization+semijoin, IN subqueries, constant table, impossible condition Created: 2013-06-04  Updated: 2013-06-14  Resolved: 2013-06-14

Status: Closed
Project: MariaDB Server
Component/s: None
Affects Version/s: None
Fix Version/s: 10.0.4

Type: Bug Priority: Major
Reporter: Elena Stepanova Assignee: Timour Katchaounov (Inactive)
Resolution: Fixed Votes: 0
Labels: None

Issue Links:
PartOf
is part of MDEV-83 Cost-based choice for the pushdown of... Stalled
Relates
relates to MDEV-83 Cost-based choice for the pushdown of... Stalled

 Description   

#3  <signal handler called>
#4  0x00000000006f1c52 in make_join_statistics (join=0x7fcda40257c8, tables_list=..., conds=0x7fcda402b2f8, keyuse_array=0x7fcda4025ad8) at 10.0-mdev83/sql/sql_select.cc:3758
#5  0x00000000006e483e in JOIN::optimize_inner (this=0x7fcda40257c8) at 10.0-mdev83/sql/sql_select.cc:1314
#6  0x00000000006e2ef2 in JOIN::optimize (this=0x7fcda40257c8) at 10.0-mdev83/sql/sql_select.cc:1008
#7  0x00000000006ef234 in mysql_select (thd=0x4b8acc0, rref_pointer_array=0x4b8dc78, tables=0x7fcda4018bf0, wild_num=1, fields=..., conds=0x7fcda40255b8, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fcda40257a8, unit=0x4b8d340, select_lex=0x4b8da18) at 10.0-mdev83/sql/sql_select.cc:3233
#8  0x00000000006e0328 in handle_select (thd=0x4b8acc0, lex=0x4b8d288, result=0x7fcda40257a8, setup_tables_done_option=0) at 10.0-mdev83/sql/sql_select.cc:376
#9  0x000000000069bd17 in execute_sqlcom_select (thd=0x4b8acc0, all_tables=0x7fcda4018bf0) at 10.0-mdev83/sql/sql_parse.cc:4804
#10 0x000000000068f1cd in mysql_execute_command (thd=0x4b8acc0) at 10.0-mdev83/sql/sql_parse.cc:2268
#11 0x000000000069fd97 in mysql_parse (thd=0x4b8acc0, rawbuf=0x7fcda4018878 "SELECT * FROM t1 AS outer_t1, t2 \nWHERE outer_t1.a = b AND outer_t1.a IN ( \nSELECT c FROM t1 AS inner_t1, t3 \nWHERE ( inner_t1.a = 7 ) AND inner_t1.a != outer_t1.a OR ( 2 ) IN ( \nSELECT a FROM t1 WHER"..., length=209, parser_state=0x7fcdadb68520) at 10.0-mdev83/sql/sql_parse.cc:5927
#12 0x000000000068a8d9 in dispatch_command (command=COM_QUERY, thd=0x4b8acc0, packet=0x4b8f2d1 "SELECT * FROM t1 AS outer_t1, t2 \nWHERE outer_t1.a = b AND outer_t1.a IN ( \nSELECT c FROM t1 AS inner_t1, t3 \nWHERE ( inner_t1.a = 7 ) AND inner_t1.a != outer_t1.a OR ( 2 ) IN ( \nSELECT a FROM t1 WHER"..., packet_length=209) at 10.0-mdev83/sql/sql_parse.cc:1091
#13 0x000000000068969b in do_command (thd=0x4b8acc0) at 10.0-mdev83/sql/sql_parse.cc:810
#14 0x000000000084695c in do_handle_one_connection (thd_arg=0x4b8acc0) at 10.0-mdev83/sql/sql_connect.cc:1266
#15 0x00000000008464a4 in handle_one_connection (arg=0x4b8acc0) at 10.0-mdev83/sql/sql_connect.cc:1181
#16 0x0000000000c26a2d in pfs_spawn_thread (arg=0x4b07fd0) at 10.0-mdev83/storage/perfschema/pfs.cc:1015
#17 0x00007fcdb9255e9a in start_thread (arg=0x7fcdadb69700) at pthread_create.c:308
#18 0x00007fcdb8549cbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112

bzr version-info

revision-id: timour@askmonty.org-20130528122232-kisslvdw5vhrna0q
revno: 3550
branch-nick: 10.0-mdev83

Not reproducible on maria-10.0-mwl253 revno 3545, 10.0 revno 3752, current 10.0-base revno 3640.

Minimal optimizer_switch: materialization=on,semijoin=on
Full optimizer_switch (default):

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=off,mrr_cost_based=off,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=off,table_elimination=on,extended_keys=off,exists_to_in=off,expensive_pred_static_pushdown=off

EXPLAIN also crashes.

Test case:

SET optimizer_switch = 'materialization=on,semijoin=on';
 
CREATE TABLE t1 (a INT) ENGINE=MyISAM;
INSERT INTO t1 VALUES (0),(8);
CREATE TABLE t2 (b INT) ENGINE=MyISAM;
INSERT INTO t2 VALUES (0),(8);
CREATE TABLE t3 (c INT) ENGINE=MyISAM;
INSERT INTO t3 VALUES (7);
 
SELECT * FROM t1 AS outer_t1, t2 
WHERE outer_t1.a = b AND outer_t1.a IN ( 
  SELECT c FROM t1 AS inner_t1, t3 
  WHERE ( inner_t1.a = 7 ) AND inner_t1.a != outer_t1.a OR ( 2 ) IN ( 
    SELECT a FROM t1 WHERE 0 
  ) 
);



 Comments   
Comment by Timour Katchaounov (Inactive) [ 2013-06-10 ]

A bit simpler query:

SELECT * FROM t1, t2
WHERE a = b AND a IN (
SELECT c FROM t1 AS inner_t1, t3
WHERE inner_t1.a = 7 OR 2 IN (SELECT a FROM t1 WHERE 0)
);

Comment by Timour Katchaounov (Inactive) [ 2013-06-14 ]

Pushed to 10.0-mdev83.

Generated at Thu Feb 08 06:57:44 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.