1. 16 Mar, 2019 1 commit
    • Daniel Black's avatar
      MDEV-18946: innodb: buffer_pool - unallocate large pages requires size · 8678a105
      Daniel Black authored
      MDEV-10814 introduce a bug where the size argument to
      deallocate_large was passed true, evaluating to 1, as the size.
      
      When this is passed to munmap this resulted in EINVAL and the
      page not being released. This only occured the buf_pool_free_instance
      when called on shutdown so no impact as the process termination
      correctly frees the memory.
      8678a105
  2. 13 Mar, 2019 1 commit
  3. 12 Mar, 2019 9 commits
    • Marko Mäkelä's avatar
      MDEV-18878: After-merge fixes · 69b33fca
      Marko Mäkelä authored
      In 10.3, all records will be processed by purge due to MDEV-12288.
      But, the insert undo records do not contain a transaction identifier.
      
      row_purge_parse_undo_rec(): Use node->trx_id=TRX_ID_MAX for the
      insert undo records. We cannot skip table lookups for these records
      after DISCARD TABLESPACE other than by 'detaching' the table from
      the undo logs by updating SYS_TABLES.ID on both DISCARD TABLESPACE
      and IMPORT TABLESPACE.
      
      Also, remove a redundant condition that was introduced
      in the merge commit 814205f3.
      69b33fca
    • Marko Mäkelä's avatar
      Merge 10.2 into 10.3 · b32bc70e
      Marko Mäkelä authored
      b32bc70e
    • Marko Mäkelä's avatar
      Add an end-of-tests marker to ease merges · f72760df
      Marko Mäkelä authored
      f72760df
    • Marko Mäkelä's avatar
      MDEV-18902 Uninitialized variable in recv_parse_log_recs() · bef947b4
      Marko Mäkelä authored
      recv_parse_log_recs(): Do not compare type if ptr==end_ptr
      (we have reached the end of the redo log parsing buffer),
      because it will not have been correctly initialized in that case.
      bef947b4
    • Marko Mäkelä's avatar
      MDEV-18878: Fix GCC -flifetime-dse · e070cfe3
      Marko Mäkelä authored
      GCC 6 and later can optimize away the memset() that is part of
      mem_heap_zalloc() in a placement new call. So, instead of relying
      on that kind of initialization, explicitly initialize the necessary
      fields in the constructors.
      
      que_common_t::que_common_t(): Initialize more fields in the
      default constructor.
      
      purge_vcol_info_t::purge_vcol_info_t(): Initialize all fields in
      the default constructor.
      
      purge_node_t::purge_node_t(): Initialize all necessary fields.
      
      Reference:
      
          https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71388
      
          https://gcc.gnu.org/ml/gcc/2016-02/msg00207.html
      e070cfe3
    • Marko Mäkelä's avatar
      Merge 10.1 into 10.2 · e374755b
      Marko Mäkelä authored
      e374755b
    • Marko Mäkelä's avatar
      MDEV-18749: Fix GCC -flifetime-dse · 32de60bb
      Marko Mäkelä authored
      row_merge_create_fts_sort_index(): Initialize dict_col_t in
      an unambiguous way. GCC 6 and later appear to be able to optimize
      away the memset() that is part of mem_heap_zalloc() in the
      placement new call. Let us avoid using placement new in order
      to ensure that the objects will actually be initialized.
      
      https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71388
      
      https://gcc.gnu.org/ml/gcc/2016-02/msg00207.html
      
      While the latter reference hints that the optimization is only
      applicable to non-POD types (and dict_col_t does not define
      any member functions before 10.2), it is most consistent to
      use the same initialization across all versions.
      32de60bb
    • Sergei Golubchik's avatar
      MDEV-17070 Table corruption or Assertion `table->file->stats.records > 0 ||... · 69abd437
      Sergei Golubchik authored
      MDEV-17070 Table corruption or Assertion `table->file->stats.records > 0 || error' or Assertion `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())' failed upon actions on temporary table
      
      This was caused by a combination of factors:
      * MyISAM/Aria temporary tables historically never saved the state
        to disk (MYI/MAI), because the state never needed to persist
      * certain ALTER TABLE operations modify the original TABLE structure
        and if they fail, the original table has to be reopened to
        revert all changes (m_needs_reopen=1)
      
      as a result, when ALTER fails and MyISAM/Aria temp table gets reopened,
      it reads the stale state from the disk.
      
      As a fix, MyISAM/Aria tables now *always* write the state to disk
      on close, *unless* HA_EXTRA_PREPARE_FOR_DROP was done first. And
      the server now always does HA_EXTRA_PREPARE_FOR_DROP before dropping
      a temporary table.
      69abd437
    • Sergei Golubchik's avatar
      7025a51a
  4. 11 Mar, 2019 12 commits
    • Alexey Botchkov's avatar
      MDEV-18886 JSON_ARRAY() does not recognise JSON argument. · acb4a872
      Alexey Botchkov authored
      JSON_ARRAY and JSON_OBJECT functions with no arguments now get the
      connection charset. Item_func_convert_charset returns the correct
      is_json() flag.
      acb4a872
    • Sergey Vojtovich's avatar
      ea52ecbc
    • Sergey Vojtovich's avatar
      MDEV-17595 - ALTER TABLE ADD FOREIGN KEY crash · 149b7547
      Sergey Vojtovich authored
      ALTER TABLE ... ADD FOREIGN KEY may trigger assertion failure when
      it has LOCK=EXCLUSIVE clause or concurrent FLUSH TABLES is being
      executed.
      
      In both cases being altered table is marked as flushed, which forces
      subsequent attempt to open parent table to re-open. Which in turn is
      not allowed while transaction is running.
      
      Rather than opening parent table, just take appropriate MDL lock.
      
      Also removed table_already_fk_prelocked() check: MDL itself has much
      better methods to handle duplicate locks. E.g. the former won't acquire
      MDL_SHARED_NO_WRITE if it already has MDL_SHARED_READ.
      149b7547
    • Monty's avatar
      Fixed memory leak in mysqltest · f010c908
      Monty authored
      read_command_buf was not freed at exit, which could cause a warning from
      valgrind
      f010c908
    • Marko Mäkelä's avatar
      Merge 10.2 into 10.3 · 814205f3
      Marko Mäkelä authored
      814205f3
    • Marko Mäkelä's avatar
      MDEV-18878: Correct a condition · 28e713dc
      Marko Mäkelä authored
      Initialize node->trx_id before checking if a table can be skipped.
      28e713dc
    • Marko Mäkelä's avatar
      Try to address MDEV-17745 · 21975280
      Marko Mäkelä authored
      wait_all_purged.inc: Wait for 60 seconds instead of 30 seconds.
      Purge can be slow on buildbot, especially in ASAN-instrumented builds.
      21975280
    • Marko Mäkelä's avatar
      MDEV-18878: Slimmer purge in non-debug builds · 6e767046
      Marko Mäkelä authored
      purge_node_t::in_progress: Replaces purge_node_t::done.
      Only present in debug builds.
      
      purge_node_t::start(): Moved from the start of row_purge_step().
      
      purge_node_t::end(): Replaces row_purge_end().
      
      trx_purge_attach_undo_recs(): Omit a check from non-debug builds.
      6e767046
    • Marko Mäkelä's avatar
      MDEV-18878 Purge: Optimize away futile table lookups · 1ab049e5
      Marko Mäkelä authored
      If a table has been dropped, rebuilt, or its tablespace has been
      discarded or the table is corrupted, it does not make sense to
      look up that table again while purging old undo log records.
      
      purge_node_t::purge_node_t(): Replaces row_purge_node_create().
      
      que_common_t::que_common_t(): Constructor.
      
      row_import_update_index_root(): Remove the constant parameter
      dict_locked=true, and update the table->def_trx_id in the cache.
      
      purge_node_t::unavailable_table_id: The latest unavailable table ID,
      to avoid future lookups.
      
      purge_node_t::def_trx_id: The latest modification of the table
      identified by unavailable_table_id, or TRX_ID_MAX.
      
      purge_node_t::is_skipped(): Determine if a table should be skipped.
      
      purge_node_t::skip(): Note that a table should be skipped.
      1ab049e5
    • Marko Mäkelä's avatar
      Merge 10.1 into 10.2 · 3ea49d35
      Marko Mäkelä authored
      3ea49d35
    • Eugene Kosov's avatar
      MDEV-17703 Add WITH_UBSAN switch to CMake similar to WITH_ASAN · 2a2ab121
      Eugene Kosov authored
      This can be useful:
      UBSAN_OPTIONS=log_path=/some/path
      
      clang users may want to increase stack size in include/my_pthread.h or enable
      some optimizations
      2a2ab121
    • Marko Mäkelä's avatar
      Clean up mysql-test/suite/galera/disabled.def again · 04150218
      Marko Mäkelä authored
      Clean up after commit 0957d257
      which introduced some disorder (unsorted or duplicated test names).
      04150218
  5. 09 Mar, 2019 6 commits
  6. 08 Mar, 2019 7 commits
    • Marko Mäkelä's avatar
      Merge 10.2 into 10.3 · 89b463ee
      Marko Mäkelä authored
      89b463ee
    • Marko Mäkelä's avatar
      Merge 10.1 into 10.2 · ab7e2b04
      Marko Mäkelä authored
      ab7e2b04
    • Marko Mäkelä's avatar
      Disable regularly failing Galera tests · 6567636b
      Marko Mäkelä authored
      galera.partition and galera.galera_binlog_stmt_autoinc regularly display
      mismatching values for AUTO_INCREMENT columns.
      
      galera.MW-336 often times out while waiting for something in PROCESSLIST.
      
      Also, sort the test names, remove the redundant "galera." prefix and
      fix typos in 2 test names.
      6567636b
    • Oleksandr Byelkin's avatar
      Fix of PS after merge from 10.2. · 6740b292
      Oleksandr Byelkin authored
      TVC uses derived as singlatable calls
      6740b292
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-18855 Mariabackup should fetch innodb_compression_level from running server · d038806d
      Thirunarayanan Balathandayuthapani authored
      - Fetch innodb_compression_level from the running server.Add the value
      of innodb_compression_level in backup-my.cnf file during backup phase.
      So that prepare can use the innodb_compression_level variable from
      backup-my.cnf
      d038806d
    • Marko Mäkelä's avatar
      Give ASAN some more stack · 94eb56fb
      Marko Mäkelä authored
      When compiling CMAKE_BUILD_TYPE=Debug WITH_ASAN using clang-7 -O2
      the following tests could fail due to insufficient stack size:
      main.signal_demo3 sys_vars.max_sp_recursion_depth_func
      94eb56fb
    • Marko Mäkelä's avatar
      MDEV-13818: Revert an incorrect change · 136d21c8
      Marko Mäkelä authored
      In commit d30f17af the change of
      the loop iteration broke another error handling path that did
      "goto error_handling_drop_uncached". Cover this code path with
      fault injection, and revert to the correct iteration.
      
      There are two fault injection labels innodb_OOM_prepare_inplace_alter.
      Their order was swapped in MDEV-11369, so that the label that used
      to be covered in an ADD INDEX code path would become unreachable
      because the label that is executed for any ALTER TABLE was executed
      first. Let us introduce the label innodb_OOM_prepare_add_index
      for the more specific case.
      136d21c8
  7. 07 Mar, 2019 4 commits