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

Wrong results or crash in Field::is_null with multiple myisam_repair_threads

    XMLWordPrintable

    Details

      Description

      _The problem must be related to MDEV-23363, but I'll leave MDEV-23363 to be about get_field_default_value.

      The test case is very non-deterministic. Record a test result and run with high --repeat (hundreds, thousands).

      SET myisam_repair_threads= 4;
      CREATE TABLE t1 (a INT, b TEXT, c VARBINARY(1024), UNIQUE(c), KEY(b(128)), KEY(a)) ENGINE=MyISAM;
      INSERT INTO t1 SELECT 1,'a','foo';
      SELECT * FROM t1;
       
      #  Cleanup
      DROP TABLE t1;
      

      10.5 842da858

      #3  <signal handler called>
      #4  0x0000556c40e2e638 in Field::is_null (this=0x7fd89c0f7da0, row_offset=0) at /data/src/10.5/sql/field.h:1364
      #5  0x0000556c40e2b8ed in Protocol_text::store (this=0x7fd89c0010e0, field=0x7fd89c0f7da0) at /data/src/10.5/sql/protocol.cc:1319
      #6  0x0000556c412e8e35 in Item_field::send (this=0x7fd89c015638, protocol=0x7fd89c0010e0, buffer=0x7fd8b349d0e0) at /data/src/10.5/sql/item.cc:7216
      #7  0x0000556c40e2a989 in Protocol::send_result_set_row (this=0x7fd89c0010e0, row_items=0x7fd89c013aa8) at /data/src/10.5/sql/protocol.cc:1092
      #8  0x0000556c40ee33c5 in select_send::send_data (this=0x7fd89c014f30, items=...) at /data/src/10.5/sql/sql_class.cc:3020
      #9  0x0000556c40ff89f9 in select_result_sink::send_data_with_check (this=0x7fd89c014f30, items=..., u=0x7fd89c004b30, sent=0) at /data/src/10.5/sql/sql_class.h:5296
      #10 0x0000556c40fdf622 in end_send (join=0x7fd89c014f58, join_tab=0x0, end_of_records=false) at /data/src/10.5/sql/sql_select.cc:21833
      #11 0x0000556c40fdb739 in do_select (join=0x7fd89c014f58, procedure=0x0) at /data/src/10.5/sql/sql_select.cc:20131
      #12 0x0000556c40faf4ab in JOIN::exec_inner (this=0x7fd89c014f58) at /data/src/10.5/sql/sql_select.cc:4450
      #13 0x0000556c40fae5d7 in JOIN::exec (this=0x7fd89c014f58) at /data/src/10.5/sql/sql_select.cc:4231
      #14 0x0000556c40fafd08 in mysql_select (thd=0x7fd89c000b18, tables=0x7fd89c013f50, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fd89c014f30, unit=0x7fd89c004b30, select_lex=0x7fd89c013958) at /data/src/10.5/sql/sql_select.cc:4655
      #15 0x0000556c40f9f9ae in handle_select (thd=0x7fd89c000b18, lex=0x7fd89c004a68, result=0x7fd89c014f30, setup_tables_done_option=0) at /data/src/10.5/sql/sql_select.cc:429
      #16 0x0000556c40f64f00 in execute_sqlcom_select (thd=0x7fd89c000b18, all_tables=0x7fd89c013f50) at /data/src/10.5/sql/sql_parse.cc:6209
      #17 0x0000556c40f5c1a7 in mysql_execute_command (thd=0x7fd89c000b18) at /data/src/10.5/sql/sql_parse.cc:3931
      #18 0x0000556c40f69d4d in mysql_parse (thd=0x7fd89c000b18, rawbuf=0x7fd89c0138d0 "SELECT * FROM t1", length=16, parser_state=0x7fd8b349e520, is_com_multi=false, is_next_command=false) at /data/src/10.5/sql/sql_parse.cc:7993
      #19 0x0000556c40f56046 in dispatch_command (command=COM_QUERY, thd=0x7fd89c000b18, packet=0x7fd89c1af1e9 "", packet_length=16, is_com_multi=false, is_next_command=false) at /data/src/10.5/sql/sql_parse.cc:1867
      #20 0x0000556c40f5477e in do_command (thd=0x7fd89c000b18) at /data/src/10.5/sql/sql_parse.cc:1348
      #21 0x0000556c410fa07a in do_handle_one_connection (connect=0x556c43dc1b88, put_in_cache=true) at /data/src/10.5/sql/sql_connect.cc:1410
      #22 0x0000556c410f9de2 in handle_one_connection (arg=0x556c43dc1b88) at /data/src/10.5/sql/sql_connect.cc:1312
      #23 0x0000556c41638126 in pfs_spawn_thread (arg=0x556c43dc17b8) at /data/src/10.5/storage/perfschema/pfs.cc:2201
      #24 0x00007fd8be8cb4a4 in start_thread (arg=0x7fd8b349f700) at pthread_create.c:456
      #25 0x00007fd8bc9ffd0f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97
      

      10.5 842da858

      --- /data/bld/10.5-debug-nightly/mysql-test/suite/bug/length1.result	2020-08-02 00:24:54.081233467 +0300
      +++ /data/bld/10.5-debug-nightly/mysql-test/suite/bug/length1.reject	2020-08-02 00:36:03.993514816 +0300
      @@ -3,5 +3,5 @@
       INSERT INTO t1 SELECT 1,'a','foo';
       SELECT * FROM t1;
       a	b	c
      -1	a	foo
      +1	a	NULL
       DROP TABLE t1;
       
      mysqltest: Result length mismatch
      

      10.4 4db4b773

      --- /data/bld/10.4-debug-nightly/mysql-test/suite/bug/length1.result	2020-08-02 00:24:54.081233467 +0300
      +++ /data/bld/10.4-debug-nightly/mysql-test/suite/bug/length1.reject	2020-08-02 00:34:22.102681497 +0300
      @@ -3,5 +3,5 @@
       INSERT INTO t1 SELECT 1,'a','foo';
       SELECT * FROM t1;
       a	b	c
      -1	a	foo
      +NULL	a	foo
       DROP TABLE t1;
       
      mysqltest: Result length mismatch
      

      --- /data/bld/10.4-debug-nightly/mysql-test/suite/bug/length1.result	2020-08-02 00:24:54.081233467 +0300
      +++ /data/bld/10.4-debug-nightly/mysql-test/suite/bug/length1.reject	2020-08-02 00:35:10.722124580 +0300
      @@ -3,5 +3,5 @@
       INSERT INTO t1 SELECT 1,'a','foo';
       SELECT * FROM t1;
       a	b	c
      -1	a	foo
      +NULL	NULL	NULL
       DROP TABLE t1;
       
      mysqltest: Result length mismatch
      

      The test case is not applicable to earlier versions due to unique blobs.
      I'm adding virtual columns to the components, because most of unique blob-related issues turn out to be caused by virtual column flaws.

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              sanja Oleksandr Byelkin
              Reporter:
              elenst Elena Stepanova
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Dates

                Created:
                Updated:

                  Git Integration