- 06 Sep, 2017 1 commit
-
-
Marko Mäkelä authored
row_merge_read_clustered_index(): The row->fields[] could point to a record in the clustered index page of the source table, or to an old version of the record that was constructed in row_heap. If the row->fields[] points to the clustered index page, then we were modifying buffer pool data without holding appropriate block->lock and without appropriate redo logging. The intention was to modify a copy of the data, not the source file page, because concurrent readers would still very much need the original values of the DB_TRX_ID,DB_ROLL_PTR for their multi-versioning. Either way, it is simplest to not write anything at all, and to make row->fields[] point to the constant reset_trx_id.
-
- 05 Sep, 2017 1 commit
-
-
Marko Mäkelä authored
-
- 02 Sep, 2017 1 commit
-
-
Sergei Golubchik authored
so that even the ancient patch 2.5.4 could apply it correctly. fixes centos5-x86
-
- 01 Sep, 2017 16 commits
-
-
Vladislav Vaintroub authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
Follow-up to MDEV-13570 Assertion failure !srv_read_only_mode in --innodb-read-only shutdown when buf_resize_thread is active logs_empty_and_mark_files_at_shutdown(): Actually skip the debug assertion when the buf_resize_thread is active. The previous fix skipped the debug assertion failure when buf_dump_thread is active. Both these threads are created also in innodb_read_only mode. Depending on how fast these threads react to the shutdown signal, the debug assertion could be triggered. There is no impact on non-debug servers, and very little impact on debug servers either, because in innodb_read_only shutdown, no InnoDB files will need to be written.
-
Sergei Golubchik authored
followup for 62139dc2
-
Jan Lindström authored
MDEV-13690: Remove unnecessary innodb_use_mtflush, innodb_mtflush_threads parameters and related code Users can use innodb-page-cleaners instead.
-
Oleksandr Byelkin authored
-
Marko Mäkelä authored
innobase_rec_reset(): Remove. This function was introduced in the InnoDB Plugin for MySQL 5.1, which later evolved into MySQL 5.5. There used to be a bug that ADD UNIQUE INDEX would not always correctly report the duplicate key value of the secondary index. This function ensured that instead of reporting total garbage values, InnoDB would report NULL. It looks like the function was made unnecessary in MySQL 5.6.6 by https://github.com/mysql/mysql-server/commit/d143097eb1e02904baed34990db637ff68fe3113 The corresponding test was subsequently adjusted in https://github.com/mysql/mysql-server/commit/fde80cf49d4b7635d2aef47d8a77681f2df62105 The ALTER TABLE tests were imported to MariaDB as part of MDEV-13625, and these tests do pass with this change. The unnecessary function did not do any harm before MDEV-11371 introduced compressed columns. One question remains: What if we needed to report a duplicate key value for a compressed column? The simple answer is that the test main.column_compression demonstrates that no indexes can be defined on compressed columns.
-
Marko Mäkelä authored
pretty_print_engine_list(): When the plugin list is empty, return an empty string instead of allocating a buffer of 0 bytes and then trying to write a NUL byte into it.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
After MDEV-12288 and MDEV-13536, the DB_TRX_ID of old clustered index records for which no history is available should be reset to 0. This caused crashes in online table-rebuilding ALTER, because the row_log_table_apply() is built on the assumption that the PRIMARY KEY together with DB_TRX_ID,DB_ROLL_PTR identifies the record. Both when copying the old table and when writing log about changes to the old table, we must map "old" DB_TRX_ID to 0. "old" here is simply "older than the trx_id of the ALTER TABLE transaction", because the MDL_EXCLUSIVE (and exclusive InnoDB table lock) in ha_innobase::prepare_inplace_alter_table() forces any transactions accessing the table to commit or rollback. So, we know that we can safely reset any DB_TRX_ID in the table that is older than the transaction ID of the ALTER TABLE, because the undo log history would be lost in a table-rebuilding ALTER. Note: After a table-rebuilding online ALTER TABLE, the rebuilt table may end up containing some nonzero DB_TRX_ID columns. The apply logic identifies the rows by the combination of PRIMARY KEY and DB_TRX_ID. These nonzero DB_TRX_ID would necessarily refer to concurrent DML operations that were started during ha_innobase::inplace_alter_table(). row_log_allocate(): Add a parameter for the ALTER TABLE transaction. row_log_t::min_trx: The ALTER TABLE transaction ID. trx_id_check(): A debug function to check that DB_TRX_ID makes sense (is either 0 or bigger than the ALTER TABLE transaction ID). reset_trx_id[]: The reset DB_TRX_ID,DB_ROLL_PTR columns. row_log_table_delete(), row_log_table_get_pk(): Reset the DB_TRX_ID,DB_ROLL_PTR when they precede the ALTER TABLE transaction. row_log_table_apply_delete(), row_log_table_apply_update(): Assert trx_id_check(). row_merge_insert_index_tuples(): Remove the unused parameter trx_id. row_merge_read_clustered_index(): In a table-rebuilding ALTER, reset the DB_TRX_ID,DB_ROLL_PTR when they precede the ALTER TABLE transaction. Assert trx_id_check() on clustered index records that are being buffered.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
- 31 Aug, 2017 21 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Vladislav Vaintroub authored
char* parameter is expected by the message ER_KEY_COLUMN_DOES_NOT_EXITS, thus pass char*, rather than LEX_STRING.
-
Vladislav Vaintroub authored
ERROR_FILE_SYSTEM_LIMITATION was seen by support when backing up large file. However mariabackup error message was not very helpful, since it mapped the error to generic catch-all EINVAL. With the patch, ERROR_FILE_SYSTEM_LIMITATION will be mapped to more appropriate EFBIG. Also add mapping from ERROR_NO_SYSTEM_RESOURCES to ENOMEM.
-
Sergey Vojtovich authored
Storage engine independent support for column compression. TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT, VARCHAR and VARBINARY columns can be compressed. New COMPRESSED column attribute added: COMPRESSED[=<compression_method>] System variables added: column_compression_threshold column_compression_zlib_level column_compression_zlib_strategy column_compression_zlib_wrap Status variables added: Column_compressions Column_decompressions Limitations: - the only supported method currently is zlib - CSV storage engine stores data uncompressed on-disk even if COMPRESSED attribute is present - it is not possible to create indexes over compressed columns.
-
Marko Mäkelä authored
CURRENT_TEST: galera.galera_kill_applier mysqltest: At line 14: query 'KILL $applier_thread' failed with wrong errno 1064: 'You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1', instead of 1095...
-
Sergey Vojtovich authored
It doesn't serve any purpose, but generates extra virtual function call.
-
Jan Lindström authored
These parameters and associated code is to be removed in 10.3. Users can use innodb-page-cleaners > 1 instead.
-
Peter Shchuchkin authored
Updated qc_info tests, added new test that checks HITS is incremented.
-
Peter Shchuchkin authored
Added hit_count field to Query_cache_query and methods to get and increment it. The counter is incremented when query results are read from query cache.
-
Eugene Kosov authored
READ_RECORD read_record; ... // this // read_record.read_record(&read_record); // becomes just read_record.read_record();
-
Jan Lindström authored
MDEV-12741: innodb.ibuf_not_empty failed in buildbot with "InnoDB: Trying to do I/O to a tablespace which does not exist" Background thread is doing ibuf merge, in buf0rea.cc buf_read_ibuf_merge_pages(). It first tries to get page_size and if space is not found it deletes them, but as we do not hold any mutexes, space can be marked as stopped between that and buf_read_page_low() for same space. This naturally leads seen error message on log. buf_read_page_low(): Add parameter ignore_missing_space = false that is passed to fil_io() buf_read_ibuf_merge_pages(): call buf_read_page_low with ignore_missing_space = true, this function will handle missing space error code after buf_read_page_low returns. fil_io(): if ignore_missing_space = true do not print error message about trying to do I/0 for missing space, just return correct error code that is handled later.
-
Sergei Petrunia authored
Make rocksdb.bloomfilter* tests 1.8x faster by doing loading in bulk
-
Marko Mäkelä authored
-
Marko Mäkelä authored
There is a race condition in InnoDB startup. A number of fil_crypt_thread are created by fil_crypt_threads_init(). These threads may call btr_scrub_complete_space() before btr_scrub_init() was called. Those too early calls would be accessing an uninitialized scrub_stat_mutex. innobase_start_or_create_for_mysql(): Invoke btr_scrub_init() before fil_crypt_threads_init(). fil_crypt_complete_rotate_space(): Only invoke btr_scrub_complete_space() if scrubbing is enabled. There is no need to update the statistics if it is not enabled.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
ATTRIBUTE_NORETURN is supported on all platforms (MSVS and GCC-like). It declares that a function will not return; instead, the thread or the whole process will terminate. ATTRIBUTE_COLD is supported starting with GCC 4.3. It declares that a function is supposed to be executed rarely. Rarely used error-handling functions and functions that emit messages to the error log should be tagged such.
-
Marko Mäkelä authored
galera.galera_kill_applier: Make the test less likely to fail by adding sleep time. galera.query_cache: Remove data truncation. Part of the test file looks like it has been misinterpreted as latin1 and wrongly converted to UTF-8 encoding. In MariaDB 10.1, the server would only warn about data truncation and not issue an error. 10.2 is stricter. (The test should be carefully reviewed if it really makes sense.)
-
Marko Mäkelä authored
For running the Galera tests, the variable my_disable_leak_check was set to true in order to avoid assertions due to memory leaks at shutdown. Some adjustments due to MDEV-13625 (merge InnoDB tests from MySQL 5.6) were performed. The most notable behaviour changes from 10.0 and 10.1 are the following: * innodb.innodb-table-online: adjustments for the DROP COLUMN behaviour change (MDEV-11114, MDEV-13613) * innodb.innodb-index-online-fk: the removal of a (1,NULL) record from the result; originally removed in MySQL 5.7 in the Oracle Bug #16244691 fix https://github.com/mysql/mysql-server/commit/377774689bf6a16af74182753fe950d514c2c6dd * innodb.create-index-debug: disabled due to MDEV-13680 (the MySQL Bug #77497 fix was not merged from 5.6 to 5.7.10) * innodb.innodb-alter-autoinc: MariaDB 10.2 behaves like MySQL 5.6/5.7, while MariaDB 10.0 and 10.1 assign different values when auto_increment_increment or auto_increment_offset are used. Also MySQL 5.6/5.7 exhibit different behaviour between LGORITHM=INPLACE and ALGORITHM=COPY, so something needs to be tested and fixed in both MariaDB 10.0 and 10.2. * innodb.innodb-wl5980-alter: disabled because it would trigger an InnoDB assertion failure (MDEV-13668 may need additional effort in 10.2)
-
Jan Lindström authored
After MDEV-13583: Improvements for MTR rebootstrap introduced in MDEV-12042 bootsrap correctly creates mysql/innodb_table_stats and mysql/innodb_index_stats InnoDB tables before innodb_encryption test starts. These tables are also encrypted or decrypted, thus we need to wait also these tables (if not we could randomly get different results as system tablespace and these tables are encrypted or decrypted in parallel).
-
Jan Lindström authored
Problem was incorrect definition of wsrep_recovery, trx_sys_update_wsrep_checkpoint and trx_sys_read_wsrep_checkpoint functions causing innodb_plugin not to load as there was undefined symbols.
-