summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Stash holder10.7-MDEV-20119-v2Brandon Nesterenko2021-11-094-188/+440
|
* MDEV-20119 stashBrandon Nesterenko2021-11-038-21/+826
|
* MDEV-4989: Support for GTID in mysqlbinlogBrandon Nesterenko2021-11-0112-388/+724
| | | | | | | | | | | | | | Intermediary commit addressing the following 1) Repeat --start-position or --stop-position specified on the command line 2) Added non-strict mode for omitting out-of-order warnings while processing events 3) Updated ID delegation gtid event filter to use MariaDB HASH type instead of manual hash implementation 4) Updated mariadb-binlog event processing to activate or deactivate an event only when a Gtid_log_event is encountered, rather than keeping track of each event in the group
* Gtid_list_log_event gtids are compared against those of the start and stop ↵Andrei Elkin2021-11-011-0/+49
| | | | position.
* --gtid-strict-mode option is introduced, ON by default; revert it with ↵Andrei Elkin2021-11-011-0/+7
| | | | --skip- prefix.
* Standalone GTID group does not end with any of Xid, Commit or ROLLBACK.Andrei Elkin2021-11-013-2/+7
|
* MDEV-4989: Support for GTID in mysqlbinlogBrandon Nesterenko2021-11-016-107/+210
| | | | | | | Intermediary commit addressing the following: 1. Refined error messages 2. Changed gtid seq no out of order to warn instead of error. Warning is issued at the end.
* MDEV-4989: Support for GTID in mysqlbinlogBrandon Nesterenko2021-11-0112-193/+719
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Incremental commit with fixes addressing the initial round of code review. Items addressed: 1. Active event groups are now maintained in a global state within Log_event 2. When an event that ends an active group, e.g. Xid_log_event, is processed, the event itself clears the active status in its print function 3. Removed unnecessary protocol additions from COM_BINLOG_DUMP on the server side 4. Added error logic for gaps in GTID sequencing 5. Added error processing to ensure that the GTIDs given in --start-position are before their respective GTIDs in --stop-position 6. Fixed a bug where an event would be incorrectly printed after the --stop-position 7. Added test to verify that scalar offsets can be used with GTID positions for --start-position and --stop-position 8. Added logic to ensure that mariadb-binlog stops processing after all GTIDs specified in --stop-position have been hit 9. Added tests to verify GTID events unspecified in either the start or stop position lists should be printed up until all stop position GTIDs have been hit 10. Updated some descriptions and did some cleanup Reviewed By: ============ Andrei Elkin: <andrei.elkin@mariadb.com>
* Simplifying the remote branch to base it on the slave state thatAndrei Elkin2021-11-012-98/+44
| | | | | the slave server presents at connecting. mysqlbinlog-remote now does the same, where the state is expressed by `start-position` arg.
* MDEV-4989: Support for GTID in mysqlbinlogBrandon Nesterenko2021-11-0110-42/+1400
| | | | | | | | | | | | | | | | | | | | | | | | | | | New Feature: =========== This commit extends the mariadb-binlog capabilities to allow events to be filtered by GTID ranges. More specifically, the following capabilities are addressed: 1) GTIDs can be used to filter results on local binlog files 2) GTIDs can be used to filter results from remote servers 3) For a given GTID range, its start-position is exclusive and its stop-position is inclusive. This allows users to receive events strictly after those that they already have, and is useful in cases such as: 1) events were received out of order and should be re-sent, or 2) specifying the gtid state of a slave to get events newer than their current state. 4) After the events have been written, the session server id and domain id are reset to their former values To facilitate these features, the --start-position and --stop-position arguments have been extended to accept values formatted as a list of GTID positions, e.g. --start-position=0-1-0,1-2-55 Reviewed By: =========== Andrei Elkin: <andrei.elkin@mariadb.com>
* MDEV-26947 UNIQUE column checks fail in InnoDB resulting in table corruptionThirunarayanan Balathandayuthapani2021-11-013-0/+61
| | | | | | | | InnoDB fails to rollback the bulk insert buffered operation when trx_mark_sql_stat_end() encounters the DB_DUPLICATE_KEY error. In this case, check table fails with secondary index row count mismatch. InnoDB gives the error "ER_ERROR_DURING_COMMIT" while encountering the DB_DUPLICATE_KEY in trx_mark_sql_stat_end()
* MDEV-26221: DYNAMIC_ARRAY use size_t for sizesSergei Golubchik2021-10-301-2/+2
| | | | | | fix test failures on rpm-centos73-ppc64 followup for 401ff6994d84
* workaround for gcc bug 7302Sergei Golubchik2021-10-301-0/+1
| | | | | | it's https://gcc.gnu.org/bugzilla/show_bug.cgi?id=7302 fixed in 2011 affects fmtlib: https://github.com/fmtlib/fmt/issues/1936
* columnstoreSergei Golubchik2021-10-291-0/+0
|
* MDEV-26732 Assertion `0' failed in Item::val_nativepreview-10.7-MDEV-4958-uuidAlexander Barkov2021-10-292-0/+14
| | | | add a test case
* MDEV-26785 Hyphens inside the value of uuid datatypeAlexander Barkov2021-10-293-16/+102
|
* MDEV-26742 Assertion `field->type_handler() == this' failed in ↵Alexander Barkov2021-10-292-4/+39
| | | | | | | | FixedBinTypeBundle<NATIVE_LEN, MAX_CHAR_LEN>::Type_handler_fbt::stored_field_cmp_to_item The bug was fixed in 10.5 using INET6 specific tests. This bugs adds only UUID specific tests (no code changes).
* MDEV-26664 Store UUIDs in a more efficient mannerAlexander Barkov2021-10-2915-36/+3601
| | | | | | | | | | | | | | | | | | | | | | | UUID values llllllll-mmmm-Vhhh-vsss-nnnnnnnnnnnn are now stored as nnnnnnnnnnnn-vsss-Vhhh-mmmm-llllllll inside the record: - the groups (segments separated by dash) are reordered right-to-left. - the bytes inside the groups are not reordered (stored as before, in big-endian format). This provides a better sorting order: the earlier UUID was generated, the higher it appears in the ORDER BY output. Also, this change enables a good key prefix compression, because the constant part is now in the beginning, while the non-constant part (the timestamp) is in the end.
* Changing the FixedBinTypeBundle parameter to a "storage class" instead of sizesAlexander Barkov2021-10-297-86/+166
| | | | | | | | | | | | | | | - Adding a new template FixedBinTypeStorage. - Restoring classes UUID and Inet6 as primitive "storage classes" for their data types. They derive from FixedBinTypeStorage. These storage classes have very few server dependencies so they can later be easily reused in smart engines, e.g. ColumnStore. - Changing the FixedBinTypeBundle parameter from <size_t NATIVE_LEN, size_t MAX_CHAR_LEN> to <class FbtImpl> and fixing UUID and INET6 bundles to get their storage classes as a parameter.
* UUID() function should return UUID, not VARCHAR(36)Sergei Golubchik2021-10-2920-182/+204
|
* MDEV-4958 Adding datatype UUIDAlexander Barkov2021-10-2943-99/+5334
|
* cleanup: uuidSergei Golubchik2021-10-297-47/+25
|
* cleanup: move most of type_inet plugin implementation into the serverSergei Golubchik2021-10-295-2108/+1927
| | | | | | factor out the the common code for all plugin types that have a fixed-length native binary representation and a possibly variable-length string representation.
* MDEV-26242: Assertion `i >= 0' failed on setting default_tmp_storage_engine ↵bb-10.7-vicentiu-MDEV-26242Vicențiu Ciorbaru2021-10-293-8/+87
| | | | | | | | to 'DEFAULT' in 10.7 Locking / unlocking plugins is already handled by Sys_var_plugin::check method. No need to do that in the specialized checking code, use var->save_value instead to get the plugin handle.
* Merge 10.6 into 10.7Marko Mäkelä2021-10-2838-162/+648
|\
| * Merge 10.5 into 10.6Marko Mäkelä2021-10-2837-162/+644
| |\
| | * Merge 10.4 into 10.5Marko Mäkelä2021-10-2838-163/+650
| | |\
| | | * Merge 10.3 into 10.4Marko Mäkelä2021-10-2838-166/+650
| | | |\
| | | | * Merge 10.2 into 10.3Marko Mäkelä2021-10-2838-163/+642
| | | | |\
| | | | | * MDEV-26867: Update the InnoDB version number to 5.7.36Marko Mäkelä2021-10-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The InnoDB changes in MySQL 5.7.36 that were applicable to MariaDB were covered by MDEV-26864, MDEV-26865, MDEV-26866.
| | | | | * MDEV-26866 FOREIGN KEY…SET NULL corrupts an index on a virtual columnNikita Malyavin2021-10-289-71/+415
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The initial test case for MySQL Bug #33053297 is based on mysql/mysql-server@27130e25078864b010d81266f9613d389d4a229b. innobase_get_field_from_update_vector is not a suitable function to fetch updated row info, as well as parent table's update vector is not always suitable. For instance, in case of DELETE it contains undefined data. castade->update vector seems to be good enough to fetch all base columns update data, and besides faster, and less error-prone.
| | | | | * Fix compile warning:bb-10.2-tmpSergei Petrunia2021-10-271-9/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ha_rocksdb.h:459:15: warning: 'table_type' overrides a member function but is not marked 'override' [-Winconsistent-missing-override]
| | | | | * MDEV-25402 Assertion `!str || str != Ptr' failed in String::copyAlexander Barkov2021-10-273-1/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The assert inside String::copy() prevents copying from from "str" if its own String::Ptr also points to the same memory. The idea of the assert is that copy() performs memory reallocation, and this reallocation can free (and thus invalidate) the memory pointed by Ptr, which can lead to further copying from a freed memory. The assert was incomplete: copy() can free the memory pointed by its Ptr only if String::alloced is true! If the String is not alloced, it is still safe to copy even from the location pointed by Ptr. This scenario demonstrates a safe copy(): const char *tmp= "123"; String str1(tmp, 3); String str2(tmp, 3); // This statement is safe: str2.copy(str1->ptr(), str1->length(), str1->charset(), cs_to, &errors); Inside the copy() the parameter "str" is equal to String::Ptr in this example. But it's still ok to reallocate the memory for str2, because str2 was a constant before the copy() call. Thus reallocation does not make the memory pointed by str1->ptr() invalid. Adjusting the assert condition to allow copying for constant strings.
| | | | | * Fix tests for PLUGIN_PARTITION=NOMarko Mäkelä2021-10-273-0/+3
| | | | | |
| | | | | * MDEV-26868: Session tracking flag in OK_PACKETDiego Dupin2021-10-261-11/+8
| | | | | | | | | | | | | | | | | | | | | | | | Take into account client capabilities.
| | | | | * pthread_yield() is depricated now, so use sched_yield() if possible.Oleksandr Byelkin2021-10-261-5/+7
| | | | | |
| | | | | * Safemalloc typo fix found by clang.Oleksandr Byelkin2021-10-261-2/+2
| | | | | |
| | | | | * Try to fix appveyor to prevent occasional failing of mysql_client_testVladislav Vaintroub2021-10-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Sometimes, although not often, it would timeout after 3 minutes.
| | | | | * MDEV-23391 Crash/assertion CREATE OR REPLACE TABLE AS SELECT under LOCK TABLEVladislav Vaintroub2021-10-263-6/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Happens with Innodb engine. Move unlock_locked_table() past drop_open_table(), and rollback current statement, so that we can actually unlock the table. Anything else results in assertions, in drop, or unlock, or in close_table.
| | | | | * MDEV-26902 Auxilary fts table evicts during DDLbb-10.2-thiruThirunarayanan Balathandayuthapani2021-10-261-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | MDEV-25702(commit 696de6d06c0eeaf7b20d5f89278ed7d62a9f204f) should've closed the fts table further. This patch closes the table after finishing the bulk insert operation.
| | | | | * MDEV-22711 Assertion `nr != 0' failed in handler::update_auto_increment.bb-10.2-mdev-22711-hfAlexey Botchkov2021-10-263-6/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | DBUG_ASSERT removed as the AUTO INCREMENT can actually be 0 when the SET insert_id= 0; was done.
| | | | | * MDEV-26556 An improper locking bug(s) due to unreleased lock.bb-10.2-mdev-26556-hfAlexey Botchkov2021-10-253-23/+13
| | | | | | | | | | | | | | | | | | | | | | | | Get rid of the global big_buffer.
| | | | | * compilation fixes for sys-devel/gcc-11.2.0:11Sergei Golubchik2021-10-256-7/+19
| | | | | |
| | | | | * MDEV-23267 Assertion on --bootstrap --innodb-force-recoveryMarko Mäkelä2021-10-251-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | SysTablespace::file_not_found(): If the system tablespace cannot be found and innodb_force_recovery has been specified, refuse to start up. The system tablespace is necessary for accessing any InnoDB tables, because it contains the TRX_SYS page (the state of transactions) and the InnoDB data dictionary. This is similar to our handling of innodb_read_only except that we will happily create the InnoDB temporary tablespace even if innodb_force_recovry is set.
| | | | | * Fix comment10.2-tmpSergei Petrunia2021-10-221-1/+1
| | | | | |
| | | * | | MDEV-26914: Unreleased mutex in the exec_relay_log_event() functionbb-10.4-MDEV-26914-galeraJulius Goryavsky2021-10-281-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the replication-related code, in the exec_relay_log_event() (slave.cc) function, where the "data_lock" mutex is captured, this mutex is then not released on one of the early return branches within a specific insert for WSREP, namely under the branch: "if (wsrep_before_statement(thd))". As a result, the mutex remains captured, resulting in errors or hangs. This commit fixes this issue, which is now showing up as intermittent failures in mtr tests for galera and galera_sr suites.
| * | | | | MDEV-26779: Enable adaptive spinning on ARMv8 for lock_sys.wait_mutexMarko Mäkelä2021-10-271-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Similar to commit f7684f0ca5f6f53d63e93afe89194b43bb5431d2 (MDEV-26855) we will try to enable the adaptive spinloop for lock_sys.wait_mutex on ARMv8. Enabling any form of spinloop for lock_sys.wait_mutex did not show a significant improvement in our tests on AMD64. Spinning can be argued to be a hack to reduce the impact on mutex contention. It would be better to adjust the code to reduce contention in the first place.
* | | | | | InnoDB: send "corrupted" error to the user, not only to the logpreview-10.7-MDEV-12933-provider-pluginsSergei Golubchik2021-10-2722-94/+99
| | | | | |
* | | | | | mariabackup: rename encryption_plugin -> xb_pluginSergei Golubchik2021-10-276-26/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | because plugin code is not only about encryption anymore (also loads provider plugins), and xb_ prefix prevents name clashes with the server code (that mariabackup links with).
* | | | | | MDEV-26794 MariaBackup does not recognize added providers upon prepare of ↵Sergei Golubchik2021-10-275-9/+66
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | incremental backup prefer backup-my.cnf from the incremental-dir over the one in target-dir