1. 12 Oct, 2021 2 commits
  2. 11 Oct, 2021 1 commit
  3. 06 Oct, 2021 8 commits
  4. 05 Oct, 2021 8 commits
  5. 04 Oct, 2021 7 commits
  6. 03 Oct, 2021 2 commits
    • Vladislav Vaintroub's avatar
      Fix MSVC warning with bison 3.8.2 · d28b118d
      Vladislav Vaintroub authored
      d28b118d
    • Marko Mäkelä's avatar
      MDEV-26720: Optimize single-bit atomic operations on IA-32 and AMD64 · 668a5f3d
      Marko Mäkelä authored
      This is mostly working around a bad compiler optimization.
      
      The Intel 80386 processor introduced some bit operations that would be
      the perfect translation for atomic single-bit read-modify-and-write
      operations. Alas, even the latest compilers as of today
      (GCC 11, clang 13, Microsoft Visual C 19.29) would generate a loop around
      LOCK CMPXCHG instead of emitting the instructions
      LOCK BTS (fetch_or()), LOCK BTR (fetch_and()), LOCK BTC (fetch_xor()).
      
      fil_space_t::clear_closing(): Clear the CLOSING flag.
      
      fil_space_t::set_stopping_check(): Special variant of
      fil_space_t::set_stopping() that will return the old value
      of the STOPPING flag after atomically setting it.
      
      fil_space_t::clear_stopping(): Use fetch_sub() to toggle
      the STOPPING flag. The flag is guaranteed to be set upon
      calling this function, hence we will toggle it to clear it.
      On IA-32 and AMD64, this will translate into
      the 80486 LOCK XADD instruction.
      
      fil_space_t::check_pending_operations(): Replace a Boolean
      variable with a goto label, to allow more compact code
      generation for fil_space_t::set_stopping_check().
      
      trx_rseg_t: Define private accessors ref_set() and ref_reset()
      for setting and clearing the flags.
      
      trx_lock_t::clear_deadlock_victim(), trx_lock_t::set_wsrep_victim():
      Accessors for clearing and setting the flags.
      668a5f3d
  7. 02 Oct, 2021 4 commits
  8. 01 Oct, 2021 2 commits
    • mkaruza's avatar
      MDEV-22708 Assertion `!mysql_bin_log.is_open() ||... · 86a2e2ba
      mkaruza authored
      MDEV-22708 Assertion `!mysql_bin_log.is_open() || thd.is_current_stmt_binlog_format_row()' failed in Delayed_insert::handle_inserts and in Diagnostics_area::set_eof_status
      
      Variable wsrep_forced_binlog_format has higher priority than
      binlog_format. In situation where STATEMENT is used and DELAYED INSERT
      is executing we should fall back to non-delay INSERT.
      Reviewed-by: default avatarJan Lindström <jan.lindstrom@mariadb.com>
      86a2e2ba
    • Daniel Black's avatar
      MDEV-25152: Insert linebreaks in mysqldump --extended-insert · 4930209b
      Daniel Black authored
      Per review by Serg, include start row with new line.
      
      We are hoping we haven't annoyed people that prefered the old
      way.
      
      Adding an option for new lines seems like over-engineering in advance.
      So if there are complaints, let them be known (JIRA), and we'll add
      this under an option.
      
      Test cases updated.
      4930209b
  9. 30 Sep, 2021 6 commits
    • rmfalves's avatar
      MDEV-25152 Insert linebreaks in mysqldump --extended-insert · 586d6a25
      rmfalves authored
      Currently, mysqldump --extended-insert outputs all rows on a single line,
      which makes it difficult to use with various Unix command-line utilities
      such as grep and diff.
      
      We change mysqldump to emit a linebreak between each row, that would make
      it easier to work with, without significantly affecting dump or restore
      performance, or affecting compatibility.
      
      Closes: #1865
      586d6a25
    • mkaruza's avatar
      MDEV-25883 Galera Cluster hangs while "DELETE FROM mysql.wsrep_cluster" · 2f5ae0da
      mkaruza authored
      Using `innodb_thread_concurrency` will call `wsrep_thd_is_aborting` to
      check WSREP thread state. This call should be protected by taking
      `LOCK_thd_data` before entering function.
      Applier and TOI threads should no be affected with usage of
      `innodb_thread_concurrency` variable so returning before any checks.
      Reviewed-by: default avatarJan Lindström <jan.lindstrom@mariadb.com>
      2f5ae0da
    • sjaakola's avatar
      MDEV-24978 crash with transaction on table with no PK and long fulltext column · d5a15f04
      sjaakola authored
      If a table has no unique indexes, write set key information will be collected on all columns in the table.
      The write set key information has space only for max 3500 bytes for individual column, and if a varchar colummn of such non-primary key table is longer than
       this limit, currently a crash follows.
      The fix in this commit, is to truncate key values extracted from such long varhar columns to max 3500 bytes.
      This may potentially lead to false positive certification failures for transactions, which operate on separate cluster nodes, and update/insert/delete table rows, which differ only in the part of such long columns after 3500 bytes border.
      Reviewed-by: default avatarJan Lindström <jan.lindstrom@mariadb.com>
      d5a15f04
    • Marko Mäkelä's avatar
      Merge 10.6 into 10.7 · b36d6f92
      Marko Mäkelä authored
      b36d6f92
    • Marko Mäkelä's avatar
      Merge 10.5 into 10.6 · a49e3943
      Marko Mäkelä authored
      a49e3943
    • Marko Mäkelä's avatar
      MDEV-25215 Excessive logging "InnoDB: Cannot close file" · be803f03
      Marko Mäkelä authored
      In commit 45ed9dd9 (MDEV-23855)
      when removing fil_system.LRU we failed to rate-limit the output
      for reporting violations of innodb_open_files or open_files_limit.
      
      If the server is run with a small limit of open files that is
      well below the number of .ibd files that are being accessed by
      the workload, and if at the same time innodb_log_file_size is
      very small so that log checkpoints will occur frequently,
      the process of enforcing the open files limit may be run very often.
      
      fil_space_t::try_to_close(): Display at most one message per call,
      and only if at least 5 seconds have elapsed since the last time a
      message was output.
      
      fil_node_open_file(): Only output a summary message if
      fil_space_t::try_to_close() displayed a message during this run.
      (Note: multiple threads may execute fil_node_open_file() on
      different files at the same time.)
      
      fil_space_t::get(): Do not dereference a null pointer if n & STOPPING.
      This was caught by the test case below.
      
      Unfortunately, it is not possible to create a fully deterministic
      test case (expecting exactly 1 message to be emitted). The following with
      --innodb-open-files=10 --innodb-log-file-size=4m
      would occasionally fail to find the message in the log:
      
      --source include/have_innodb.inc
      --source include/have_partition.inc
      --source include/have_sequence.inc
      
      call mtr.add_suppression("InnoDB: innodb_open_files=10 is exceeded");
      
      CREATE TABLE t1 (pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=InnoDB
      PARTITION BY key (pk) PARTITIONS 100;
      
      INSERT INTO t1 SELECT * FROM seq_1_to_100;
      --disable_query_log
      let $n=400;
      while ($n)
      {
      BEGIN; DELETE FROM t1; ROLLBACK;
      dec $n;
      }
      --enable_query_log
      
      let SEARCH_FILE= $MYSQLTEST_VARDIR/log/mysqld.1.err;
      let SEARCH_PATTERN= \[Note\] InnoDB: Cannot close file;
      -- source include/search_pattern_in_file.inc
      
      DROP TABLE t1;
      be803f03