summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* MENT-1626: JSON file interface to wsrep node state.bb-10.8-MDEV-26971Alexey Yurchenko2021-11-0417-11/+180
| | | | | | | | | | | | | | | | | | | Integration with status reporter in wsrep-lib. Status reporter reports changes in wsrep state and logged errors/ warnings to a json file which then can be read and interpreted by an external monitoring tool. Rationale: until the server is fully initialized it is unaccessible by client and the only source of information is an error log which is not machine-friendly. Since wsrep node can spend a very long time in initialization phase (state transfer), it may be a very long time that automatic tools can't easily monitor its liveness and progression. New variable: wsrep_status_file specifies the output file name. If not set, no file is created and no reporting is done. Reviewed-by: Jan Lindström <jan.lindstrom@mariadb.com>
* Spider fix for 10.8+Sergei Golubchik2021-11-021-2/+2
| | | | like in 76f4a78ba26
* 10.8 branchSergei Golubchik2021-11-0263-391/+408
|
* 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
* | | | | | MDEV-26794 MariaBackup does not recognize added providers upon prepare of ↵Sergei Golubchik2021-10-2713-23/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | incremental backup * Change InnoDB message text to mention compression. * make "not loaded compression provider" warning to be issued also when current_thd == 0.
* | | | | | MDEV-26791 MariaBackup logs compression provider plugins as encryption pluginSergei Golubchik2021-10-271-5/+4
| | | | | |
* | | | | | MDEV-26773 MariaBackup backup does not work with compression providersSergei Golubchik2021-10-274-50/+62
| | | | | | | | | | | | | | | | | | | | | | | | make mariabackup to load not only encryption but also provider plugins.
* | | | | | MDEV-26774 Compression provider unloading at runtime has no effect but ↵Sergei Golubchik2021-10-273-1/+22
| | | | | | | | | | | | | | | | | | | | | | | | doesn't produce a warning
* | | | | | Avoid ASAN odr errorSergei Golubchik2021-10-275-0/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | like ==31311==ERROR: AddressSanitizer: odr-violation (0x7f3cda2e1480): [1] size=8 'provider_service_lz4' libservices/provider_service_lz4.c:14:17 [2] size=8 'provider_service_lz4' sql/sql_plugin_services.ic:301:33
* | | | | | enable innodb compression tests that were disabled by mistakeSergei Golubchik2021-10-275-0/+9
| | | | | |
* | | | | | MDEV-12933 sort out the compression library chaosKartik Soneji2021-10-2794-451/+1954
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | bzip2/lz4/lzma/lzo/snappy compression is now provided via *services* they're almost like normal services, but in include/providers/ and they're supposed to provide exactly the same interface as original compression libraries (but not everything, only enough of if for the code to compile). the services are implemented via dummy functions that return corresponding error values (LZMA_PROG_ERROR, LZO_E_INTERNAL_ERROR, etc). the actual compression libraries are linked into corresponding provider plugins. Providers are daemon plugins that when loaded replace service pointers to point to actual compression functions. That is, run-time dependency on compression libraries is now on plugins, and the server doesn't need any compression libraries to run, but will automatically support the compression when a plugin is loaded. InnoDB and Mroonga use compression plugins now. RocksDB doesn't, because it comes with standalone utility binaries that cannot load plugins.