- 24 Jul, 2018 3 commits
-
-
Alexander Barkov authored
-
Alexander Barkov authored
-
Alexander Barkov authored
Field_varstring::sql_type() did not calculate character length correctly. Using char_length() instead of the bad code.
-
- 23 Jul, 2018 10 commits
-
-
Jacob Mathew authored
The problem occurs on Ubuntu where a Spider package is installed on the system separately from the MariaDB package. MariaDB and Spider upgrades leave the Spider plugin improperly installed. Spider is present in the mysql.plugin table but is not present in information_schema. The problem has been corrected in Spider's installation script. Logic has been added to check for Spider entries in both information_schema and mysql.plugin. If Spider is present in mysql.plugin but is not present in information_schema, then Spider is first removed from mysql.plugin. The subsequent plugin install of Spider will insert entries in both mysql.plugin and information_schema. Author: Jacob Mathew. Reviewer: Kentoku Shiba. Cherry-Picked: Commit 0897d81 on branch bb-10.3-MDEV-15786
-
Jacob Mathew authored
The problem occurs on Ubuntu where a Spider package is installed on the system separately from the MariaDB package. MariaDB and Spider upgrades leave the Spider plugin improperly installed. Spider is present in the mysql.plugin table but is not present in information_schema. The problem has been corrected in Spider's installation script. Logic has been added to check for Spider entries in both information_schema and mysql.plugin. If Spider is present in mysql.plugin but is not present in information_schema, then Spider is first removed from mysql.plugin. The subsequent plugin install of Spider will insert entries in both mysql.plugin and information_schema. Author: Jacob Mathew. Reviewer: Kentoku Shiba. Cherry-Picked: Commit 0897d81 on branch bb-10.3-MDEV-15786
-
Marko Mäkelä authored
-
Marko Mäkelä authored
This helped fix MDEV-16779.
-
Marko Mäkelä authored
Declare all fields of purge_vcol_info_t private, and add accessor functions.
-
Marko Mäkelä authored
During a table-rebuilding operation, the function table_name_parse() can encounter a table name that starts with #sql. Here is an example of a failure: CURRENT_TEST: gcol.innodb_virtual_basic mysqltest: At line 1204: query 'alter table t drop column d ' failed: 2013: Lost connection to MySQL server during query Let us just remove these bogus debug assertions. If the final renaming phase during ALTER TABLE never fails, it should not do any harm to skip the purge. If it does fail, then we might end up 'leaking' some delete-marked records in the indexes on virtual columns of the original table, and these garbage records would keep consuming space until the indexes are dropped or the table is successfully rebuilt.
-
Thirunarayanan Balathandayuthapani authored
This is a regression caused by the fix of MDEV-15855. purge_vcol_info_t::set_used(): Add a missing condition. row_purge_poss_sec(): Invoke set_used() in order to have !is_first_fetch() when retrying.
-
Marko Mäkelä authored
This should affect at least rec_printer() output.
-
Marko Mäkelä authored
Replace pairs of rw_lock_own() calls with calls to rw_lock_own_flagged(). These calls are only present in debug builds.
-
Marko Mäkelä authored
There is only one temporary tablespace. Reserving a data member in each read-write lock object for a Boolean flag seems like a huge waste, especially because this field was only actually used in debug builds. LatchDebug::check_order(): Compare to fil_system.temp_space->latch.
-
- 21 Jul, 2018 1 commit
-
-
Igor Babaev authored
-
- 18 Jul, 2018 1 commit
-
-
Sachin authored
as a separate source for data Actually MDEV-15867 and MDEV-16192 are same, Slave adds "or replace" to create table stmt. So create table t1 is create or replace on slave. So this bug is not because of replication, We can get this bug on general server if we manually add or replace to create query. Problem:- So if we try to create table t1 (same name as of temp table t1 ) via CREATE or replace TABLE t AS SELECT * FROM t; Since in this query we are creating table from select * from t1 , we call unique_table function to see whether if source and destination table are same. But there is one issue unique_table does not account if source table is tmp table in this case source and destination table can be same. Solution:- We will change find_dup_table to not to look for temp table if CHECK_DUP_SKIP_TEMP_TABLE flag is on.
-
- 14 Jul, 2018 1 commit
-
-
Monty authored
Problem was as part of SET PASSWORD FOR ROOT, mysql.user table changed compared to how it was originally created. (plugin changed value)
-
- 09 Jul, 2018 1 commit
-
-
Jacob Mathew authored
The problem occurred because the Spider node was incorrectly handling timestamp values sent to and received from the data nodes. The problem has been corrected as follows: - Added logic to set and maintain the UTC time zone on the data nodes. To prevent timestamp ambiguity, it is necessary for the data nodes to use a time zone such as UTC which does not have daylight savings time. - Removed the spider_sync_time_zone configuration variable, which did not solve the problem and which interfered with the solution. - Added logic to convert to the UTC time zone all timestamp values sent to and received from the data nodes. This is done for both unique and non-unique timestamp columns. It is done for WHERE clauses, applying to SELECT, UPDATE and DELETE statements, and for UPDATE columns. - Disabled Spider's use of direct update when any of the columns to update is a timestamp column. This is necessary to prevent false duplicate key value errors. - Added a new test spider.timestamp to thoroughly test Spider's handling of timestamp values. Author: Jacob Mathew. Reviewer: Kentoku Shiba. Cherry-Picked: Commit 97cc9d34 on branch bb-10.3-MDEV-16246
-
- 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 1 commit
-
-
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`.
-