- 23 Apr, 2017 2 commits
-
-
Kristian Nielsen authored
(Found during MDEV-12179 development, but independent of it, so put into a separate commit).
-
Kristian Nielsen authored
(Found during MDEV-12179 development, but independent of it, so put into a separate commit).
-
- 21 Apr, 2017 17 commits
-
-
Kristian Nielsen authored
Intermediate commit. Update some existing test cases to work with the new handling of mysql.gtid_slave_pos* tables: - The tables are now checked during START SLAVE, which causes some errors or error injections to trigger differently. - Some test cases that play games with renaming or altering the mysql.gtid_slave_pos table need adjustments.
-
Kristian Nielsen authored
Intermediate commit. Fix engine list lifetime for sys_var_pluginlist. The Sys_var class assumes that some operations can be done without explicitly freeing resources, for example default_value_ptr(). Thus, methods (like Sys_var_pluginlist::do_check) need to generally work with temporary lists, which are registered in the THD to be freed/unlocked automatically. And do_update() needs to make a permanent copy to store in the global variable.
-
Kristian Nielsen authored
Intermediate commit. Fix incorrect assertion. The hton in the list of pending GTIDs can be NULL, in the special case where we failed to load the mysql.gtid_slave_pos table at server startup, but nevertheless allow non-GTID replication to proceed.
-
Kristian Nielsen authored
Intermediate commit. .result file updates due to added --gtid-pos-auto-engines sysvar.
-
Kristian Nielsen authored
The mechanism in plugin_lock() et.al. which automatically unlocks plugins unless called with NULL THD is quite subtle, and deserves proper documentation. (This was found during MDEV-12179 development, but is independent of it, and so done in a separate commit).
-
Kristian Nielsen authored
START SLAVE is documented to implicitly commit any active transaction. So do this in a separate connection, to not break the lock on which the test case depends. Found during MDEV-12179 development, but independent of this, so done in a separate commit.
-
Kristian Nielsen authored
Intermediate commit. Implement auto-creation of mysql.gtid_slave_pos* tables with needed engines, if listed in --gtid-pos-auto-engines. Uses an asynchronous approach to minimise locking overhead. The list of available tables is extended with a flag. Extra entries are added for --gtid-pos-auto-engines tables that do not exist yet, marked as not existing but ready for auto-creation. If record_gtid() needs a table marked for auto-creation, it sends a request to the slave background thread to create the table, and continues to use an existing table for the current and immediately coming transactions. As soon as the slave background thread has made the new table available, it will be used for all subsequent relevant transactions in record_gtid(). This asynchronous approach also avoids a lot of complex issues around trying to do DDL in the middle of an on-going transaction.
-
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.
-
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.
-
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).
-
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.
-
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.
-
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).
-
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.
-
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.
-
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.
-
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.
-
- 04 Apr, 2017 8 commits
-
-
Sergei Petrunia authored
-
Vladislav Vaintroub authored
debug build with older cmake. The constant is implicitely defined by VS when chosen C runtime is Debug (/MTd, MDd). CMake does not define it since https://public.kitware.com/Bug/view.php?id=15777 was fixed. We remove it from compile flags, to be able to build Debug with /MT runtime using older cmakes.
-
Sergei Petrunia authored
-
Sergei Petrunia authored
-
Sergei Petrunia authored
-
Sergei Petrunia authored
-
Vladislav Vaintroub authored
Also do not use BUILD_BYPRODUCTS in ExternalPeoject for older cmake
-
Marko Mäkelä authored
-
- 03 Apr, 2017 5 commits
-
-
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.
-
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.
-
Sergei Petrunia authored
-
Sergei Petrunia authored
Met additional issues while trying to enable it.
-
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.
-
- 02 Apr, 2017 8 commits
-
-
Sergei Petrunia authored
- Also rename plugin's config file - And fix unit test's CMakeLists.txt
-
Sergei Petrunia authored
Copy the detection logic from 'rocksdb' test suite, add a note.
-
https://github.com/mariadb/serverVladislav Vaintroub authored
Merge branch 'bb-10.2-mariarocks-wlad' of https://github.com/mariadb/server into bb-10.2-mariarocks-wlad
-
Vladislav Vaintroub authored
-
Vladislav Vaintroub authored
-
Vladislav Vaintroub authored
Default to static release (previously static debug was used in debug builds, but not is appears to be too slow)
-
Vladislav Vaintroub authored
-
Vladislav Vaintroub authored
-