1. 17 Jun, 2020 3 commits
    • MikkoJaakola's avatar
      MDEV-21759 galera.galera_parallel_autoinc_manytrx sporadic failures. · beb19183
      MikkoJaakola authored
      The galera.galera_parallel_autoinc_manytrx mtr test opens and runs test
      scenario through 3 connections to node 1 and one connection to node 2.
      In the test initialization phase, the test creates two tables 't1' and 'ten'
      and then creates a stored procedure 'p1' to operate on these tables.
      These 3 create DDL statements are issued through same connection to node 1.
      
      In the next test phase, the mtr script uses send command to launch the call
      for the p1 stored procedure through all 3 connections to node 1 and through
      one connection to node 2. As the mtr send command is asynchronous,
      this test phase is non blocking and fast operation.
      Now, if the replication between nodes is slow, it may happen that the
      initialization phase DDL statements have not been received or have not been
      fully applied in node 2. Therefore there is no guarantee that the test tables
      and the stored procedure have been created in node 2. Yet, the test is trying
      to call p1 in node 2.
      
      In the failure case error logs, there is error message
      "MTR failed: query 'reap' failed: 1305: PROCEDURE test.p1 does not exist"
      
      The reap command through connection to node 2, is the first place where test
      execution may observe that test tables and/or stored procedure are not yet
      created in node 2.
      
      The fix in this commit adds a wait condition in connection to node 2, to wait
      until the stored procedure is created before calling the stored procedure.
      The wait is implemented by looking in information_schema.routines for the p1
      stored procedure.
      beb19183
    • Jan Lindström's avatar
      8655d4a2
    • Jan Lindström's avatar
      MDEV-22125 : galera.galera_drop_multi MTR failed: InnoDB: MySQL is trying to... · bf039b91
      Jan Lindström authored
      MDEV-22125 : galera.galera_drop_multi MTR failed: InnoDB: MySQL is trying to drop database `fts`.`` though there are still open handles
      
      MDEV-22140 galera.galera_drop_database MTR failed: InnoDB: MySQL is trying to drop database `fts`.`` though there are still open handles
      
      Add wait conditions to wait that all operations are done in both
      nodes.
      bf039b91
  2. 14 Jun, 2020 1 commit
  3. 16 Jun, 2020 3 commits
  4. 15 Jun, 2020 7 commits
  5. 14 Jun, 2020 21 commits
    • Monty's avatar
      Added checks for uninitalized memory when writing to IO_CACHE · c9f5cb97
      Monty authored
      This was done to be able to track some cases of unallocated memory
      in replication tests reported by MSAN.
      c9f5cb97
    • Monty's avatar
      Created a workaround for a bug in MSAN for va_arg(,double) · e843033d
      Monty authored
      MDEV-22691 MSAN use-of-uninitialized-value in test maria.maria-recovery2
      
      This caused all my_vsnprintf() using doubles to fail.
      Thanks to the workaround, I was able to remove the disabling of
      MSAN in dtoa().
      e843033d
    • Oleksandr Byelkin's avatar
      Fixed hang in Aria page cache with concurrent SELECT · d7a9cdc6
      Oleksandr Byelkin authored
      MDEV-20302 Server hangs upon concurrent SELECT from partitioned S3
      d7a9cdc6
    • Monty's avatar
    • Monty's avatar
    • Monty's avatar
      Fix for crash in Aria LOCK TABLES + CREATE TRIGGER · 56045ef9
      Monty authored
      MDEV-22829 SIGSEGV in _ma_reset_history on LOCK
      56045ef9
    • Monty's avatar
      Fixed typos in aria_read_log · ab7eedc1
      Monty authored
      ab7eedc1
    • Monty's avatar
      BINLOG with LOCK TABLES and SAVEPOINT could cause a crash in debug bin · 654b5931
      Monty authored
      MDEV-22048 Assertion `binlog_table_maps == 0 ||
                 locked_tables_mode == LTM_LOCK_TABLES' failed in
                 THD::reset_for_next_command
      654b5931
    • Monty's avatar
      MDEV-19745 BACKUP STAGE BLOCK_DDL hangs on flush sequence table · 6a3b581b
      Monty authored
      Problem was that FLUSH TABLES where trying to read latest sequence state
      which conflicted with a running ALTER SEQUENCE. Removed the reading
      of the state, when opening a table for FLUSH, as it's not needed in this
      case.
      
      Other thing:
      - Fixed a potential issue with concurrently running ALTER SEQUENCE where
        the later ALTER could potentially read old data
      6a3b581b
    • Monty's avatar
      08d475c7
    • Monty's avatar
      Updated code comments · 1cca8378
      Monty authored
      1cca8378
    • Monty's avatar
      Fixed crash in failing instant alter table with partitioned table · d35616aa
      Monty authored
      MDEV-22649 SIGSEGV in ha_partition::create_partitioning_metadata on ALTER
      MDEV-22804 SIGSEGV in ha_partition::create_partitioning_metadata
      d35616aa
    • Monty's avatar
      Changes needed for ColumnStore and insert cache · 10b88deb
      Monty authored
      MCOL-3875 Columnstore write cache
      
      The main change is to change thr_lock function get_status to
      return a value that indicates we have to abort the lock.
      
      Other thing:
      - Made start_bulk_insert() and end_bulk_insert() protected so that the
        insert cache can use these
      10b88deb
    • Monty's avatar
      Changed some DBUG_PRINT that used error: · 74df3c80
      Monty authored
      The reson for the change was to make it easier to find true errors
      when searching in trace logs.
      "error:" should mainly be used when we have a real error
      74df3c80
    • Monty's avatar
      Fixed access of undefined memory for compressed MyISAM and Aria tables · 96d72945
      Monty authored
      MDEV-22689 MSAN use-of-uninitialized-value in decode_bytes()
      
      This was not a user visible issue as the huffman code lookup tables would
      automatically ignore any of the unitialized bits
      
      Fixed by adding a end-zero byte to the bit-stream buffer.
      
      Other things:
      - Fixed a (for this case) wrong assert in strmov() for myisamchk
        and aria_chk by removing the strmov()
      96d72945
    • Monty's avatar
      Make error messages from DROP TABLE and DROP TABLE IF EXISTS consistent · dfb41fdd
      Monty authored
      - IF EXISTS ends with a list of all not existing object, instead of a
        separate note for every not existing object
      - Produce a "Note" for all wrongly dropped objects
        (like trying to do DROP SEQUENCE for a normal table)
      - Do not write existing tables that could not be dropped to binlog
      
      Other things:
      MDEV-22820 Bogus "Unknown table" warnings produced upon attempt to drop
                 parent table referenced by FK
      This was caused by an older version of this commit patch and later fixed
      dfb41fdd
    • Monty's avatar
      Fixed error messages from DROP VIEW to align with DROP TABLE · 346d10a9
      Monty authored
      - Produce a "Note" for all wrongly dropped objects
        (Like doing DROP VIEW on a table).
      - IF EXISTS ends with a list of all not existing objects, instead of a
        separate note for every not existing object.
      
      Other things:
       - Fixed bug where one could do CREATE TEMPORARY SEQUENCE multiple times
         and create multiple temporary sequences with the same name.
      346d10a9
    • Monty's avatar
      MDEV-11412 Ensure that table is truly dropped when using DROP TABLE · 5bcb1d65
      Monty authored
      The used code is largely based on code from Tencent
      
      The problem is that in some rare cases there may be a conflict between .frm
      files and the files in the storage engine. In this case the DROP TABLE
      was not able to properly drop the table.
      
      Some MariaDB/MySQL forks has solved this by adding a FORCE option to
      DROP TABLE. After some discussion among MariaDB developers, we concluded
      that users expects that DROP TABLE should always work, even if the
      table would not be consistent. There should not be a need to use a
      separate keyword to ensure that the table is really deleted.
      
      The used solution is:
      - If a .frm table doesn't exists, try dropping the table from all storage
        engines.
      - If the .frm table exists but the table does not exist in the engine
        try dropping the table from all storage engines.
      - Update storage engines using many table files (.CVS, MyISAM, Aria) to
        succeed with the drop even if some of the files are missing.
      - Add HTON_AUTOMATIC_DELETE_TABLE to handlerton's where delete_table()
        is not needed and always succeed. This is used by ha_delete_table_force()
        to know which handlers to ignore when trying to drop a table without
        a .frm file.
      
      The disadvantage of this solution is that a DROP TABLE on a non existing
      table will be a bit slower as we have to ask all active storage engines
      if they know anything about the table.
      
      Other things:
      - Added a new flag MY_IGNORE_ENOENT to my_delete() to not give an error
        if the file doesn't exist. This simplifies some of the code.
      - Don't clear thd->error in ha_delete_table() if there was an active
        error. This is a bug fix.
      - handler::delete_table() will not abort if first file doesn't exists.
        This is bug fix to handle the case when a drop table was aborted in
        the middle.
      - Cleaned up mysql_rm_table_no_locks() to ensure that if_exists uses
        same code path as when it's not used.
      - Use non_existing_Table_error() to detect if table didn't exists.
        Old code used different errors tests in different position.
      - Table_triggers_list::drop_all_triggers() now drops trigger file if
        it can't be parsed instead of leaving it hanging around (bug fix)
      - InnoDB doesn't anymore print error about .frm file out of sync with
        InnoDB directory if .frm file does not exists. This change was required
        to be able to try to drop an InnoDB file when .frm doesn't exists.
      - Fixed bug in mi_delete_table() where the .MYD file would not be dropped
        if the .MYI file didn't exists.
      - Fixed memory leak in Mroonga when deleting non existing table
      - Fixed memory leak in Connect when deleting non existing table
      
      Bugs fixed introduced by the original version of this commit:
      MDEV-22826 Presence of Spider prevents tables from being force-deleted from
                 other engines
      5bcb1d65
    • Marko Mäkelä's avatar
      5579c389
    • Marko Mäkelä's avatar
      MDEV-22889: Disable innodb.innodb_force_recovery_rollback · ad5edf3c
      Marko Mäkelä authored
      The test case that was added for MDEV-21217
      (commit b68f1d84)
      should have only two possible outcomes for the locking SELECT statement:
      
      (1) The statement is blocked, and the test will eventually fail
      with a lock wait timeout. This is what I observed when the
      code fix for MDEV-21217 was missing.
      
      (2) The lock conflict will ensure that the statement will execute
      after the rollback has completed, and an empty table will be observed.
      This is the expected outcome with the recovery fix.
      
      What occasionally happens (in some of our CI environments only, so far)
      is that the locking SELECT will return all 1,000 rows of the table that
      had been inserted by the transaction that was never supposed to be
      committed. One possibility is that the transaction was unexpectedly
      committed when the server was killed.
      
      Let us disable the test until the reason of the failure has been
      determined and addressed.
      ad5edf3c
    • Marko Mäkelä's avatar
      Merge 10.4 into 10.5 · 3dbc49f0
      Marko Mäkelä authored
      3dbc49f0
  6. 13 Jun, 2020 5 commits