- 07 Jul, 2018 2 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
The parameter innodb_lock_schedule_algorithm was introduced in MariaDB Server 10.1.19, 10.2.13, 10.3.4 as part of MDEV-11039. In MariaDB 10.1, the default value of the parameter is 'fcfs', that is, the existing algorithm is used by default. But in later versions of MariaDB Server, the parameter was 'vats', enabling the new algorithm. Because the new algorithm is triggering a debug assertion failure that suggests corruption of the transactional lock data structures, we will revert to the old algorithm by default until we have resolved the problem.
-
- 06 Jul, 2018 3 commits
-
-
Marko Mäkelä authored
-
Thirunarayanan Balathandayuthapani authored
Problem: ======== Truncate operation holds MDL on the table (t1) and tries to acquire InnoDB dict_operation_lock. Purge holds dict_operation_lock and tries to acquire MDL on the table (t1) to evaluate virtual column expressions for indexed virtual columns. It leads to deadlock of purge and truncate table (DDL). Solution: ========= If purge tries to acquire MDL on the table then it should do the following: i) Purge should release all innodb latches (including dict_operation_lock) before acquiring metadata lock on the table. ii) After acquiring metadata lock on the table, it should check whether the table was dropped or renamed. If the table is dropped then purge should ignore the undo log record. If the table is renamed then it should release the old MDL and acquire MDL on the new name. iii) Once purge acquires MDL, it should use the SQL table handle for all the remaining virtual index for the purge record. purge_node_t: Introduce new virtual column information to know whether the MDL was acquired successfully. This is joint work with Marko Mäkelä.
-
Marko Mäkelä authored
Add an explicit redo log flush. In this test innodb_flush_log_at_trx_commit was 2 by default. It is also possible that this failure occurs because of MDEV-15740.
-
- 05 Jul, 2018 7 commits
-
-
Igor Babaev authored
1. The changed variant did not fail without the patch for MDEV-16629 while the original test case did fail. 2. In any case the test case should go to cte_recursive_not_embedded.test that was not created yet.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
At the end of a test, 'connection default' should be in a usable state. This was not the case, because there was a preceding 'send' without a 'reap'. If 'reap' was added, an error would be reported because the server was restarted after the 'send'. It is easiest to 'send' from a separate connection and do the restart from 'connection default'.
-
Thirunarayanan Balathandayuthapani authored
Make dict_table_t::n_ref_count private, and protect it with a combination of dict_sys->mutex and atomics. We want to be able to invoke dict_table_t::release() without holding dict_sys->mutex.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Igor Babaev authored
When processing a query containing with clauses a call of the function check_dependencies_in_with_clauses() before opening tables used in the query is necessary if with clauses include specifications of recursive CTEs. This call was missing if such a query belonged to a stored function. This caused misbehavior of the server: it could report a fake error as in the test case for MDEV-16629 or the executed query could hang as in the test cases for MDEV-16661 and MDEV-15151.
-
- 03 Jul, 2018 4 commits
-
-
Marko Mäkelä authored
In InnoDB, an INSERT will not create an explicit lock object. Instead, the inserted record is initially implicitly locked by the transaction that wrote its trx_t::id to the hidden system column DB_TRX_ID. (Other transactions would check if DB_TRX_ID is referring to a transaction that has not been committed.) If a record was inserted in the current transaction, it would be implicitly locked by that transaction. Only if some other transaction is requesting access to the record, the implicit lock should be converted to an explicit one, so that the waits-for graph can be constructed for detecting deadlocks and lock wait timeouts. Before this fix, InnoDB would convert implicit locks to explicit ones, even if no conflict exists. lock_rec_convert_impl_to_expl(): Return whether caller_trx already holds an explicit lock that covers the record. row_vers_impl_x_locked_low(): Avoid a lookup if the record matches caller_trx->id. lock_trx_has_expl_x_lock(): Renamed from lock_trx_has_rec_x_lock(). row_upd_clust_step(): In a debug assertion, check for implicit lock before invoking lock_trx_has_expl_x_lock(). rw_trx_hash_t::find(): Make do_ref_count a mandatory parameter. Assert that trx_id is not 0 (the caller should check it). trx_sys_t::is_registered(): Only invoke find() if id != 0. trx_sys_t::find(): Add the optional parameter do_ref_count. lock_rec_queue_validate(): Avoid lookup for trx_id == 0.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Daniel Bartholomew authored
-
- 02 Jul, 2018 6 commits
-
-
Vladislav Vaintroub authored
Marko mentions, it could be caused by MDEV-15740 where InnoDB does not flush redo log as often as it should, with innodb_flush_log_at_trx_commit=1 The workaround is to use innodb_flush_log_at_trx_commit=2, which, according to MDEV-15740 is more durable.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
For some reason, some of these suppressions would fail to suppress when the code is compiled with clang 6.0, Debug and -DWITH_ASAN=ON. Possibly it is related to the number of .* or the length of the regular expression strings.
-
Marko Mäkelä authored
Before attempting to create an index, copy any fields from dict_table_t, because the table would be freed after a failed index creation.
-
Sergei Golubchik authored
-
Thirunarayanan Balathandayuthapani authored
NULL values when there is no DEFAULT - Merged the alter_non_null test case to alter_not_null test case. Renamed the alter_non_null_debug to alter_not_null_debug test case
-
- 01 Jul, 2018 4 commits
-
-
Anel Husakovic authored
One can create table with the same name for `field` and `table` `check` constraint. For example: `create table t(a int check(a>0), constraint a check(a>10));` But when inserting new rows same error is always raised. For example with ```insert into t values (-1);``` and ```insert into t values (10);``` same error `ER_CONSTRAINT_FAILED` is obtained and it is not clear which constraint is violated. This patch solve this error so that in case if field constraint is violated the first parameter in the error message is `table.field_name` and if table constraint is violated the first parameter in error message is `constraint_name`.
-
Sergei Golubchik authored
-
Sergei Golubchik authored
Correct 898a8c3c to work when newer debhelper-10.2 is installed from xenial-backports (or jessie-backports). Use gcc version instead of debproxy version, this is likely a gcc issue (as disabling LTO and gcc's linker plugin fixes it).
-
Vladislav Vaintroub authored
use OPEN_ALWAYS instead, since we know file already exist.
-
- 30 Jun, 2018 9 commits
-
-
Elena Stepanova authored
-
Sergei Golubchik authored
-
Aleksey Midenkov authored
* ignore CHECK constraint for historical rows; * FOREIGN KEY test case. TODO: MDEV-16301 IB: use real table name for error messages on ALTER Closes tempesta-tech/mariadb#491 Closes #748
-
Eugene Kosov authored
MDEV-15947 ASAN heap-use-after-free in Item_ident::print or in my_strcasecmp_utf8 or unexpected ER_BAD_FIELD_ERROR upon call of stored procedure reading from versioned table Closes #728
-
Eugene Kosov authored
MDEV-15645 Assertion `table->insert_values' failed in write_record upon REPLACE into a view with underlying versioned table Right temporary storage for system versioning operations is table->record[2], not table->insert_values Closes #712
-
Sergei Golubchik authored
RBR not versioned -> versioned do it for all write_row events, not only for WRITE_ROWS_EVENT_V1
-
Sergei Golubchik authored
-
Vladislav Vaintroub authored
Disks with native 4K sectors need 4K alignment and size for unbuffered IO (i.e for files opened with FILE_FLAG_NO_BUFFERING) Innodb opens redo log with FILE_FLAG_NO_BUFFERING, however it always does 512byte IOs. Thus, the IO on 4K native sectors will fail, rendering Innodb non-functional. The fix is to check whether OS_FILE_LOG_BLOCK_SIZE is multiple of logical sector size, and if it is not, reopen the redo log without FILE_FLAG_NO_BUFFERING flag.
-
Vicențiu Ciorbaru authored
-
- 29 Jun, 2018 5 commits
-
-
Otto Kekäläinen authored
Building this plugin which requires run-time access to network, uses a lot of disk space and is slow was already partially disabled. This way we also ensure that on cmake level it never runs even if it out of some autodetection reason at times thought it could run. This fixes the error message: fatal: unable to access 'https://github.com/awslabs/aws-sdk-cpp.git/': Problem with the SSL CA cert (path? access rights?)
-
Otto Kekäläinen authored
Fixes errors on Travis like: cp: error writing debian/libmariadbd19//usr/lib/x86_64-linux-gnu/ libmariadbd.so.19: No space left on device
-
Otto Kekäläinen authored
This complements commit ecb0e0ad that disabled a bunch of plugins from being built on Travis-CI (due to time and disk space saving reasons). When the plugins are not built, the packaging phase will fail due to missing files. This change omits the files from packaging to the process can complete successfully.
-
Teodor Mircea Ionita authored
-
Teodor Mircea Ionita authored
-