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

Corruption-like errors upon and after REPAIR .. USE_FRM on table with vector key

    XMLWordPrintable

Details

    Description

      Notes:

      I'm setting it to Minor because running REPAIR .. USE_FRM without a good reason, and besides concurrently with other queries, isn't a great idea anyway. It is mostly a problem for tests, as it may mask real corruption errors.

      The test case is obviously non-deterministic. It currently fails for me every time on a local build, but I expect that the required timeouts and row counts will depend on the machine and build type. Please don't put it into the regression suite.

      The eventual timeout error with which SELECT ends is already questionable, but this part is not specific to the vector branch, apparently there is some extra locking between this type of SELECT and REPAIR. However, corruption errors and "ref_count=1 after shutdown" appear to be specific to the vector key.

      INTO OUTFILE is not essential for the test case, I added it to avoid overwhelming MTR with buffering too much data, which itself causes bogus failures.

      --source include/have_sequence.inc
       
      CREATE TABLE t (pk INT PRIMARY KEY, v VECTOR(48) NOT NULL, VECTOR(v)) ENGINE=MyISAM;
      INSERT INTO t SELECT s2.seq, VEC_FROMTEXT(concat('[', GROUP_CONCAT(s1.seq), ']')) FROM seq_1_to_48 s1, seq_1_to_1800 s2 GROUP BY s2.seq;
       
      --connect (con1,localhost,root,,)
      SET max_statement_time= 5;
      --send
        SELECT tb1.v, HEX(tb1.v) INTO OUTFILE 'x' FROM t tb1 JOIN t tb2;
       
      --connection default
      --let $show_statement= SHOW PROCESSLIST
      --let $field= State
      --let $condition= = 'Sending data'
      --source include/wait_show_condition.inc
       
      SET lock_wait_timeout= 3;
      REPAIR TABLE t USE_FRM;
       
      # Cleanup
      --connection con1
      --disable_result_log
      --error 0,ER_STATEMENT_TIMEOUT
      --reap
      DROP TABLE t;
      --disconnect con1
      

      3e03a45aa4c69e5aa76c9396547797a895a98edc

      REPAIR TABLE t USE_FRM;
      Table	Op	Msg_type	Msg_text
      t	repair	error	Failed generating table from .frm file
      test.t	repair	Error	Engine MyISAM failed to discover table `test`.`t` with 'CREATE TABLE i (                     layer tinyint not null,            tref varbinary(6),                vec blob not null,                 neighbors blob not null,           unique (tref),                     key (layer))                     '
      test.t	repair	error	Corrupt
      connection con1;
      DROP TABLE t;
      disconnect con1;
      bug.w1c                                  [ pass ]   5667
      ***Warnings generated in error logs during shutdown after running tests: bug.w1c
       
      2024-11-04  2:44:07 0 [ERROR] Plugin 'MyISAM' has ref_count=1 after shutdown.
      Warning: Internal memory accounting error of 32 bytes
      

      Same happens with Aria.

      Attachments

        Issue Links

          Activity

            People

              serg Sergei Golubchik
              elenst Elena Stepanova
              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.