1. 06 Mar, 2019 8 commits
    • Sergei Golubchik's avatar
      mronga: fix a memory leak · 2b4027e6
      Sergei Golubchik authored
      use the correct delete operator
      
      This fixes mroonga/storage.column_generated_stored_add_column failures
      in ASAN_OPTIONS="abort_on_error=1" runs
      2b4027e6
    • Sergei Golubchik's avatar
      MDEV-18625 ASAN unknown-crash in my_copy_fix_mb /... · 5f105e75
      Sergei Golubchik authored
      MDEV-18625 ASAN unknown-crash in my_copy_fix_mb / ha_mroonga::storage_inplace_alter_table_add_column
      
      disable inplace alter for adding stored generated columns.
      
      This fixes mroonga/storage.column_generated_stored_add_column failures
      in ASAN_OPTIONS="abort_on_error=1" runs
      
      Also, add a test case that shows the bug without ASAN.
      5f105e75
    • Marko Mäkelä's avatar
      Merge 10.1 into 10.2 · c155946c
      Marko Mäkelä authored
      c155946c
    • Alexander Barkov's avatar
      A cleanup for MDEV-18333 Slow_queries count doesn't increase when slow_query_log is turned off · 26f0d72a
      Alexander Barkov authored
      thd->lex->m_sql_cmd was not cleared between queries.
      log_slow_query() could crash (when running mtr --ps) because of this.
      26f0d72a
    • Marko Mäkelä's avatar
      MDEV-18637 Assertion `cache' failed in fts_init_recover_doc · 485dcb07
      Marko Mäkelä authored
      I know no test case for this bug in 10.1. So a test case will be
      committed separately in 10.2
      
      fts_reset_get_doc(): properly initialize fts_get_doc_t::cache
      485dcb07
    • Marko Mäkelä's avatar
      MDEV-18659: Revert a non-functional change · 4b5dc47f
      Marko Mäkelä authored
      fts_fetch_index_words(): Restore the initialization len=0.
      The test innodb_fts.create in 10.2 would end up in an infinite loop
      if this assignment is removed, because a following iteration of the
      while() loop would assign zip->zp->avail_in=len with the original value
      instead of the 0 that was reset in the previous iteration.
      4b5dc47f
    • Marko Mäkelä's avatar
      MDEV-18659: Fix string truncation/overflow in InnoDB and XtraDB · b7612116
      Marko Mäkelä authored
      Fix the warnings issued by GCC 8 -Wstringop-truncation
      and -Wstringop-overflow in InnoDB and XtraDB.
      
      This work is motivated by Jan Lindström. The patch mainly differs
      from his original one as follows:
      
      (1) We remove explicit initialization of stack-allocated string buffers.
      The minimum amount of initialization that is needed is a terminating
      NUL character.
      (2) GCC issues a warning for invoking strncpy(dest, src, sizeof dest)
      because if strlen(src) >= sizeof dest, there would be no terminating
      NUL byte in dest. We avoid this problem by invoking strncpy() with
      a limit that is 1 less than the buffer size, and by always writing
      NUL to the last byte of the buffer.
      (3) We replace strncpy() with memcpy() or strcpy() in those cases
      when the result is functionally equivalent.
      
      Note: fts_fetch_index_words() never deals with len==UNIV_SQL_NULL.
      This was enforced by an assertion that limits the maximum length
      to FTS_MAX_WORD_LEN. Also, the encoding that InnoDB uses for
      the compressed fulltext index is not byte-order agnostic, that is,
      InnoDB data files that use FULLTEXT INDEX are not portable between
      big-endian and little-endian systems.
      b7612116
    • Marko Mäkelä's avatar
      MDEV-18749: Uninitialized value upon ADD FULLTEXT INDEX · b21930fb
      Marko Mäkelä authored
      row_merge_create_fts_sort_index(): Initialize dict_col_t.
      
      This fixes an access to uninitialized dict_col_t::ind when a debug
      assertion in MariaDB 10.4 invokes is_dropped() in
      rec_get_converted_size_comp_prefix_low(). Older MariaDB versions
      seem to be unaffected by the uninitialized values, but it should
      not hurt to initialize everything.
      b21930fb
  2. 05 Mar, 2019 1 commit
  3. 04 Mar, 2019 6 commits
  4. 01 Mar, 2019 9 commits
  5. 28 Feb, 2019 8 commits
  6. 26 Feb, 2019 2 commits
    • Alexander Barkov's avatar
      MDEV-17725 Assertion `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())'... · cac14b92
      Alexander Barkov authored
      MDEV-17725 Assertion `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())' failed in Diagnostics_area::set_ok_status upon ALTER failing due to error from engine
      cac14b92
    • Julius Goryavsky's avatar
      MDEV-9519: Data corruption will happen on the Galera cluster size change · 2c734c98
      Julius Goryavsky authored
      If we have a 2+ node cluster which is replicating from an async master
      and the binlog_format is set to STATEMENT and multi-row inserts are executed
      on a table with an auto_increment column such that values are automatically
      generated by MySQL, then the server node generates wrong auto_increment
      values, which are different from what was generated on the async master.
      
      In the title of the MDEV-9519 it was proposed to ban start slave on a Galera
      if master binlog_format = statement and wsrep_auto_increment_control = 1,
      but the problem can be solved without such a restriction.
      
      The causes and fixes:
      
      1. We need to improve processing of changing the auto-increment values
      after changing the cluster size.
      
      2. If wsrep auto_increment_control switched on during operation of
      the node, then we should immediately update the auto_increment_increment
      and auto_increment_offset global variables, without waiting of the next
      invocation of the wsrep_view_handler_cb() callback. In the current version
      these variables retain its initial values if wsrep_auto_increment_control
      is switched on during operation of the node, which leads to inconsistent
      results on the different nodes in some scenarios.
      
      3. If wsrep auto_increment_control switched off during operation of the node,
      then we must return the original values of the auto_increment_increment and
      auto_increment_offset global variables, as the user has set. To make this
      possible, we need to add a "shadow copies" of these variables (which stores
      the latest values set by the user).
      
      https://jira.mariadb.org/browse/MDEV-9519
      2c734c98
  7. 25 Feb, 2019 1 commit
    • Julius Goryavsky's avatar
      MDEV-9519: Data corruption will happen on the Galera cluster size change · 243f829c
      Julius Goryavsky authored
      If we have a 2+ node cluster which is replicating from an async master
      and the binlog_format is set to STATEMENT and multi-row inserts are executed
      on a table with an auto_increment column such that values are automatically
      generated by MySQL, then the server node generates wrong auto_increment
      values, which are different from what was generated on the async master.
      
      In the title of the MDEV-9519 it was proposed to ban start slave on a Galera
      if master binlog_format = statement and wsrep_auto_increment_control = 1,
      but the problem can be solved without such a restriction.
      
      The causes and fixes:
      
      1. We need to improve processing of changing the auto-increment values
      after changing the cluster size.
      
      2. If wsrep auto_increment_control switched on during operation of
      the node, then we should immediately update the auto_increment_increment
      and auto_increment_offset global variables, without waiting of the next
      invocation of the wsrep_view_handler_cb() callback. In the current version
      these variables retain its initial values if wsrep_auto_increment_control
      is switched on during operation of the node, which leads to inconsistent
      results on the different nodes in some scenarios.
      
      3. If wsrep auto_increment_control switched off during operation of the node,
      then we must return the original values of the auto_increment_increment and
      auto_increment_offset global variables, as the user has set. To make this
      possible, we need to add a "shadow copies" of these variables (which stores
      the latest values set by the user).
      
      https://jira.mariadb.org/browse/MDEV-9519
      243f829c
  8. 23 Feb, 2019 4 commits
  9. 22 Feb, 2019 1 commit
    • Marko Mäkelä's avatar
      MDEV-10813: Update buf_page_t::buf_fix_count outside mutex · 2c8d9a4e
      Marko Mäkelä authored
      Since MySQL 5.6.16 (and MariaDB Server 10.0.11), changes of
      buf_page_t::buf_fix_count are atomic memory operations if
      PAGE_ATOMIC_REF_COUNT is defined. Since MySQL 5.7
      (and MariaDB Server 10.2.2), the field is always updated
      by atomic memory operations.
      
      In a few occurrences, updates of the counter were unnecessarily
      surrounded by an acquisition and release of the block mutex
      (buf_block_t::mutex or buf_pool_t::zip_mutex). Remove these
      unnecessary mutex operations.
      2c8d9a4e