- 12 Dec, 2017 10 commits
-
-
Aleksey Midenkov authored
-
Monty authored
The problem was that multi_range_read_info_const() called multi_range_key_create_key() which changed m_part_spec.start_part, while there was an activ table scan ongoing. Fixed by copying and restoring m_part_spec around multi_range_key_create_calls()
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Sergei Petrunia authored
Part #2: Take into accont the fact that three binary collations that we handle are technically NOPAD collations
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Varun Gupta authored
-
- 11 Dec, 2017 12 commits
-
-
Sergei Petrunia authored
Disallow use of NOPAD collations in indexed columns.
-
Vladislav Vaintroub authored
first, and we do not not care whether client has received all data. This is a TCP optimization to avoid TIME_WAIT in TCP connection teardown. This patch would abort connection on timeout, which usually happens when client reads a large result set, at slower pace then the server can write. The patch also cleans up socket timeout handling, so that Windows is consistent with another platforms (using nonblocking socket IO + waiting in poll/select on single socket, rather than setsockopt). This makes identifying timeouts easier. Also removed the superficial shutdown() before closesocket() in a few places where it was used, because it was never needed , and reportedly breaks SO_LINGER on Windows.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
When the transaction isolation level is SERIALIZABLE, or when a locking read is performed in the REPEATABLE READ isolation level, InnoDB must lock delete-marked records in order to prevent another transaction from inserting something. However, at READ UNCOMMITTED or READ COMMITTED isolation level or when the parameter innodb_locks_unsafe_for_binlog is set, the repeatability of the reads does not matter, and there is no need to lock any records. row_search_mvcc(): Skip locks on delete-marked committed records upfront, instead of invoking row_unlock_for_mysql() afterwards. The unlocking never worked for secondary index records.
-
Marko Mäkelä authored
dict_stats_rename_table(): After DB_LOCK_WAIT_TIMEOUT or DB_DUPLICATE_KEY, reset the trx->error_state before retrying. Also, properly treat DB_DEADLOCK as a hard error.
-
Marko Mäkelä authored
-
Sergei Petrunia authored
Part #2: Adjust other parts of testsuite to take into account that RocksDB files are in "#rocksdb" now.
-
Sergei Petrunia authored
Part2: make MyRocks add its directory into @@ignore_db_dirs when starting. This is necessary because apparently not everybody are using plugin's my.cnf So load ha_rocksdb.{so,dll} manually and then hit MDEV-12451, MDEV-14461 etc.
-
Sergei Petrunia authored
Rename Use '#rocksdb' instead of '.rocksdb' as subdirectory for RocksDB datadir.
-
Marko Mäkelä authored
MDEV-14614 InnoDB: Failing assertion: trx->error_state == DB_SUCCESS or lock wait timeout upon saving statistics The assertion failure was caused by MDEV-14511 Use fewer transactions for updating InnoDB persistent statistics We are reusing a transaction object after commit, and sometimes, even after a successful operation, the trx_t::error_state may be something else than DB_SUCCESS. Reset the field when needed.
-
Marko Mäkelä authored
-
- 10 Dec, 2017 1 commit
-
-
Varun Gupta authored
commit 6d63a034 MDEV-11297: Add support for LIMIT clause in GROUP_CONCAT()
-
- 09 Dec, 2017 1 commit
-
-
Vesa Pentti authored
* Note: breaking change; since this commit, a plugin that has worked so far might get rejected due to plugin maturity * mariabackup is not affected (allows all plugins) * VERSION file defines SERVER_MATURITY, which defines the corresponding numeric value as SERVER_MATURITY_LEVEL in include/mysql_version.h * The default value for 'plugin_maturity' is SERVER_MATURITY_LEVEL - 1 * Logs a warning if a plugin has maturity lower than SERVER_MATURITY_LEVEL * Tests suppress the plugin maturity warning * Tests use --plugin-maturity=unknown by default so as not to fail due to the stricter plugin maturity handling
-
- 08 Dec, 2017 16 commits
-
-
Sergey Vojtovich authored
-
Marko Mäkelä authored
Before MySQL 5.7 or MariaDB 10.2.2, there used to be some magic InnoDB table names that would assign some InnoDB flags on CREATE TABLE or DROP TABLE.
-
Marko Mäkelä authored
Starting with MySQL 5.7 (or MariaDB 10.2.2) InnoDB no longer contains the "table monitor" or "tablespace monitor". The conditions on srv_print_innodb_tablespace_monitor, srv_print_innodb_table_monitor never hold. So, the code was dead. Also, remove a bogus reference to dict_print(), which used to implement the InnoDB table monitor.
-
Marko Mäkelä authored
fil_get_space_names(): Remove. fts_drop_orphaned_tables(): Iterate fil_system->space_list directly.
-
Marko Mäkelä authored
-
Sergey Vojtovich authored
-
Sergey Vojtovich authored
Relax memory barrier for lock_word. rw_lock_lock_word_decr() - used to acquire rw-lock, thus we only need to issue ACQUIRE when we succeed locking. rw_lock_x_lock_func_nowait() - same as above, but used to attempt to acquire X-lock. rw_lock_s_unlock_func() - used to release S-lock, RELEASE is what we need here. rw_lock_x_unlock_func() - used to release X-lock. Ideally we'd need only RELEASE here, but due to mess with waiters (they must be loaded after lock_word is stored) we have to issue both ACQUIRE and RELEASE. rw_lock_sx_unlock_func() - same as above, but used to release SX-lock. rw_lock_s_lock_spin(), rw_lock_x_lock_func(), rw_lock_sx_lock_func() - fetch-and-store to waiters has to issue only ACQUIRE memory barrier, so that waiters are stored before lock_word is loaded. Note that there is violation of RELEASE-ACQUIRE protocol here, because we do on lock: my_atomic_fas32_explicit((int32*) &lock->waiters, 1, MY_MEMORY_ORDER_ACQUIRE); my_atomic_load32_explicit(&lock->lock_word, MY_MEMORY_ORDER_RELAXED); on unlock my_atomic_add32_explicit(&lock->lock_word, X_LOCK_DECR, MY_MEMORY_ORDER_ACQ_REL); my_atomic_load32_explicit((int32*) &lock->waiters, MY_MEMORY_ORDER_RELAXED); That is we kind of synchronize ACQUIRE on lock_word with ACQUIRE on waiters. It was there before this patch. Simple fix may have negative performance impact. Proper fix requires refactoring of lock_word.
-
Sergey Vojtovich authored
Relax memory barrier for waiters: these 2 stores must be completed before os_event_set() finishes. This is guaranteed by RELEASE barrier issued by mutex.exit() of os_event_set().
-
Sergey Vojtovich authored
Remove volatile modifier from waiters: it's not supposed for inter-thread communication, use appropriate atomic operations instead. Changed waiters to int32_t, my_atomic friendly type.
-
Sergey Vojtovich authored
Remove volatile modifier from lock_word: it's not supposed for inter-thread communication, use appropriate atomic operations instead.
-
Sergey Vojtovich authored
Change lock_word from lint to int32_t: the latter is my_atomic_* friendly type.
-
Vladislav Vaintroub authored
-
Monty authored
- Changed rocksdb.2pcgroup_commit.test to print information on error - Updated myisam_views-big.result
-
Monty authored
LOCK_thd_data was used to protect both THD data and ensure that the THD is not deleted while it was in use This patch moves the THD delete protection to LOCK_thd_kill, which already protects the THD for kill. The benefits are: - More well defined what LOCK_thd_data protects - LOCK_thd_data usage is now much simpler and easier to verify - Less chance of deadlocks in SHOW PROCESS LIST as there is less chance of interactions between mutexes - Remove not needed LOCK_thread_count from thd_get_error_context_description() - Fewer mutex taken for thd->awake() Other things: - Don't take mysys->var mutex in show processlist to check if thread is kill marked - thd->awake() now automatically takes the LOCK_thd_kill mutex (Simplifies code) - Apc uses LOCK_thd_kill instead of LOCK_thd_data
-
Monty authored
-
Monty authored
This will allow show processlist to continue, without blocking all new connections, if some threads gets stuck while holding LOCK_thd_data or mysys_var->mutex Connections that has mutex 'stuck' are marked as 'Busy' in 'Command' Todo: Make F_BACKOFF to do 'pause' instead of just (1)
-