- 12 Dec, 2018 7 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
References to global symbols prevent InnoDB from being built as a dynamic plugin on Windows. Refer to CHARSET_INFO::number, because that is what InnoDB is already persistently storing in its data dictionary.
-
Marko Mäkelä authored
btr_node_ptr_max_size(): Treat CHAR(0) from SQL as a special case. The InnoDB internal SQL parser maps the type "CHAR" to DATA_VARCHAR, but MariaDB does allow CHAR(0) with an empty value, and does enforce the length limitation.
-
Sergei Golubchik authored
keyinfo->name is a LEX_CSTRING also, fix the location comment (that applied to ext_key_part_map)
-
Marko Mäkelä authored
-
Sergei Golubchik authored
-
Marko Mäkelä authored
-
- 11 Dec, 2018 1 commit
-
-
Eugene Kosov authored
ha_innobase::prepare_inplace_alter_table(): check max column length for every index in a table, not just added in this particular ALTER TABLE with ADD INDEX ones.
-
- 10 Dec, 2018 5 commits
-
-
Vladislav Vaintroub authored
-
Varun Gupta authored
Alter statement changed the THD structure by setting the value to FIELD_CHECK_WARN and then not resetting it back. This led ANALYZE to throw a warning which previously it didn't.
-
Marko Mäkelä authored
This regression was introduced in MDEV-11369 instant ADD COLUMN. prepare_inplace_alter_table_dict(): Avoid dereferencing ctx->new_table after row_create_table_for_mysql() returns a failure code, because it will have freed the memory.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
There was a race condition in the error handling of ALTER TABLE when the table contains FULLTEXT INDEX. During the error handling of an erroneous ALTER TABLE statement, when InnoDB would drop the internally created tables for FULLTEXT INDEX, it could happen that one of the hidden tables was being concurrently accessed by a background thread. Because of this, InnoDB would defer the drop operation to the background. However, related to MDEV-13564 backup-safe TRUNCATE TABLE and its prerequisite MDEV-14585, we had to make the background drop table queue crash-safe by renaming the table to a temporary name before enqueueing it. This renaming was introduced in a follow-up of the MDEV-13407 fix. As part of this rename operation, we were unnecessarily parsing the current SQL statement, because the same rename operation could also be executed as part of ALTER TABLE via ha_innobase::rename_table(). If an ALTER TABLE statement was being refused due to incorrectly formed FOREIGN KEY constraint, then it could happen that the renaming of the hidden internal tables for FULLTEXT INDEX could also fail, triggering a host of error log messages, and causing a subsequent table-rebuilding ALTER TABLE operation to fail due to the tablespace already existing. innobase_rename_table(), row_rename_table_for_mysql(): Add the parameter use_fk for suppressing the parsing of FOREIGN KEY constraints. It will only be passed as use_fk=true by ha_innobase::rename_table(), which can be invoked as part of ALTER TABLE...ALGORITHM=COPY.
-
- 08 Dec, 2018 1 commit
-
-
Kristian Nielsen authored
-
- 07 Dec, 2018 10 commits
-
-
Marko Mäkelä authored
-
Kristian Nielsen authored
-
Varun Gupta authored
The problem here is EITS statistics does not calculate statistics for the partitions of the table. So a temporary solution would be to not read EITS statistics for partitioned tables. Also disabling reading of EITS for columns that participate in the partition list of a table.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
&sys_buf + DATA_TRX_ID_LEN is not &(sys_buf + DATA_TRX_ID_LEN).
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
create_table_def(), ha_innobase::create(): Defer fts_optimize_add_table() until after the table has been successfully created.
-
Marko Mäkelä authored
row_fts_merge_insert(): Correctly initialize DB_ROLL_PTR to a safe value that will not be dereferenced by MVCC.
-
- 06 Dec, 2018 5 commits
-
-
Vladislav Vaintroub authored
-
Sergei Golubchik authored
-
Sergei Golubchik authored
merge_role_db_privileges() was remembering pointers into Dynamic_array acl_dbs, and later was using them, while pushing more elements into the array. But pushing can cause realloc, and it can invalidate all pointers. Fix: remember and use indexes of elements, not pointers.
-
Sergei Golubchik authored
-
Sergei Golubchik authored
-
- 05 Dec, 2018 1 commit
-
-
Varun Gupta authored
-
- 04 Dec, 2018 2 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
- 03 Dec, 2018 1 commit
-
-
Thirunarayanan Balathandayuthapani authored
MDEV-17432 Assertion `lock_trx_has_sys_table_locks(trx) == 0' failed upon ALTER TABLE .. ADD FOREIGN KEY - Fixed innodb.table_flags test case in release build.
-
- 02 Dec, 2018 1 commit
-
-
Thirunarayanan Balathandayuthapani authored
MDEV-17432 Assertion `lock_trx_has_sys_table_locks(trx) == 0' failed upon ALTER TABLE .. ADD FOREIGN KEY - This is a regression of commit b26e603a. While dropping the incompletely created table, InnoDB shouldn't consider that operation as non-atomic one.
-
- 01 Dec, 2018 1 commit
-
-
Igor Babaev authored
When the with clause of a query contains a recursive CTE that is not used then processing of EXPLAIN for this query does not require optimization of the unit specifying this CTE. In this case if 'derived' is the TABLE_LIST object created for this CTE then derived->derived_result is NULL and any assignment to derived->derived_result->table causes a crash. After fixing this problem in the code of st_select_lex_unit::prepare() EXPLAIN for such a query worked without crashes. Yet an execution plan for the recursive CTE appeared there. The cause of this problem was an incorrect condition used in JOIN::save_explain_data_intern() that determined whether CTE was to be optimized or not. A similar condition was used in select_describe() and this patch has corrected it as well.
-
- 30 Nov, 2018 4 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
In 10.3, rec_is_metadata() takes a pointer, while in 10.4 it takes a reference as a parameter. I ported this patch from 10.4 to 10.3, and then only ran a release build, not debug build.
-
Marko Mäkelä authored
The special flag REC_INFO_MIN_REC_FLAG used to be only set on the first record in the leftmost node pointer page of each level of the tree. It was never set on leaf pages. MDEV-11369 Instant ADD COLUMN in MariaDB Server 10.3 repurposed the flag to identify a hidden metadata record, which is stored in the first record on the leftmost leaf page. If the adaptive hash index points to records in the leftmost leaf page after instant ALTER TABLE, we would have such a metadata record in the table, an assertion could fail when trying to validate the index record. In a release build, we might wrongly qualify the hidden metadata record and thus return garbage results. cmp_dtuple_rec_with_match_bytes(): If the REC_INFO_MIN_REC_FLAG is set on the record, assert that this is the first record on the leftmost page and that the record is a metadata record, and finally return 1, because by definition, anything is greater than the minimum record.
-
Marko Mäkelä authored
Also, related to MDEV-15522, MDEV-17304, MDEV-17835, remove the Galera xtrabackup tests, because xtrabackup never worked with MariaDB Server 10.3 due to InnoDB redo log format changes.
-
- 29 Nov, 2018 1 commit
-
-
Jan Lindström authored
-