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

mysqld: dict0dict.ic:879: dict_field_t* dict_index_get_nth_field(const dict_index_t*, ulint): Assertion `pos < index->n_def' failed.

    XMLWordPrintable

    Details

      Description

      Problem hit during RQG testing on
      10.4.7 commit 5a95a33e309d0b2c6bc0f938ad925e3f74b0f921 2019-07-18
      compiled with debug.
      No replay on actual 10.3.
       
      Version: '10.4.7-MariaDB-debug-log'  ...
      mysqld: /work/10.4/storage/innobase/include/dict0dict.ic:879: dict_field_t* dict_index_get_nth_field(const dict_index_t*, ulint): Assertion `pos < index->n_def' failed.
      mysqld: /work/10.4/storage/innobase/include/dict0dict.ic:879: dict_field_t* dict_index_get_nth_field(const dict_index_t*, ulint): Assertion `pos < index->n_def' failed.
      190718 13:19:53 [ERROR] mysqld got signal 6 ;
       
      Some IMHO important characteristics of that problem
      - neither FOREIGN KEYs nor FULLTEXT indexes nor virtual columns nor blobs are involved
      - certain InnoDB system variables which are known to cause sometimes trouble are switched to "harmless" values
      - only three concurrent sessions/threads are involved
       
      Simplified RQG grammar MDEV-20090.yy (just for illustration, please use the uploaded file when trying to replay).
      thread1:
          INSERT INTO t1 (col1, col_int) VALUES ( 4 , 4); ROLLBACK ;
      thread1_connect:
           ;
      thread1_init:
          CREATE TABLE IF NOT EXISTS t1 ( col1 INT PRIMARY KEY, col_int INTEGER ) ENGINE = InnoDB ROW_FORMAT = Dynamic ;
       
      thread2:
          DELETE FROM t1 WHERE col1 = 4 OR col1 IS NULL ; COMMIT ;
      thread2_connect:
           ;
      thread2_init:
           ;
       
      thread3:
          ALTER TABLE t1 ADD UNIQUE INDEX `uidx3` ( col_int ) , ALGORITHM = NOCOPY , LOCK = NONE |
          ALTER TABLE t1 ADD UNIQUE INDEX `uidx3` ( col_int ) , ALGORITHM = NOCOPY , LOCK = NONE |
          ALTER TABLE t1 ADD UNIQUE INDEX `uidx3` ( col_int ) , ALGORITHM = NOCOPY , LOCK = NONE |
          ALTER TABLE t1 ADD UNIQUE INDEX `uidx3` ( col_int ) , ALGORITHM = NOCOPY , LOCK = NONE |
          ALTER TABLE t1 ADD COLUMN col_int_copy INTEGER FIRST , ALGORITHM = NOCOPY , LOCK = NONE ; ALTER TABLE t1 DROP COLUMN IF EXISTS col_int , ALGORITHM = NOCOPY , LOCK = NONE ; ALTER TABLE t1 CHANGE COLUMN IF EXISTS col_int_copy col_int INTEGER , ALGORITHM = NOCOPY , LOCK = NONE ;
      thread3_connect:
           ;
      thread3_init:
           ;
      
      

        Attachments

        1. 000000.log
          97 kB
        2. MDEV-20090.cfg
          37 kB
        3. MDEV-20090.sh
          4 kB
        4. MDEV-20090.yy
          1 kB

          Issue Links

            Activity

              People

              Assignee:
              kevg Eugene Kosov
              Reporter:
              mleich Matthias Leich
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: