Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-18117

Crash with Explain extended when using limit rows examined

Details

    • Bug
    • Status: Closed (View Workflow)
    • Major
    • Resolution: Fixed
    • 10.4(EOL)
    • 10.4.5
    • Optimizer
    • None

    Description

      The dataset

      create table t1 (c1 char(2));
      create table t2 (c2 char(2));
      insert into t1 values ('bb'), ('cc'), ('aa'), ('dd');
      insert into t2 values ('bb'), ('cc'), ('dd'), ('ff');
       
      explain extended
      select * from t1, t2 where c1 = c2 LIMIT ROWS EXAMINED 2;
      

      Another question would be do we want to add ROWS EXAMINED to also show when we print the limit clause during explain exteded.

      Attachments

        Issue Links

          Activity

            The stacktrace is

            * thread #2, stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
              * frame #0: 0x0000000100bdfe73 mysqld`st_select_lex::print_limit(this=0x000062b0000a1380, thd=0x000062b00009a270, str=0x000070000eb35000, query_type=QT_EXPLAIN_EXTENDED) at sql_lex.cc:3060
                frame #1: 0x0000000100ef388a mysqld`st_select_lex::print(this=0x000062b0000a1380, thd=0x000062b00009a270, str=0x000070000eb35000, query_type=QT_EXPLAIN_EXTENDED) at sql_select.cc:26391
                frame #2: 0x0000000100bdf010 mysqld`st_select_lex_unit::print(this=0x000062b00009e160, str=0x000070000eb35000, query_type=QT_EXPLAIN_EXTENDED) at sql_lex.cc:2984
                frame #3: 0x0000000100ca7c34 mysqld`execute_sqlcom_select(thd=0x000062b00009a270, all_tables=0x000062b0000a1908) at sql_parse.cc:6533
                frame #4: 0x0000000100c835f5 mysqld`mysql_execute_command(thd=0x000062b00009a270) at sql_parse.cc:3776
                frame #5: 0x0000000100c7073b mysqld`mysql_parse(thd=0x000062b00009a270, rawbuf="explain extended select * from t1, t2 where c1 = c2 LIMIT ROWS EXAMINED 2", length=73, parser_state=0x000070000eb3cce0, is_com_multi=false, is_next_command=false) at sql_parse.cc:8104
                frame #6: 0x0000000100c5e7ff mysqld`dispatch_command(command=COM_QUERY, thd=0x000062b00009a270, packet="", packet_length=73, is_com_multi=false, is_next_command=false) at sql_parse.cc:1850
                frame #7: 0x0000000100c69793 mysqld`do_command(thd=0x000062b00009a270) at sql_parse.cc:1395
                frame #8: 0x00000001012c1ac7 mysqld`do_handle_one_connection(connect=0x000061100003bbb0) at sql_connect.cc:1402
                frame #9: 0x00000001012c106d mysqld`::handle_one_connection(arg=0x000061100003bbb0) at sql_connect.cc:1308
                frame #10: 0x00007fff66370339 libsystem_pthread.dylib`_pthread_body + 126
                frame #11: 0x00007fff663732a7 libsystem_pthread.dylib`_pthread_start + 70
                frame #12: 0x00007fff6636f445 libsystem_pthread.dylib`thread_start + 13
            

            varun Varun Gupta (Inactive) added a comment - The stacktrace is * thread #2, stop reason = EXC_BAD_ACCESS (code=1, address=0x0) * frame #0: 0x0000000100bdfe73 mysqld`st_select_lex::print_limit(this=0x000062b0000a1380, thd=0x000062b00009a270, str=0x000070000eb35000, query_type=QT_EXPLAIN_EXTENDED) at sql_lex.cc:3060 frame #1: 0x0000000100ef388a mysqld`st_select_lex::print(this=0x000062b0000a1380, thd=0x000062b00009a270, str=0x000070000eb35000, query_type=QT_EXPLAIN_EXTENDED) at sql_select.cc:26391 frame #2: 0x0000000100bdf010 mysqld`st_select_lex_unit::print(this=0x000062b00009e160, str=0x000070000eb35000, query_type=QT_EXPLAIN_EXTENDED) at sql_lex.cc:2984 frame #3: 0x0000000100ca7c34 mysqld`execute_sqlcom_select(thd=0x000062b00009a270, all_tables=0x000062b0000a1908) at sql_parse.cc:6533 frame #4: 0x0000000100c835f5 mysqld`mysql_execute_command(thd=0x000062b00009a270) at sql_parse.cc:3776 frame #5: 0x0000000100c7073b mysqld`mysql_parse(thd=0x000062b00009a270, rawbuf="explain extended select * from t1, t2 where c1 = c2 LIMIT ROWS EXAMINED 2", length=73, parser_state=0x000070000eb3cce0, is_com_multi=false, is_next_command=false) at sql_parse.cc:8104 frame #6: 0x0000000100c5e7ff mysqld`dispatch_command(command=COM_QUERY, thd=0x000062b00009a270, packet="", packet_length=73, is_com_multi=false, is_next_command=false) at sql_parse.cc:1850 frame #7: 0x0000000100c69793 mysqld`do_command(thd=0x000062b00009a270) at sql_parse.cc:1395 frame #8: 0x00000001012c1ac7 mysqld`do_handle_one_connection(connect=0x000061100003bbb0) at sql_connect.cc:1402 frame #9: 0x00000001012c106d mysqld`::handle_one_connection(arg=0x000061100003bbb0) at sql_connect.cc:1308 frame #10: 0x00007fff66370339 libsystem_pthread.dylib`_pthread_body + 126 frame #11: 0x00007fff663732a7 libsystem_pthread.dylib`_pthread_start + 70 frame #12: 0x00007fff6636f445 libsystem_pthread.dylib`thread_start + 13
            varun Varun Gupta (Inactive) added a comment - Patch http://lists.askmonty.org/pipermail/commits/2019-January/013237.html
            alice Alice Sherepa added a comment -

            Just one more example:

            explain extended select var_pop(1) from dual limit rows examined 3;
            

            #4  0x000055f15a6e4862 in st_select_lex::print_limit (this=0x7ff41003a990, thd=0x7ff410000a98, str=0x7ff42c125060, query_type=QT_EXPLAIN_EXTENDED) at /10.4/sql/sql_lex.cc:3061
            #5  0x000055f15a7a2d6a in st_select_lex::print (this=0x7ff41003a990, thd=0x7ff410000a98, str=0x7ff42c125060, query_type=QT_EXPLAIN_EXTENDED) at /10.4/sql/sql_select.cc:26965
            #6  0x000055f15a6e44f5 in st_select_lex_unit::print (this=0x7ff4100049a0, str=0x7ff42c125060, query_type=QT_EXPLAIN_EXTENDED) at /10.4/sql/sql_lex.cc:2985
            #7  0x000055f15a71fbfc in execute_sqlcom_select (thd=0x7ff410000a98, all_tables=0x7ff41016a240) at /10.4/sql/sql_parse.cc:6554
            #8  0x000055f15a714d51 in mysql_execute_command (thd=0x7ff410000a98) at /10.4/sql/sql_parse.cc:3825
            #9  0x000055f15a723e09 in mysql_parse (thd=0x7ff410000a98, rawbuf=0x7ff410151550 "EXPLAIN EXTENDED SELECT  VAR_POP((FORMAT(0, 3))) FROM t1 LIMIT ROWS EXAMINED 3", length=78, parser_state=0x7ff42c126060, is_com_multi=false, is_next_command=false) at /10.4/sql/sql_parse.cc:8141
            #10 0x000055f15a70f0a6 in dispatch_command (command=COM_QUERY, thd=0x7ff410000a98, packet=0x7ff410009ac9 "", packet_length=78, is_com_multi=false, is_next_command=false) at /10.4/sql/sql_parse.cc:1820
            #11 0x000055f15a70d8f6 in do_command (thd=0x7ff410000a98) at /10.4/sql/sql_parse.cc:1358
            #12 0x000055f15a888ab3 in do_handle_one_connection (connect=0x55f15e8f5568) at /10.4/sql/sql_connect.cc:1399
            #13 0x000055f15a8887f1 in handle_one_connection (arg=0x55f15e8f5568) at /10.4/sql/sql_connect.cc:1302
            #14 0x000055f15b2111a9 in pfs_spawn_thread (arg=0x55f15e8809c8) at /10.4/storage/perfschema/pfs.cc:1862
            #15 0x00007ff432c9f6ba in start_thread (arg=0x7ff42c127700) at pthread_create.c:333
            #16 0x00007ff431f3041d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
            

            alice Alice Sherepa added a comment - Just one more example: explain extended select var_pop(1) from dual limit rows examined 3; #4 0x000055f15a6e4862 in st_select_lex::print_limit (this=0x7ff41003a990, thd=0x7ff410000a98, str=0x7ff42c125060, query_type=QT_EXPLAIN_EXTENDED) at /10.4/sql/sql_lex.cc:3061 #5 0x000055f15a7a2d6a in st_select_lex::print (this=0x7ff41003a990, thd=0x7ff410000a98, str=0x7ff42c125060, query_type=QT_EXPLAIN_EXTENDED) at /10.4/sql/sql_select.cc:26965 #6 0x000055f15a6e44f5 in st_select_lex_unit::print (this=0x7ff4100049a0, str=0x7ff42c125060, query_type=QT_EXPLAIN_EXTENDED) at /10.4/sql/sql_lex.cc:2985 #7 0x000055f15a71fbfc in execute_sqlcom_select (thd=0x7ff410000a98, all_tables=0x7ff41016a240) at /10.4/sql/sql_parse.cc:6554 #8 0x000055f15a714d51 in mysql_execute_command (thd=0x7ff410000a98) at /10.4/sql/sql_parse.cc:3825 #9 0x000055f15a723e09 in mysql_parse (thd=0x7ff410000a98, rawbuf=0x7ff410151550 "EXPLAIN EXTENDED SELECT VAR_POP((FORMAT(0, 3))) FROM t1 LIMIT ROWS EXAMINED 3", length=78, parser_state=0x7ff42c126060, is_com_multi=false, is_next_command=false) at /10.4/sql/sql_parse.cc:8141 #10 0x000055f15a70f0a6 in dispatch_command (command=COM_QUERY, thd=0x7ff410000a98, packet=0x7ff410009ac9 "", packet_length=78, is_com_multi=false, is_next_command=false) at /10.4/sql/sql_parse.cc:1820 #11 0x000055f15a70d8f6 in do_command (thd=0x7ff410000a98) at /10.4/sql/sql_parse.cc:1358 #12 0x000055f15a888ab3 in do_handle_one_connection (connect=0x55f15e8f5568) at /10.4/sql/sql_connect.cc:1399 #13 0x000055f15a8887f1 in handle_one_connection (arg=0x55f15e8f5568) at /10.4/sql/sql_connect.cc:1302 #14 0x000055f15b2111a9 in pfs_spawn_thread (arg=0x55f15e8809c8) at /10.4/storage/perfschema/pfs.cc:1862 #15 0x00007ff432c9f6ba in start_thread (arg=0x7ff42c127700) at pthread_create.c:333 #16 0x00007ff431f3041d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
            igor Igor Babaev added a comment -

            Ok to push into 10.4

            igor Igor Babaev added a comment - Ok to push into 10.4

            People

              varun Varun Gupta (Inactive)
              varun Varun Gupta (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.