1. 21 Apr, 2017 10 commits
    • Kristian Nielsen's avatar
      MDEV-12179: Per-engine mysql.gtid_slave_pos table · 3cc89b3e
      Kristian Nielsen authored
      Intermediate commit.
      
      Ignore unknown engines in --gtid-pos-auto-engines command-line options (but
      not SET GLOBAL). This seems useful, to allow a default that auto-creates the
      gtid pos table for engines like TokuDB and MyRocks (which greatly benefit
      from such), but does not prevent server startup when those engines are not
      available.
      3cc89b3e
    • Kristian Nielsen's avatar
      Fix that MTR leaks restart: options to following test · 4eebf431
      Kristian Nielsen authored
      This was found during MDEV-12179 development, but unrelated so put in its
      own commit.
      
      The "restart: --extra-option" facility in expect file for server restart
      sets extra options for the restarted mysqld. These options were incorrectly
      not cleared when starting a new test case, so the server was restarted with
      whatever extra options were left by the previous testcase, causing random
      failures depending on order of running tests.
      4eebf431
    • Kristian Nielsen's avatar
      MDEV-12179: Per-engine mysql.gtid_slave_pos table · 8bc1632e
      Kristian Nielsen authored
      Intermediate commit.
      
      Implement the command-line part of --gtid-pos-auto-engines.
      
      (The option is still not actually used for anything, this will be for
      a later commit).
      8bc1632e
    • Kristian Nielsen's avatar
      MDEV-12179: Per-engine mysql.gtid_slave_pos table · 363d6a16
      Kristian Nielsen authored
      Intermediate commit.
      
      Implement a --gtid-pos-auto-engines system variable. The variable is a list
      of engines for which mysql.gtid_slave_pos_ENGINE should be auto-created if
      needed.
      
      This commit only implements the option variable. It is not yet used to
      actually auto-create any tables, nor is there a corresponding command-line
      version of the option yet.
      363d6a16
    • Kristian Nielsen's avatar
      MDEV-12179: Per-engine mysql.gtid_slave_pos table · 6a84473c
      Kristian Nielsen authored
      Intermediate commit.
      
      This commit implements that record_gtid() selects a gtid_slave_posXXX table
      with a storage engine already in use by current transaction, if any.
      
      The default table mysql.gtid_slave_pos is used if no match can be found on
      storage engine, or for GTID position updates with no specific storage
      engine.
      
      Table discovery of mysql.gtid_slave_pos* happens on initial GTID state load
      as well as on every START SLAVE. Some effort is made to make this possible
      without additional locking. New tables are added using lock-free atomics.
      Removing tables requires stopping all slaves first. A warning is given in
      the error log when a table is removed but a non-stopped slave still has a
      reference to it.
      
      If multiple mysql.gtid_slave_posXXX tables with same storage engine exist,
      one is chosen arbitrarily to be used, with a warning in the error log. GTID
      data from all tables is still read, but only one among redundant tables with
      same storage engine will be updated.
      6a84473c
    • Kristian Nielsen's avatar
      MDEV-12179: Per-engine mysql.gtid_slave_pos table · 3501a535
      Kristian Nielsen authored
      Intermediate commit.
      
      When deleting old GTIDs, only pick those GTIDs that were recorded using the
      same engine.
      
      (Currently this is not used, there is only one table/engine active. This is
      in preparation for extending record_gtid to pick the table with the same
      engine as the active transaction, if any).
      3501a535
    • Kristian Nielsen's avatar
      MDEV-12179: Per-engine mysql.gtid_slave_pos table · c995ecbe
      Kristian Nielsen authored
      Intermediate commit.
      
      For each GTID recorded in mysq.gtid_slave_pos, keep track of which
      engine the update was made in.
      
      This will be later used to know which rows can be deleted in the table
      of a given engine.
      c995ecbe
    • Kristian Nielsen's avatar
      MDEV-12179: Per-engine mysql.gtid_slave_pos table · 087cf023
      Kristian Nielsen authored
      Intermediate commit.
      
      Keep track of which mysql.gtid_slave_posXXX tables are available for each
      engine, by searching for all tables in the mysql schema with names that
      start with "gtid_slave_pos".
      
      The list is computed at server start when the GTID position is loaded, and
      it is re-computed on every START SLAVE command. This way, the DBA can
      manually add a table for a new engine, and it will be automatically picked
      up on next START SLAVE, so a full server restart is not needed.
      
      The list is not yet actually used in the code.
      087cf023
    • Kristian Nielsen's avatar
      MDEV-12179: Per-engine mysql.gtid_slave_pos table · 141a1b09
      Kristian Nielsen authored
      Intermediate commit.
      
      Refactor scan_all_gtid_slave_pos_table() so it can do generic processing on
      the list of mysql.gtid_slave_pos_XXX tables.
      141a1b09
    • Kristian Nielsen's avatar
      MDEV-12179: Per-engine mysql.gtid_slave_pos table. · d3837c69
      Kristian Nielsen authored
      Intermediate commit.
      
      On server start, look for and read all tables mysql.gtid_slave_pos* to
      restore the GTID position.
      
      Simple test case that moves the data to a new
      mysql.gtid_slave_pos_innodb table and verifies that the new table is
      read at server start.
      d3837c69
  2. 04 Apr, 2017 8 commits
  3. 03 Apr, 2017 5 commits
    • Igor Babaev's avatar
      Fixed bug mdev-10454. · 00ab154d
      Igor Babaev authored
      The patch actually fixes the old defect of the optimizer that
      could not extract keys for range access from IN predicates
      with row arguments.
      
      This problem was resolved in the mysql-5.7 code. The patch
      supersedes what was done there:
       - it can build range access when not all components of
       the first row argument are refer to the columns of the table
       for which the range access is constructed.
       - it can use equality predicates to build range access
       to the table that is not referred to in this argument.
      00ab154d
    • Marko Mäkelä's avatar
      MDEV-12428 SIGSEGV in buf_page_decrypt_after_read() during DDL · 9505c968
      Marko Mäkelä authored
      Also, some MDEV-11738/MDEV-11581 post-push fixes.
      
      In MariaDB 10.1, there is no fil_space_t::is_being_truncated field,
      and the predicates fil_space_t::stop_new_ops and fil_space_t::is_stopping()
      are interchangeable. I requested the fil_space_t::is_stopping() to be added
      in the review, but some added checks for fil_space_t::stop_new_ops were
      not replaced with calls to fil_space_t::is_stopping().
      
      buf_page_decrypt_after_read(): In this low-level I/O operation, we must
      look up the tablespace if it exists, even though future I/O operations
      have been blocked on it due to a pending DDL operation, such as DROP TABLE
      or TRUNCATE TABLE or other table-rebuilding operations (ALTER, OPTIMIZE).
      Pass a parameter to fil_space_acquire_low() telling that we are performing
      a low-level I/O operation and the fil_space_t::is_stopping() status should
      be ignored.
      9505c968
    • Sergei Petrunia's avatar
      Merge 10.2 into bb-10.2-mariarocks · 5e0ed691
      Sergei Petrunia authored
      5e0ed691
    • Sergei Petrunia's avatar
      Disable compilation of storage/rocksdb/unittest/test_properties_collector · 5c66eb5c
      Sergei Petrunia authored
      Met additional issues while trying to enable it.
      5c66eb5c
    • Jan Lindström's avatar
      MDEV-11629: Unknown table 'innodb_cmp_per_index_reset' in · c07bb700
      Jan Lindström authored
      information_schema. Added .opt file to enable running this
      test as a part of innodb_zip suite and recorded current
      correct results.
      c07bb700
  4. 02 Apr, 2017 15 commits
  5. 01 Apr, 2017 2 commits
    • Sergei Golubchik's avatar
      include C/C fix for binding of int values to string variables · 238c6700
      Sergei Golubchik authored
      fixes many test failures in optimized builds in --ps-protocol
      238c6700
    • Sergei Golubchik's avatar
      vcol.wrong_arena fails in fulltest · 19059196
      Sergei Golubchik authored
      vcols in the table definition are intentionaly bad and produce
      warnings when a table is opened. In some cases (depending on the
      TDC/TC state as left by earlier tests) a table might be opened in the
      middle of the test, resulting in spurious warnings. Suppress them.
      
      Also, don't run main.mdev-504 for ps-protocol at all (instead of
      disabling ps-protocol inside the test, but still running the test)
      19059196