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

Assertion in store_natural_using_join_columns() fails on second call of procedure with erroneous query

    XMLWordPrintable

Details

    Description

      The following script:

      CREATE TABLE t1 (b INT);
      CREATE TABLE t2 (a INT);
      CREATE TABLE t3 (a INT);
      CREATE TABLE t4 (a INT);
      CREATE PROCEDURE p1() SELECT * FROM t1 JOIN (t2 LEFT JOIN t3 USING (a) LEFT JOIN t4 USING (a)
      ) USING (a);
      CALL p1;
      CALL p1;
      

      Leads to:

      CALL p1;
      mysqltest: At line 7: query 'CALL p1' failed: ER_BAD_FIELD_ERROR (1054): Unknown column 'a' in 'FROM'
      CALL p1;
      mysqltest: At line 8: query 'CALL p1' failed: <Unknown> (2013): Lost connection to server during query
      

      First CALL fails, second triggers assertion fail. Here is the backtrace:

      Thread 1 (Thread 0x7af87e0cd6c0 (LWP 268416)):
      #0  __pthread_kill_implementation (threadid=<optimized out>, signo=6, no_tid=0) at ./nptl/pthread_kill.c:44
      #1  __pthread_kill_internal (threadid=<optimized out>, signo=6) at ./nptl/pthread_kill.c:89
      #2  __GI___pthread_kill (threadid=<optimized out>, signo=6) at ./nptl/pthread_kill.c:100
      #3  0x00005ae815c0ff71 in my_write_core (sig=6) at /src/mariadb/mysys/stacktrace.c:424
      #4  0x00005ae81521ed4e in handle_fatal_signal (sig=6) at /src/mariadb/sql/signal_handler.cc:298
      #5  <signal handler called>
      #6  __pthread_kill_implementation (threadid=<optimized out>, signo=6, no_tid=0) at ./nptl/pthread_kill.c:44
      #7  __pthread_kill_internal (threadid=<optimized out>, signo=6) at ./nptl/pthread_kill.c:89
      #8  __GI___pthread_kill (threadid=<optimized out>, signo=signo@entry=6) at ./nptl/pthread_kill.c:100
      #9  0x00007af8892456de in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
      #10 0x00007af8892288cd in __GI_abort () at ./stdlib/abort.c:73
      #11 0x00007af889228830 in __assert_fail_base (fmt=<optimized out>, assertion=<optimized out>, file=<optimized out>, line=<optimized out>, function=<optimized out>) at ./assert/assert.c:118
      #12 0x00005ae814ce6249 in store_natural_using_join_columns (thd=0x7af86c000dc8, natural_using_join=0x7af86c040860, table_ref_1=0x7af86c03f9f0, table_ref_2=0x7af86c040128, using_fields=0x7af86c043f30, found_using_fields=1) at /src/mariadb/sql/sql_base.cc:7605
      #13 0x00005ae814ce6cb7 in store_top_level_join_columns (thd=0x7af86c000dc8, table_ref=0x7af86c040860, left_neighbor=0x7af86c043748, right_neighbor=0x7af86c041018) at /src/mariadb/sql/sql_base.cc:7824
      #14 0x00005ae814ce6a4c in store_top_level_join_columns (thd=0x7af86c000dc8, table_ref=0x7af86c0ff0b0, left_neighbor=0x7af86c043748, right_neighbor=0x0) at /src/mariadb/sql/sql_base.cc:7781
      #15 0x00005ae814ce6a4c in store_top_level_join_columns (thd=0x7af86c000dc8, table_ref=0x7af86c0ff868, left_neighbor=0x0, right_neighbor=0x0) at /src/mariadb/sql/sql_base.cc:7781
      #16 0x00005ae814ce6fb1 in setup_natural_join_row_types (thd=0x7af86c000dc8, from_clause=0x7af86c0432b8, context=0x7af86c043148) at /src/mariadb/sql/sql_base.cc:7935
      #17 0x00005ae814ce8ba8 in setup_tables (thd=0x7af86c000dc8, context=0x7af86c043148, from_clause=0x7af86c0432b8, tables=0x7af86c043748, leaves=..., select_insert=false, full_table_list=false) at /src/mariadb/sql/sql_base.cc:8407
      #18 0x00005ae814ce8ca6 in setup_tables_and_check_access (thd=0x7af86c000dc8, context=0x7af86c043148, from_clause=0x7af86c0432b8, tables=0x7af86c043748, leaves=..., select_insert=false, want_access_first=SELECT_ACL, want_access=SELECT_ACL, full_table_list=false) at /src/mariadb/sql/sql_base.cc:8449
      #19 0x00005ae814e1d560 in JOIN::prepare (this=0x7af86c1d2f38, tables_init=0x7af86c043748, conds_init=0x0, og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0, select_lex_arg=0x7af86c043100, unit_arg=0x7af86c24f970) at /src/mariadb/sql/sql_select.cc:1469
      #20 0x00005ae814e2c47b in mysql_select (thd=0x7af86c000dc8, tables=0x7af86c043748, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2164526848, result=0x7af86c1d2f10, unit=0x7af86c24f970, select_lex=0x7af86c043100) at /src/mariadb/sql/sql_select.cc:5365
      #21 0x00005ae814e193fc in handle_select (thd=0x7af86c000dc8, lex=0x7af86c24f890, result=0x7af86c1d2f10, setup_tables_done_option=0) at /src/mariadb/sql/sql_select.cc:634
      #22 0x00005ae814db8f39 in execute_sqlcom_select (thd=0x7af86c000dc8, all_tables=0x7af86c043748) at /src/mariadb/sql/sql_parse.cc:6166
      #23 0x00005ae814db06f2 in mysql_execute_command (thd=0x7af86c000dc8, is_called_from_prepared_stmt=false) at /src/mariadb/sql/sql_parse.cc:3954
      #24 0x00005ae8150b55d9 in sp_instr_stmt::exec_core (this=0x7af86c041750, thd=0x7af86c000dc8, nextp=0x7af87e0cad4c) at /src/mariadb/sql/sp_instr.cc:1136
      #25 0x00005ae8150b3592 in sp_lex_keeper::reset_lex_and_exec_core (this=0x7af86c041790, thd=0x7af86c000dc8, nextp=0x7af87e0cad4c, open_tables=false, instr=0x7af86c041750, rerun_the_same_instr=false) at /src/mariadb/sql/sp_instr.cc:356
      #26 0x00005ae8150b3c7b in sp_lex_keeper::validate_lex_and_exec_core (this=0x7af86c041790, thd=0x7af86c000dc8, nextp=0x7af87e0cad4c, open_tables=false, instr=0x7af86c041750) at /src/mariadb/sql/sp_instr.cc:535
      #27 0x00005ae8150b513d in sp_instr_stmt::execute (this=0x7af86c041750, thd=0x7af86c000dc8, nextp=0x7af87e0cad4c) at /src/mariadb/sql/sp_instr.cc:1038
      #28 0x00005ae814c7d875 in sp_head::execute (this=0x7af86c042048, thd=0x7af86c000dc8, merge_da_on_success=true) at /src/mariadb/sql/sp_head.cc:1295
      #29 0x00005ae814c808df in sp_head::execute_procedure (this=0x7af86c042048, thd=0x7af86c000dc8, args=0x7af86c006358) at /src/mariadb/sql/sp_head.cc:2329
      #30 0x00005ae814dad224 in do_execute_sp (thd=0x7af86c000dc8, sp=0x7af86c042048) at /src/mariadb/sql/sql_parse.cc:3060
      #31 0x00005ae814dadecb in Sql_cmd_call::execute (this=0x7af86c018290, thd=0x7af86c000dc8) at /src/mariadb/sql/sql_parse.cc:3283
      #32 0x00005ae814db7b96 in mysql_execute_command (thd=0x7af86c000dc8, is_called_from_prepared_stmt=false) at /src/mariadb/sql/sql_parse.cc:5861
      #33 0x00005ae814dbe15c in mysql_parse (thd=0x7af86c000dc8, rawbuf=0x7af86c0181f0 "CALL p1", length=7, parser_state=0x7af87e0cc2c0) at /src/mariadb/sql/sql_parse.cc:7891
      #34 0x00005ae814da9967 in dispatch_command (command=COM_QUERY, thd=0x7af86c000dc8, packet=0x7af86c00c149 "CALL p1", packet_length=7, blocking=true) at /src/mariadb/sql/sql_parse.cc:1877
      #35 0x00005ae814da824c in do_command (thd=0x7af86c000dc8, blocking=true) at /src/mariadb/sql/sql_parse.cc:1416
      #36 0x00005ae814fc3a6a in do_handle_one_connection (connect=0x5ae845e13f58, put_in_cache=true) at /src/mariadb/sql/sql_connect.cc:1414
      #37 0x00005ae814fc37df in handle_one_connection (arg=0x5ae845deef18) at /src/mariadb/sql/sql_connect.cc:1326
      #38 0x00005ae8155a444e in pfs_spawn_thread (arg=0x5ae845d79e08) at /src/mariadb/storage/perfschema/pfs.cc:2198
      #39 0x00007af8892a2ef1 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:448
      #40 0x00007af88933445c in __GI___clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
       
      mariadbd: /src/mariadb/sql/sql_base.cc:7605: bool store_natural_using_join_columns(THD*, TABLE_LIST*, TABLE_LIST*, TABLE_LIST*, List<String>*, uint): Assertion `!natural_using_join->join_columns' failed.
      250624 14:28:32 [ERROR] /src/mariadb/sql/mariadbd got signal 6 ;
      

      Reproduced on main (4b79d7b8)

      Attachments

        Issue Links

          Activity

            People

              shulga Dmitry Shulga
              qobood Vasilii Lakhin
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:

                Git Integration

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