- 30 Oct, 2020 6 commits
-
-
Sergei Golubchik authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
Also, revert the work-around for the test that was attempted in commit 85613a32. This issue was caught by MemorySanitizer as well as on the Microsoft Windows debug builds, thanks to /MD being used starting with 10.4. The code fix will also be applied to 10.2 because the regression was introduced in commit afc9d00c.
-
Jan Lindström authored
Disable galera_var_replicate_myisam until fixed on 10.4
-
Jan Lindström authored
-
Daniel Black authored
Corrects: 7803601d
-
- 29 Oct, 2020 16 commits
-
-
Monty authored
This bug was already fixed in a previous commit. Added test case from the MDEV to prove it's fixed.
-
Marko Mäkelä authored
For some reason, in the test main,innodb_ext_key,off we frequently get unexpected EXPLAIN output, in particular on Microsoft Windows debug builders. Let us comment out that EXPLAIN statement for now.
-
Marko Mäkelä authored
Starting with commit ef3f71fa MemorySanitizer would complain that we are writing uninitialized data via the doublewrite buffer. buf_dblwr_t::add_to_batch(): Zero out any unused part of the doublewrite buffer, for PAGE_COMPRESSED and ROW_FORMAT=COMPRESSED tables. Reviewed by: Eugene Kosov
-
Vicențiu Ciorbaru authored
-
Vicențiu Ciorbaru authored
This prevents the clash between NOT_FIXED_DEC differing between server and plugins if MYSQL_SERVER is not defined during plugin compilation.
-
Vicențiu Ciorbaru authored
-
Vicențiu Ciorbaru authored
It's a virtual method and it can't be inlined anyway. This allows type plugins (mysql_json in particular) to use Type_handler_blob and / or subclass it, without needing to explicitly expose the vers_type_timestamp object.
-
Vicențiu Ciorbaru authored
Cleanup other linker errors
-
Vicențiu Ciorbaru authored
-
Marko Mäkelä authored
-
Aleksey Midenkov authored
Additional case for PS protocol: UPDATE is converted to multi-update in mysql_multi_update_prepare().
-
Sergei Golubchik authored
-
Sergei Golubchik authored
-
Marko Mäkelä authored
As part of MDEV-23855, we eliminated fil_system.LRU and changed the way how InnoDB data files are opened. We are also enforcing the innodb_open_files limit when new data files are created. The function fil_space_t::flush() would be invoked by row_quiesce_table_start(). If the table was already in clean state, it is possible that the data file is not open. fil_space_t::flush_low(): If the data file is not open, check with a debug assertion that there are no unflushed changes, and carry on. Reviewed by: Eugene Kosov and Thirunarayanan Balathandayuthapani
-
Marko Mäkelä authored
If and only if read_variable_length() returns true, the variable blob_length will be uninitialized and not used. For some reason, GCC 10.2.0 -Og debug builds would issue a warning.
-
Marko Mäkelä authored
An assertion inadvertently contained an assignment and an implicit comparison to zero. The intention was to test equality.
-
- 28 Oct, 2020 12 commits
-
-
Marko Mäkelä authored
-
Vladislav Vaintroub authored
Tighten access control - deny FILE_CREATE_PIPE_INSTANCE permission to everyone except current user (the one that runs mysqld)
-
Vicențiu Ciorbaru authored
This patch solves two key problems. 1. There is a type number clash between MySQL and MariaDB. The number 245, used for MariaDB Virtual Fields is the same as MySQL's JSON. This leads to corrupt FRM errors if unhandled. The code properly checks frm table version number and if it matches 5.7+ (until 10.0+) it will assume it is dealing with a MySQL table with the JSON datatype. 2. MySQL JSON datatype uses a proprietary format to pack JSON data. The patch introduces a datatype plugin which parses the format and convers it to its string representation. The intended conversion path is to only use the JSON datatype within ALTER TABLE <table> FORCE, to force a table recreate. This happens during mysql_upgrade or via a direct ALTER TABLE <table> FORCE.
-
Vicențiu Ciorbaru authored
Convert the parameter to const as the function won't modify the pointer value.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Teemu Ollakka authored
A wsrep transaction was started for EXECUTE IMMEDIATE, which caused assertion failure when the executed statement was CREATE TABLE which should be executed in TOI mode. As a fix, don't start wsrep transaction for EXECUTE IMMEDIATE to let the wsrep state logic to be handled from inside stored procedure codepath. Reviewed-by: Jan Lindström <jan.lindstrom@mariadb.com>
-
Vladislav Vaintroub authored
This avoids flushing file metadata on NTFS , and writing to <drive>:\$Log file. With heavy write workload this can consume up to 1/3 of the server's IO bandwidth. Reviewed by : Marko
-
Marko Mäkelä authored
-
Marko Mäkelä authored
All relevant InnoDB changes from MySQL 5.7.32 have been applied in preceding commits.
-
Varun Gupta authored
For a correlated subquery filesort is executed multiple times. During each execution, sortlength() computed total sort key length in Sort_keys::sort_length, without resetting it first. Eventually Sort_keys::sort_length got larger than @@sort_buffer_size, which caused filesort() to be aborted with error. Fixed by making sortlength() to compute lengths only during the first invocation. Subsequent invocations return pre-computed values.
-
Daniele Sciascia authored
Fix assertion `thd->in_active_multi_stmt_transaction() || thd->m_transaction_psi == __null' failed on MTR test galera_sr.GCF-1051. Add a new MTR test MDEV-23623 that reproduces the issue deterministically and update wsrep-lib submodule, containing the actual fix. Reviewed-by: Jan Lindström <jan.lindstrom@mariadb.com>
-
- 27 Oct, 2020 6 commits
-
-
Eugene Kosov authored
Patch removes dict_index_t::stats_latch. Table/index statistics now protected with dict_sys->mutex. That way statistics computation can happen in parallel in several threads and dict_sys->mutex will be locked only for a short period of time. This patch is a joint work with Marko Mäkelä dict_index_t::lock: make mutable which allows to pass const pointer when only lock is touched in an object btr_height_get() btr_get_size(): make index argument const for better type safety btr_estimate_number_of_different_key_vals(): now returns computed values instead of setting fields in dict_index_t directly remove everything related to dict_index_t::stats_latch dict_stats_index_set_n_diff(): now returns computed values instead of setting fields in dict_index_t directly dict_stats_analyze_index(): now returns computed values instead of setting fields in dict_index_t directly Reviewed by: Marko Mäkelä
-
Sergei Golubchik authored
-
Anel Husakovic authored
Reviewed-by: wlad@mariadb.com
-
Marko Mäkelä authored
Let us introduce a dummy variable innodb_max_purge_lag_wait for waiting that the InnoDB history list length is below the user-specified limit. Specifically, SET GLOBAL innodb_max_purge_lag_wait=0; should wait for all history to be purged. This could be useful when upgrading from an older version to MariaDB 10.3 or later, to avoid hitting MDEV-15912. Note: the history cannot be purged if there exist transactions that may see old versions. Reviewed by: Vladislav Vaintroub
-
Alexey Botchkov authored
session_track_system_variables and max_relay_log_size. lock LOCK_global_system_variables around the get_one_variable() call in the Session_sysvars_tracker::store_variable().
-
Thirunarayanan Balathandayuthapani authored
MDEV-23693 Failing assertion: my_atomic_load32_explicit(&lock->lock_word, MY_MEMORY_ORDER_RELAXED) == X_LOCK_DECR InnoDB frees the block lock during buffer pool shrinking when other thread is yet to release the block lock. While shrinking the buffer pool, InnoDB allows the page to be freed unless it is buffer fixed. In some cases, InnoDB releases the latch after unfixing the block. Fix: ==== - InnoDB should unfix the block after releases the latch. - Add more assertion to check buffer fix while accessing the page. - Introduced block_hint structure to store buf_block_t pointer and allow accessing the buf_block_t pointer only by passing a functor. It returns original buf_block_t* pointer if it is valid or nullptr if the pointer become stale. - Replace buf_block_is_uncompressed() with buf_pool_t::is_block_pointer() This change is motivated by a change in mysql-5.7.32: mysql/mysql-server@46e60de444a8fbd876cc6778a7e64a1d3426a48d Bug #31036301 ASSERTION FAILURE: SYNC0RW.IC:429:LOCK->LOCK_WORD
-