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

Assertion `marked_for_write_or_computed()' failed in bool Field_new_decimal::store_value(const my_decimal*, int*)

Details

    Description

      SET SQL_MODE='';
      CREATE TABLE t (c FIXED,c2 BINARY (1),c5 FIXED NOT NULL UNIQUE KEY);
      CREATE TRIGGER tr1 BEFORE UPDATE ON t FOR EACH ROW SET @a=0;
      INSERT INTO t (c) VALUES (1);
      

      Leads to:

      CS 10.5.28 1f306d395d00df158702d35b3338ccfe8663744e (Debug)

      mariadbd: /test/10.5_dbg/sql/field.cc:3378: bool Field_new_decimal::store_value(const my_decimal*, int*): Assertion `marked_for_write_or_computed()' failed.
      

      CS 10.5.28 1f306d395d00df158702d35b3338ccfe8663744e (Debug)

      Core was generated by `/test/MD220125-mariadb-10.5.28-linux-x86_64-dbg/bin/mariadbd --no-defaults --ma'.
      Program terminated with signal SIGABRT, Aborted.
      #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
      [Current thread is 1 (Thread 0x14b44a421700 (LWP 3275981))]
      (gdb) bt
      #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
      #1  0x000014b463f73859 in __GI_abort () at abort.c:79
      #2  0x000014b463f73729 in __assert_fail_base (fmt=0x14b464109588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x564e2d888c08 "marked_for_write_or_computed()", file=0x564e2d886dab "/test/10.5_dbg/sql/field.cc", line=3378, function=<optimized out>) at assert.c:92
      #3  0x000014b463f84fd6 in __GI___assert_fail (assertion=assertion@entry=0x564e2d888c08 "marked_for_write_or_computed()", file=file@entry=0x564e2d886dab "/test/10.5_dbg/sql/field.cc", line=line@entry=3378, function=function@entry=0x564e2d88a4c0 "bool Field_new_decimal::store_value(const my_decimal*, int*)") at assert.c:101
      #4  0x0000564e2cd26e92 in Field_new_decimal::store_value (this=this@entry=0x14b404035a68, decimal_value=0x564e2dfdaa20 <decimal_zero>, native_error=native_error@entry=0x14b44a41fa4c) at /test/10.5_dbg/sql/field.cc:3378
      #5  0x0000564e2cd29c11 in Field_new_decimal::store_value (this=0x14b404035a68, decimal_value=<optimized out>) at /test/10.5_dbg/sql/field.cc:3426
      #6  0x0000564e2cd29c5c in Field_new_decimal::reset (this=<optimized out>) at /test/10.5_dbg/sql/field.cc:3331
      #7  0x0000564e2cd3ceb9 in convert_null_to_field_value_or_error (field=field@entry=0x14b404035a68, err=1364) at /test/10.5_dbg/sql/field_conv.cc:175
      #8  0x0000564e2ca12730 in not_null_fields_have_null_values (table=table@entry=0x14b404026db8) at /test/10.5_dbg/sql/sql_base.cc:8685
      #9  0x0000564e2ca21798 in fill_record_n_invoke_before_triggers (thd=thd@entry=0x14b404000d48, table=table@entry=0x14b404026db8, fields=@0x14b404005c48: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x14b404013700, last = 0x14b404013700, elements = 1}, <No data fields>}, values=@0x14b404013be0: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x14b404013c98, last = 0x14b404013c98, elements = 1}, <No data fields>}, ignore_errors=ignore_errors@entry=false, event=event@entry=TRG_EVENT_INSERT) at /test/10.5_dbg/sql/sql_base.cc:8731
      #10 0x0000564e2ca5859d in mysql_insert (thd=thd@entry=0x14b404000d48, table_list=<optimized out>, fields=@0x14b404005c48: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x14b404013700, last = 0x14b404013700, elements = 1}, <No data fields>}, values_list=@0x14b404005c90: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x14b404013ca8, last = 0x14b404013ca8, elements = 1}, <No data fields>}, update_fields=@0x14b404005c78: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x564e2dfdd8a0 <end_of_list>, last = 0x14b404005c78, elements = 0}, <No data fields>}, update_values=@0x14b404005c60: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x564e2dfdd8a0 <end_of_list>, last = 0x14b404005c60, elements = 0}, <No data fields>}, duplic=DUP_ERROR, ignore=false, result=0x0) at /test/10.5_dbg/sql/sql_insert.cc:1025
      #11 0x0000564e2ca9b87a in mysql_execute_command (thd=thd@entry=0x14b404000d48) at /test/10.5_dbg/sql/sql_parse.cc:4664
      #12 0x0000564e2ca86a1c in mysql_parse (thd=thd@entry=0x14b404000d48, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x14b44a420320, is_com_multi=is_com_multi@entry=false, is_next_command=is_next_command@entry=false) at /test/10.5_dbg/sql/sql_parse.cc:8251
      #13 0x0000564e2ca954b3 in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x14b404000d48, packet=packet@entry=0x14b40400aa29 "INSERT INTO t (c) VALUES (1)", packet_length=packet_length@entry=28, is_com_multi=is_com_multi@entry=false, is_next_command=is_next_command@entry=false) at /test/10.5_dbg/sql/sql_class.h:1335
      #14 0x0000564e2ca97e61 in do_command (thd=thd@entry=0x14b404000d48) at /test/10.5_dbg/sql/sql_parse.cc:1375
      #15 0x0000564e2cbd93e0 in do_handle_one_connection (connect=<optimized out>, connect@entry=0x564e2f1a3578, put_in_cache=put_in_cache@entry=true) at /test/10.5_dbg/sql/sql_connect.cc:1386
      #16 0x0000564e2cbd98ad in handle_one_connection (arg=0x564e2f1a3578) at /test/10.5_dbg/sql/sql_connect.cc:1298
      #17 0x000014b464484609 in start_thread (arg=<optimized out>) at pthread_create.c:477
      #18 0x000014b464070133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
      

      Bug confirmed present in:
      MariaDB: 10.5.28 (dbg), 10.6.21 (dbg)

      Bug (or feature/syntax) confirmed not present in:
      MariaDB: 10.5.28 (opt), 10.6.21 (opt), 10.11.11 (dbg), 10.11.11 (opt), 11.4.5 (dbg), 11.4.5 (opt), 11.7.1 (dbg), 11.7.1 (opt), 11.8.0 (dbg), 11.8.0 (opt)

      Attachments

        Activity

          The failure started happening after this commit in 10.5:

          commit a69da0c31e97109bba099022acdd393f92fa127f
          Commit:     Sergei Golubchik
          CommitDate: Fri Jan 17 23:42:56 2025 +0100
           
              MDEV-19761 Before Trigger not processed for Not Null Columns if no explicit value and no DEFAULT
          

          A bit of cleanup:

          CREATE TABLE t (c FIXED NOT NULL);
          CREATE TRIGGER tr1 BEFORE UPDATE ON t FOR EACH ROW SET @a=0;
          INSERT IGNORE INTO t () VALUES ();
          DROP TABLE t;
          

          elenst Elena Stepanova added a comment - The failure started happening after this commit in 10.5: commit a69da0c31e97109bba099022acdd393f92fa127f Commit: Sergei Golubchik CommitDate: Fri Jan 17 23:42:56 2025 +0100   MDEV-19761 Before Trigger not processed for Not Null Columns if no explicit value and no DEFAULT A bit of cleanup: CREATE TABLE t (c FIXED NOT NULL ); CREATE TRIGGER tr1 BEFORE UPDATE ON t FOR EACH ROW SET @a=0; INSERT IGNORE INTO t () VALUES (); DROP TABLE t;

          People

            serg Sergei Golubchik
            ramesh Ramesh Sivaraman
            Votes:
            0 Vote for this issue
            Watchers:
            3 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.