- 25 Oct, 2018 1 commit
-
-
Alexander Barkov authored
MDEV-17542 10.3: gcc-8.0 produces lots of -Wclass-memaccess warnings in Table_scope_and_contents_source_st
-
- 20 Oct, 2018 2 commits
-
-
Vladislav Vaintroub authored
Problem description and workaround are here https://developercommunity.visualstudio.com/content/problem/185399/error-c2760-in-combaseapih-with-windows-sdk-81-and.html
-
Marko Mäkelä authored
On the hidden metadata record, if instant ALTER TABLE was executed multiple times on the same table, purge could fail to reset the DB_TRX_ID,DB_ROLL_PTR on the updated metadata record. This is only a cosmetic failure that was caught (and separately fixed) in 10.4 during the MDEV-15562 development. The problem was that occasionally, innodb.instant_alter_crash would fail with a result difference due to the DB_TRX_ID,DB_ROLL_PTR not having been reset on the metadata record. This bug should have no noticeable impact, because the metadata record is invisible to the SQL layer, and never subjected to MVCC or locking. I was unable to repeat the problem on 10.3. row_purge_parse_undo_rec(): Set node->ref for the metadata record.
-
- 19 Oct, 2018 4 commits
-
-
wlad authored
In addition,don't remove datadir if it was not created or was not empty.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
This reverts commit 2d4075e1 where the debug assertion was added. There seems to be a potential problem in the purge of indexes that depend on virtual columns. Ultimately, we should change the InnoDB undo log format so that all actual secondary index keys are stored there, also for virtual or spatial indexes. In that way, purge and rollback would be more straightforward.
-
Marko Mäkelä authored
-
- 18 Oct, 2018 6 commits
-
-
halfspawn authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
On Windows, a mismatch between TIMETPF ("%ld") and time_t would be reported. Use "%ld" and long, like the code used to be.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
- 17 Oct, 2018 5 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
row_ins_clust_index_entry_low(): Do not call dtuple_t::trim() before row_ins_clust_index_entry_by_modify(), so that the values of all columns will be available in row_upd_build_difference_binary(). If applicable, the tuple can be trimmed in btr_cur_optimistic_update() or btr_cur_pessimistic_update(), which will be called by row_ins_clust_index_entry_by_modify().
-
Marko Mäkelä authored
The setting innodb_safe_truncate=ON reduces compatibility with older versions of MariaDB and backup tools in two ways. First, we will be writing TRX_UNDO_RENAME_TABLE records, which older versions do not know about. These records could be misinterpreted if a DDL transaction was recovered and would be rolled back. Such rollback is only possible if the server was killed while an incomplete DDL transaction was persisted. On transaction completion, the insert_undo log pages would only be repurposed for new undo log allocations, and their contents would not matter. So, older versions will not have a problem with innodb_safe_truncate=ON if the server was shut down cleanly. Second, to prevent such recovery failure, innodb_safe_truncate=ON will cause a modification of the redo log format identifier, which will prevent older versions from starting up after a crash. MariaDB Server versions older than 10.2.13 will refuse to start up altogether, even after clean shutdown. A server restart with innodb_safe_truncate=OFF will restore compatibility with older server and backup versions.
-
Igor Babaev authored
Added only test case because the bug was fixed by the patch for mdev-17382.
-
Igor Babaev authored
Added only test case because the bug was fixed by the patch for mdev-16992.
-
- 16 Oct, 2018 3 commits
-
-
Varun Gupta authored
The syntax error happened because we had not implemented a different print for percentile functions. The syntax is a bit different when we use percentile functions as window functions in comparision to normal window functions. Implemented a seperate print function for percentile functions
-
Andrei Elkin authored
Opened up MYSQL_TYPE _DATETIME{,2} <-> _NEWDATE conversions for replication.
-
Marko Mäkelä authored
row_build_index_entry_low(): Assert that when the value of a virtual column is not available, this can only happen when the index creation was completed but not committed yet. This change is not fixing any bug, making a debug assertion stricter, so that bugs can be caught in the future. Ultimately, we should change the InnoDB undo log format so that all actual secondary index keys are stored there, also for virtual or spatial indexes. In that way, purge and rollback would be more straightforward.
-
- 14 Oct, 2018 2 commits
-
-
Igor Babaev authored
in Field_iterator_table::create_item When IN predicate is converted to IN subquery we have to ensure that any item from the select list of the subquery has some name and this name is unique across the select list. This was not guaranteed by the code before the patch for MDEV-17222. If the name of an item of the select list was not set, and this happened for binary constants, then the server crashed. If the first row in the IN list contained the same constant in two different positions then the server returned an error message. This was fixed by providing all constants in the first row of the IN list with generated names.
-
Varun Gupta authored
When we have a query which has implicit_grouping then we are sure that we would end up with only one row so there is no point to do DISTINCT computation
-
- 13 Oct, 2018 4 commits
-
-
Kristian Nielsen authored
-
Kristian Nielsen authored
-
Kristian Nielsen authored
-
Elena Stepanova authored
The failure caused by MDEV-16387
-
- 12 Oct, 2018 5 commits
-
-
Igor Babaev authored
upon INSERT .. SELECT The function Item *Item_direct_view_ref::derived_field_transformer_for_where() erroneously did not strip off ref wrappers from references to materialized derived tables / views. As a result the expressions that contained some references of the type Item_direct_view_ref to columns of a materialized derived table / view V were pushed into V incorrectly. This could cause crashes for some INSERT ... SELECT statements.
-
Vladislav Vaintroub authored
disable rpl_mdev382 on Windows, due to unix shell escaping used there.
-
Vladislav Vaintroub authored
-
Alexander Barkov authored
-
Daniel Black authored
Bump mysqldump to a version greater than that on the 10.3 branch.
-
- 11 Oct, 2018 8 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
A prepared backup from Mariabackup does not really need to contain any redo log file, because all log will have been applied to the data files. When the user copies a prepared backup to a data directory (overwriting existing files), it could happen that the data directory already contained redo log files from the past. mariabackup --copy-back) would delete the old redo log files, but a user’s own copying script might not do that. To prevent corruption caused by mixing an old redo log file with data files from a backup, starting with MDEV-13311, Mariabackup would create a zero-length ib_logfile0 that would prevent startup. Actually, there is no need to prevent InnoDB from starting up when a single zero-length file ib_logfile0 is present. Only if there exist multiple data files of different lengths, then we should refuse to start up due to inconsistency. A single zero-length ib_logfile0 should be treated as if the log files were missing: create new log files according to the configuration. open_log_file(): Remove. There is no need to open the log files at this point, because os_file_get_status() already determined the size of the file. innobase_start_or_create_for_mysql(): Move the creation of new log files a little later, not when finding out that the first log file does not exist, but after finding out that it does not exist or it exists as a zero-length file.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
Rename the 10.2-specific configuration option innodb_unsafe_truncate to innodb_safe_truncate, and invert its value. The default (for now) is innodb_safe_truncate=OFF, to avoid disrupting users with an undo and redo log format change within a Generally Available (GA) release series.
-
Alexander Barkov authored
-
Marko Mäkelä authored
We keep the MySQL 5.7 backup-incompatible TRUNCATE TABLE only in MariaDB Server 10.2. In 10.3 and later releases, only the backup-friendly TRUNCATE will be available.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
While MariaDB Server 10.2 is not really guaranteed to be compatible with Percona XtraBackup 2.4 (for example, the MySQL 5.7 undo log format change that could be present in XtraBackup, but was reverted from MariaDB in MDEV-12289), we do not want to disrupt users who have deployed xtrabackup and MariaDB Server 10.2 in their environments. With this change, MariaDB 10.2 will continue to use the backup-unsafe TRUNCATE TABLE code, so that neither the undo log nor the redo log formats will change in an incompatible way. Undo tablespace truncation will keep using the redo log only. Recovery or backup with old code will fail to shrink the undo tablespace files, but the contents will be recovered just fine. In the MariaDB Server 10.2 series only, we introduce the configuration parameter innodb_unsafe_truncate and make it ON by default. To allow MariaDB Backup (mariabackup) to work properly with TRUNCATE TABLE operations, use loose_innodb_unsafe_truncate=OFF. MariaDB Server 10.3.10 and later releases will always use the backup-safe TRUNCATE TABLE, and this parameter will not be added there. recv_recovery_rollback_active(): Skip row_mysql_drop_garbage_tables() unless innodb_unsafe_truncate=OFF. It is too unsafe to drop orphan tables if RENAME operations are not transactional within InnoDB. LOG_HEADER_FORMAT_10_3: Replaces LOG_HEADER_FORMAT_CURRENT. log_init(), log_group_file_header_flush(), srv_prepare_to_delete_redo_log_files(), innobase_start_or_create_for_mysql(): Choose the redo log format and subformat based on the value of innodb_unsafe_truncate.
-