List:General Discussion« Previous MessageNext Message »
From:Vinay Date:April 25 2003 5:26am
Subject:Re: crash in mysql 4.1.0 EXPLAIN w/ subquery
View as plain text  
I alway thought that MySQL does not support nested select staments, then how come you are
running queries like these
"EXPLAIN SELECT COUNT(*) FROM table1 WHERE name1 = ( SELECT name2 FROM table2 WHERE id=1
);"


Vinay



Dan Nelson wrote:

> In the last episode (Apr 23), dnelson@stripped said:
> > >Description:
> >
> > An EXPLAIN SELECT .. WHERE field = ( SELECT ... ) query crashes, where
> > the query itself runs fine.
>
> And here's the associated stack trace.
>
> (gdb) bt
> #0  0x0810b510 in ~SQL_SELECT (this=0xd7c38a8) at opt_range.cc:377
> #1  0x080d8295 in JOIN::cleanup(THD*) (this=0xd7d3690, thd=0xd7ae000)
>     at sql_select.cc:1309
> #2  0x0814eaef in st_select_lex_unit::cleanup() (this=0xd7d32f8)
>     at sql_union.cc:379
> #3  0x080d8268 in JOIN::cleanup(THD*) (this=0xd7d4068, thd=0xd7ae000)
>     at sql_select.cc:1306
> #4  0x080d838b in mysql_select(THD*, Item***, st_table_list*, unsigned,
> List<Item>&, Item*, unsigned, st_order*, st_order*, Item*, st_order*, unsigned
> long, select_result*, st_select_lex_unit*, st_select_lex*, bool) (thd=0xd7ae000,
>     rref_pointer_array=0xd7c38a8, tables=0xd7c38a8, wild_num=226244776,
>     fields=@0xd7c38a8, conds=0xd7c38a8, og_num=226244776, order=0xd7c38a8,
>     group=0xd7c38a8, having=0xd7c38a8, proc_param=0xd7c38a8,
>     select_options=84415492, result=0x0, unit=0xd7ae144, select_lex=0xd7ae22c,
>     tables_and_fields_initied=false) at sql_select.cc:1374
> #5  0x080e6c63 in mysql_explain_select(THD*, st_select_lex*, char const*,
> select_result*) (thd=0xd7ae000, select_lex=0xd7ae27c,
>     type=0xd7c38a8 '╤' <repeats 200 times>...,
> result=0xd7c38a8)
>     at sql_select.cc:8128
> #6  0x080e6b1f in mysql_explain_union(THD*, st_select_lex_unit*, select_result*)
> (thd=0xd7ae000, unit=0xd7c38a8, result=0xd7d3d98) at sql_select.cc:8096
> #7  0x080bf86c in mysql_execute_command(THD*) (thd=0xd7ae000)
>     at sql_parse.cc:1692
> #8  0x080c3d8e in mysql_parse(THD*, char*, unsigned) (thd=0xd7ae22c,
>     inBuf=0xd7d3010 "EXPLAIN SELECT COUNT(*) FROM table1 WHERE name1 = ( SELECT name2
> FROM table2 WHERE id=1)", length=226156544) at sql_parse.cc:3375
> #9  0x080be4e3 in dispatch_command(enum_server_command, THD*, char*, unsigned)
>     (command=226157100, thd=0xd7d3010, packet=0xd7af001 "",
>     packet_length=226156544) at sql_parse.cc:1249
> #10 0x080be121 in do_command(THD*) (thd=0xd7ae000) at sql_parse.cc:1049
> #11 0x080bda29 in handle_one_connection (arg=0xd7ae000) at sql_parse.cc:838
> #12 0x2846b3ee in _thread_start ()
>     at /usr/src/lib/libc_r/uthread/uthread_create.c:275
> (gdb)
>
>
> > >How-To-Repeat:
> >
> > Run the following commands.  The EXPLAIN will fail.  Removing the INDEX
> > on table1 makes the crash disappear also.  I can generate a stack trace
> > if necessary.
> >
> > DROP TABLE IF EXISTS table1;
> > CREATE TABLE table1 (
> >   name1 char(20),
> >   INDEX(name1)
> > ) TYPE=MyISAM;
> >
> > DROP TABLE IF EXISTS table2;
> > CREATE TABLE table2 (
> >   name2 char(20),
> >   id int
> > ) TYPE=MyISAM;
> >
> > INSERT INTO table1 VALUES ('record 1'), ('record 2');
> > INSERT INTO table2 VALUES ('record 1', 1);
> >
> > EXPLAIN SELECT COUNT(*) FROM table1 WHERE name1 = ( SELECT name2 FROM table2
> WHERE id=1 );
>
> --
>         Dan Nelson
>         dnelson@stripped
>
> --
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:    http://lists.mysql.com/mysql?unsub=1

Thread
crash in mysql 4.1.0 EXPLAIN w/ subquerydnelson23 Apr
  • Re: crash in mysql 4.1.0 EXPLAIN w/ subqueryDan Nelson24 Apr
  • Re: crash in mysql 4.1.0 EXPLAIN w/ subqueryVinay25 Apr
    • Re: crash in mysql 4.1.0 EXPLAIN w/ subqueryDan Nelson25 Apr