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

Assertion `0' failed in Field_new_decimal::get_equal_const_item on SELECT

Details

    • Bug
    • Status: Confirmed (View Workflow)
    • Major
    • Resolution: Unresolved
    • 10.5, 10.6, 10.11, 11.4, 11.8, 12.0
    • 10.5, 10.6, 10.11, 11.4, 11.8
    • Optimizer
    • None

    Description

      CREATE TABLE t (c DECIMAL(10,5),d DECIMAL(10,1));
      SELECT * FROM t HAVING (SELECT MAX(d) FROM t)=c AND c+d=1;
      

      Leads to:

      CS 11.8.1 33e0796e7a154e02a5e53c55cefc5d6feb4f5e6d (Debug) Build 15/02/2025

      mariadbd: /test/11.8_dbg/sql/field.cc:3932: virtual Item *Field_new_decimal::get_equal_const_item(THD *, const Context &, Item *): Assertion `0' failed.
      

      CS 11.8.1 33e0796e7a154e02a5e53c55cefc5d6feb4f5e6d (Debug) Build 15/02/2025

      Core was generated by `/test/MD150225-mariadb-11.8.1-linux-x86_64-dbg/bin/mariadbd --no-defaults --max'.
      Program terminated with signal SIGABRT, Aborted.
      Download failed: Invalid argument.  Continuing without source file ./nptl/./nptl/pthread_kill.c.
      #0  __pthread_kill_implementation (no_tid=0, signo=6, threadid=<optimized out>)at ./nptl/pthread_kill.c:44
       
      [Current thread is 1 (LWP 1153026)]
      (gdb) bt
      #0  __pthread_kill_implementation (no_tid=0, signo=6, threadid=<optimized out>)at ./nptl/pthread_kill.c:44
      #1  __pthread_kill_internal (signo=6, threadid=<optimized out>)at ./nptl/pthread_kill.c:78
      #2  __GI___pthread_kill (threadid=<optimized out>, signo=signo@entry=6)at ./nptl/pthread_kill.c:89
      #3  0x0000149bf444526e in __GI_raise (sig=sig@entry=6)at ../sysdeps/posix/raise.c:26
      #4  0x0000149bf44288ff in __GI_abort () at ./stdlib/abort.c:79
      #5  0x0000149bf442881b in __assert_fail_base (fmt=0x149bf45d01e8 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x5633aadc43bc "0", file=file@entry=0x5633aada139b "/test/11.8_dbg/sql/field.cc", line=line@entry=3932, function=function@entry=0x5633aada2201 "virtual Item *Field_new_decimal::get_equal_const_item(THD *, const Context &, Item *)") at ./assert/assert.c:94
      #6  0x0000149bf443b507 in __assert_fail (assertion=0x5633aadc43bc "0", file=0x5633aada139b "/test/11.8_dbg/sql/field.cc", line=3932, function=0x5633aada2201 "virtual Item *Field_new_decimal::get_equal_const_item(THD *, const Context &, Item *)") at ./assert/assert.c:103
      #7  0x00005633aa0dc6f8 in Field_new_decimal::get_equal_const_item (this=0x149b88026a78, thd=0x149b88000d58, ctx=@0x149be7ffb0a8: {m_subst_constraint = Value_source::IDENTITY_SUBST, m_compare_handler = 0x5633ab8fb678 <type_handler_long_blob>, m_compare_collation = 0x5633ab6dcb40 <my_charset_bin>}, const_item=0x149b8801c298)at /test/11.8_dbg/sql/field.cc:3932
      #8  0x00005633aa14f2fa in Item_field::propagate_equal_fields (this=0x149b8801e028, thd=0x149b88000d58, ctx=@0x149be7ffb0a8: {m_subst_constraint = Value_source::IDENTITY_SUBST, m_compare_handler = 0x5633ab8fb678 <type_handler_long_blob>, m_compare_collation = 0x5633ab6dcb40 <my_charset_bin>}, arg=0x149b8801ce30)at /test/11.8_dbg/sql/item.cc:6695
      #9  0x00005633aa158d29 in Item_ref::propagate_equal_fields (this=0x149b8801c7c0, thd=0x149b88000d58, ctx=@0x149be7ffb0a8: {m_subst_constraint = Value_source::IDENTITY_SUBST, m_compare_handler = 0x5633ab8fb678 <type_handler_long_blob>, m_compare_collation = 0x5633ab6dcb40 <my_charset_bin>}, cond=0x149b8801ce30)at /test/11.8_dbg/sql/item.cc:9746
      #10 0x00005633aa152af9 in Item::propagate_equal_fields_and_change_item_tree (this=0x149b8801c7c0, thd=0x149b88000d58, ctx=@0x149be7ffb0a8: {m_subst_constraint = Value_source::IDENTITY_SUBST, m_compare_handler = 0x5633ab8fb678 <type_handler_long_blob>, m_compare_collation = 0x5633ab6dcb40 <my_charset_bin>}, cond=0x149b8801ce30, place=0x149b8801ca58)at /test/11.8_dbg/sql/item.cc:7793
      #11 0x00005633aa1b7213 in Item_args::propagate_equal_fields (this=0x149b8801ca50, thd=0x149b88000d58, ctx=@0x149be7ffb0a8: {m_subst_constraint = Value_source::IDENTITY_SUBST, m_compare_handler = 0x5633ab8fb678 <type_handler_long_blob>, m_compare_collation = 0x5633ab6dcb40 <my_charset_bin>}, cond=0x149b8801ce30)at /test/11.8_dbg/sql/item_func.cc:580
      #12 0x00005633a9b9ddde in Item_func::propagate_equal_fields (this=0x149b8801c9d8, thd=0x149b88000d58, ctx=@0x149be7ffb1a8: {m_subst_constraint = Value_source::ANY_SUBST, m_compare_handler = 0x5633ab8fb498 <type_handler_newdecimal>, m_compare_collation = 0x5633ab6dcb40 <my_charset_bin>}, cond=0x149b8801ce30)at /test/11.8_dbg/sql/item_func.h:398
      #13 0x00005633aa152af9 in Item::propagate_equal_fields_and_change_item_tree (this=0x149b8801c9d8, thd=0x149b88000d58, ctx=@0x149be7ffb1a8: {m_subst_constraint = Value_source::ANY_SUBST, m_compare_handler = 0x5633ab8fb498 <type_handler_newdecimal>, m_compare_collation = 0x5633ab6dcb40 <my_charset_bin>}, cond=0x149b8801ce30, place=0x149b8801cba8)at /test/11.8_dbg/sql/item.cc:7793
      #14 0x00005633aa1b7213 in Item_args::propagate_equal_fields (this=0x149b8801cba0, thd=0x149b88000d58, ctx=@0x149be7ffb1a8: {m_subst_constraint = Value_source::ANY_SUBST, m_compare_handler = 0x5633ab8fb498 <type_handler_newdecimal>, m_compare_collation = 0x5633ab6dcb40 <my_charset_bin>}, cond=0x149b8801ce30)at /test/11.8_dbg/sql/item_func.cc:580
      #15 0x00005633a9b9e4c7 in Item_bool_rowready_func2::propagate_equal_fields (this=0x149b8801cb28, thd=0x149b88000d58, ctx=@0x149be7ffb208: {m_subst_constraint = Value_source::ANY_SUBST, m_compare_handler = 0x5633ab8fb390 <type_handler_slonglong>, m_compare_collation = 0x5633ab6dcb40 <my_charset_bin>}, cond=0x149b8801ce30)at /test/11.8_dbg/sql/item_cmpfunc.h:605
      #16 0x00005633a9da0ac1 in Item_func::build_equal_items (this=0x149b8801cb28, thd=0x149b88000d58, inherited=0x149b8801ce30, link_item_fields=false, cond_equal_ref=0x0) at /test/11.8_dbg/sql/sql_select.cc:18526
      #17 0x00005633a9da09fe in Item_func_eq::build_equal_items (this=0x149b8801cb28, thd=0x149b88000d58, inherited=0x149b8801ce30, link_item_fields=false, cond_equal_ref=0x0)at /test/11.8_dbg/sql/sql_select.cc:18511
      #18 0x00005633a9da01af in Item_cond_and::build_equal_items (this=0x149b8801cd58, thd=0x149b88000d58, inherited=0x149b8801ce30, link_item_fields=false, cond_equal_ref=0x149b8801dd18)at /test/11.8_dbg/sql/sql_select.cc:18381
      #19 0x00005633a9dc27c6 in build_equal_items (join=0x149b8801d850, cond=0x149b8801cd58, inherited=0x0, join_list=0x149b88019fa8, ignore_on_conds=true, cond_equal_ref=0x149b8801dd18, link_equal_fields=false) at /test/11.8_dbg/sql/sql_select.cc:18628
      #20 0x00005633a9d71373 in optimize_cond (join=0x149b8801d850, conds=0x149b8801cd58, join_list=0x149b88019fa8, ignore_on_conds=true, cond_value=0x149b8801dbec, cond_equal=0x149b8801dd18, flags=0)at /test/11.8_dbg/sql/sql_select.cc:20445
      #21 0x00005633a9d6df2c in JOIN::optimize_inner (this=0x149b8801d850)at /test/11.8_dbg/sql/sql_select.cc:2445
      #22 0x00005633a9d6a308 in JOIN::optimize (this=0x149b8801d850)at /test/11.8_dbg/sql/sql_select.cc:1994
      #23 0x00005633a9d62299 in mysql_select (thd=0x149b88000d58, tables=0x149b8801a428, fields=@0x149b8801a0a8: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x149b8801a3d8, last = 0x149b8801e298, elements = 2}, <No data fields>}, conds=0x0, og_num=0, order=0x0, group=0x0, having=0x149b8801cd58, proc_param=0x0, select_options=2164525824, result=0x149b8801d828, unit=0x149b88005080, select_lex=0x149b88019df0)at /test/11.8_dbg/sql/sql_select.cc:5361
      #24 0x00005633a9d61dd5 in handle_select (thd=0x149b88000d58, lex=0x149b88004fa0, result=0x149b8801d828, setup_tables_done_option=0)at /test/11.8_dbg/sql/sql_select.cc:633
      #25 0x00005633a9d09771 in execute_sqlcom_select (thd=0x149b88000d58, all_tables=0x149b8801a428) at /test/11.8_dbg/sql/sql_parse.cc:6191
      #26 0x00005633a9cfe650 in mysql_execute_command (thd=0x149b88000d58, is_called_from_prepared_stmt=false) at /test/11.8_dbg/sql/sql_parse.cc:3979
      #27 0x00005633a9cf67d4 in mysql_parse (thd=0x149b88000d58, rawbuf=0x149b88019d20 "SELECT * FROM t HAVING (SELECT MAX(d) FROM t)=c AND c+d=1", length=57, parser_state=0x149be7ffda20)at /test/11.8_dbg/sql/sql_parse.cc:7915
      #28 0x00005633a9cf3ba4 in dispatch_command (command=COM_QUERY, thd=0x149b88000d58, packet=0x149b8800b099 "SELECT * FROM t HAVING (SELECT MAX(d) FROM t)=c AND c+d=1", packet_length=57, blocking=true) at /test/11.8_dbg/sql/sql_parse.cc:1902
      #29 0x00005633a9cf7383 in do_command (thd=0x149b88000d58, blocking=true)at /test/11.8_dbg/sql/sql_parse.cc:1415
      #30 0x00005633a9ee0a19 in do_handle_one_connection (connect=0x5633ae93bf98, put_in_cache=true) at /test/11.8_dbg/sql/sql_connect.cc:1415
      #31 0x00005633a9ee07be in handle_one_connection (arg=0x5633ae9551a8)at /test/11.8_dbg/sql/sql_connect.cc:1327
      #32 0x0000149bf449ca94 in start_thread (arg=<optimized out>)at ./nptl/pthread_create.c:447
      #33 0x0000149bf4529c3c in clone3 ()at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
      

      Bug confirmed present in:
      MariaDB: 10.5.29 (dbg), 10.6.22 (dbg), 10.11.12 (dbg), 11.4.6 (dbg), 11.8.1 (dbg), 12.0.0 (dbg)

      Bug (or feature/syntax) confirmed not present in:
      MariaDB: 10.5.29 (opt), 10.6.22 (opt), 10.11.12 (opt), 11.4.6 (opt), 11.8.1 (opt), 12.0.0 (opt)
      MySQL: 5.5.62 (dbg), 5.5.62 (opt), 5.6.51 (dbg), 5.6.51 (opt), 5.7.44 (dbg), 5.7.44 (opt), 8.0.36 (dbg), 8.0.36 (opt), 9.1.0 (dbg), 9.1.0 (opt)

      Present for at least MyISAM and InnoDB. Testcase is CLI and MTR compatible. The testcase does not produce any UBSAN/ASAN errors.

      Attachments

        Activity

          There are no comments yet on this issue.

          People

            psergei Sergei Petrunia
            Roel Roel Van de Paar
            Votes:
            0 Vote for this issue
            Watchers:
            1 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.