- 20 Jul, 2023 4 commits
-
-
Dmitry Shulga authored
This is the prerequisite patch to remove the data member sp_head::m_trg_table_fields and the method is_fields_updated_in_trigger that used it but is not called anywhere in the source code. The commit 5f1f2fc0 introduced the data member sp_head::m_trg_table_fields and the method Table_triggers_list::is_fields_updated_in_trigger() that used this data member. The method Table_triggers_list::is_fields_updated_in_trigger() was invoked by the method partition_info::can_prune_insert() also introduced by the same commit 5f1f2fc0 The method partition_info::can_prune_insert() is not called anywhere in the code and later these methods were removed from the source code but the data member sp_head::m_trg_table_fields wasn't. So, remove the data member sp_head::m_trg_table_fields and declaration of the method is_fields_updated_in_trigger() for purpose of code cleaning up.
-
Dmitry Shulga authored
This is the prerequisite patch to move the sp_instr class and classes derived from it into the files sp_instr.cc/sp_instr.h. The classes sp_lex_cursor and sp_lex_keeper are also moved to the files files sp_instr.cc/sp_instr.h. Additionally, * all occurrences of macroses NULL, FALSE, TRUE are replaced with the corresponding C++ keywords nullptr, false, true. * the keyword 'override' is added in and the keyword 'virtual' is removed from signatures of every virtual method implemented in classes derived from the base class sp_instr. * the keyword 'final' is added into declaration of the class sp_lex_keeper since this class shouldn't have a derived class by design. * the function cmp_rqp_locations is made static since it is not called outside the file sp_instr.cc. * the function subst_spvars() is moved into the file sp_instr.cc since this function used only by the method sp_instr_stmt::execute
-
Dmitry Shulga authored
This is the prerequisite patch to make interface of the class Reprepare_observer more similar to the one used by MySQL. This patch adds the method can_retry() to the class Reprepare_observer that returns true in case max. number of attempts to re-run a failing statement is not yet reached. To control the number of re-run attempts already done the data member m_attempt has been introduced. Doing this way, we encapsulate activity with incrementing a counter on every statement run and checking whether it reaches a limit or not inside implementation of the class Reprepare_observer instead duplicating such boiler plate code in every place where controlling for reaching a limit of max. number attempts for re-running failed statement is required.
-
Nicholas Othieno authored
Instructions and a script to help speed up language translations for MariaDB are provided. The README.md provides instructions of a recommended workflow that involves: - Extracting the English language entries in the file errmsg-utf8.txt - Using online tools to do automatic translation. - Proof-reading the automatic translations. - Running the script insert_translations_into_errmsg.py that will take the original errmsg-utf8.txt file, the extracted english translations file and the new language translations file and generate a new file errmsg-utf8-with-new-language.txt that is a copy of errmsg-utf8.txt but with the new language entries inserted into it at the correct positions. All new code of the whole pull request, including one or several files that are either new files or modified ones, are contributed under the BSD-new license. I am contributing on behalf of my employer Amazon Web Services, Inc.
-
- 17 Jul, 2023 1 commit
-
-
Alexander Barkov authored
This patch adds a way to override default collations (or "character set collations") for desired character sets. The SQL standard says: > Each collation known in an SQL-environment is applicable to one > or more character sets, and for each character set, one or more > collations are applicable to it, one of which is associated with > it as its character set collation. In MariaDB, character set collations has been hard-coded so far, e.g. utf8mb4_general_ci has been a hard-coded character set collation for utf8mb4. This patch allows to override (globally per server, or per session) character set collations, so for example, uca1400_ai_ci can be set as a character set collation for Unicode character sets (instead of compiled xxx_general_ci). The array of overridden character set collations is stored in a new (session and global) system variable @@character_set_collations and can be set as a comma separated list of charset=collation pairs, e.g.: SET @@character_set_collations='utf8mb3=uca1400_ai_ci,utf8mb4=uca1400_ai_ci'; The variable is empty by default, which mean use the hard-coded character set collations (e.g. utf8mb4_general_ci for utf8mb4). The variable can also be set globally by passing to the server startup command line, and/or in my.cnf.
-
- 12 Jul, 2023 1 commit
-
-
Andrew Hutchings authored
The `--vertical` option does not appear to behave as documented and research shows it never appears to have behaved as intended. As this appears to be a completely unused feature, let's remove it.
-
- 06 Jul, 2023 1 commit
-
-
Sergei Golubchik authored
-
- 05 Jul, 2023 1 commit
-
-
Robin Newhouse authored
Performs an upgrade of mariadb from an earlier version to the rpms built in CI. Then checks whether log contains evidence of upgrade in the form of "Needs upgrade" or "Table rebuild required". Designed to check minor version upgrades which should not trigger rebuilds. The test is written in bash script so it can be executed from other CI systems. $ test_upgrade.sh source_version target_version $ test_upgrade.sh source_version # defaults to rpm/ $ test_upgrade.sh source_version --rpm-dir <directory> Binaries must be created with performance schema enabled, or mysql_upgrade complains about missing tables. Upgrade testing is parallelized with a "matrix" of source versions. Others can be introduced later. This was partially designed to catch issues like that seen in https://jira.mariadb.org/browse/MDEV-28727 where a minor version upgrade (e.g. 10.4.8 -> 10.4.26) triggered a system table rebuild. All new code of the whole pull request, including one or several files that are either new files or modified ones, are contributed under the BSD-new license. I am contributing on behalf of my employer Amazon Web Services, Inc.
-
- 04 Jul, 2023 8 commits
-
-
Yuchen Pei authored
Allow ALTER TABLE ... IMPORT TABLESPACE without creating the table followed by discarding the tablespace. That is, assuming we want to import table t1 to t2, instead of CREATE TABLE t2 LIKE t1; ALTER TABLE t2 DISCARD TABLESPACE; FLUSH TABLES t1 FOR EXPORT; --copy_file $MYSQLD_DATADIR/test/t1.cfg $MYSQLD_DATADIR/test/t2.cfg --copy_file $MYSQLD_DATADIR/test/t1.ibd $MYSQLD_DATADIR/test/t2.ibd UNLOCK TABLES; ALTER TABLE t2 IMPORT TABLESPACE; We can simply do FLUSH TABLES t1 FOR EXPORT; --copy_file $MYSQLD_DATADIR/test/t1.cfg $MYSQLD_DATADIR/test/t2.cfg --copy_file $MYSQLD_DATADIR/test/t1.frm $MYSQLD_DATADIR/test/t2.frm --copy_file $MYSQLD_DATADIR/test/t1.ibd $MYSQLD_DATADIR/test/t2.ibd UNLOCK TABLES; ALTER TABLE t2 IMPORT TABLESPACE; We achieve this by creating a "stub" table in the second scenario while opening the table, where t2 does not exist but needs to import from t1. The "stub" table is similar to a table that is created but then instructed to discard its tablespace. We include tests with various row formats, encryption, with indexes and auto-increment.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Nicholas Othieno authored
Kenyan Swahili is enabled for error messages as well as datetime. All new code of the whole pull request, including one or several files that are either new files or modified ones, are contributed under the BSD-new license. I am contributing on behalf of my employer Amazon Web Services, Inc.
-
Yuchen Pei authored
The error code is non-deterministic, presumably due to some race condition from the SLEEP statement above. The correct error should be 12701 ER_SPIDER_REMOTE_SERVER_GONE_AWAY_NUM as it is the last failure. Nevertheless, this contrived test is needed to cover the error reporting when setting lock wait timeout, until we find a better test case and/or fixing the non-deterministic error reporting (MDEV-31586)
-
- 03 Jul, 2023 4 commits
-
-
Marko Mäkelä authored
log_t::write_checkpoint(), log_t::resize_start(): Invoke buf_flush_ahead() with buf_pool.get_oldest_modification(0)+1 so that another checkpoint will be invoked, to complete the log resizing. Tested by: Oleg Smirnov (on Microsoft Windows, where this hung most often)
-
Marko Mäkelä authored
-
Marko Mäkelä authored
ha_innobase::delete_table(): Also on DROP SEQUENCE, do try to drop any persistent statistics. They should really not be created for SEQUENCE objects (which internally are 1-row no-rollback tables), but that is how happened to always work.
-
Marko Mäkelä authored
i_s_innodb_buffer_page_get_info(): Correct a condition. After crash recovery, there may be some buffer pool pages in FREED state, containing garbage (invalid data page contents). Let us ignore such pages in the INFORMATION_SCHEMA output. The test innodb.innodb_defragment_fill_factor will be removed, because the queries that it is invoking on information_schema.innodb_buffer_page would start to fail. The defragmentation feature was removed in commit 7ca89af6 in MariaDB Server 11.1. Tested by: Matthias Leich
-
- 02 Jul, 2023 3 commits
-
-
Trevor Gross authored
Allocate a temporary buffer instead of using the same buffer in some cases, and add assertions to verify the buffers do not overlap. See [1] for reasonsing. [1] https://github.com/MariaDB/server/pull/2438#discussion_r1137403645Signed-off-by: Trevor Gross <tmgross@umich.edu>
-
Trevor Gross authored
This patch ensures that all direct and indirect calls to encryption_crypt provide a `dlen` value correctly initialized to the destination buffer length, allowing encryption plugins to verify available space. It also adds assertions to verify related invariants. Signed-off-by: Trevor Gross <tmgross@umich.edu>
-
Sergei Golubchik authored
* removed universal suppression of everything "Event Schedule" everywhere * added suppressions in tests as needed * moved events test to the events suite * renamed -master.opt -> .opt * added standard test header * verified in the test that the error, indeed, was written into the log * removed useless suppressions * removed ER_EVENTS_NO_ACL, replaced with ER_OPTION_PREVENTS_STATEMENT * fixed error message to say exactly what option disabled event scheduler instead of "this or that or that, you figure it out" * also fixed old message for SET event_scheduler= (it was also non-translatable) * changed to use sql_print_error() when an error is not sent to the user * removed duplicate hard-coded error message
-
- 30 Jun, 2023 4 commits
-
-
Marko Mäkelä authored
btr_search_hash_table_validate(), btr_search_validate(): Add the parameter THD for checking if the statement has been killed. Any non-QUICK CHECK TABLE will validate the entire adaptive hash index for all InnoDB tables, which may be extremely slow when running multiple concurrent CHECK TABLE.
-
Marko Mäkelä authored
-
Oleg Smirnov authored
During the upgrade procedure on Windows mysqld.exe is started with the named pipe connection protocol. mysqladmin.exe then pings the server to check if is up and running. Command line looks like: mysqladmin.exe --protocol=pipe --socket=mysql_upgrade_service_xxx ping But the "socket" parameter resets the "protocol" which was previously initialized with the "pipe" value, setting it to "socket". As a result, connection cannot be established and the upgrade procedure fails. "socket" in Windows is used to pass the name of the pipe so resetting the protocol is not valid in this case. This commit fixes resetting of the "protocol" parameter with "socket" parameter in the case when protocol has been previously initialized to "pipe" value
-
Oleg Smirnov authored
Fake_select_lex->join was prepared at the unit execution stage so the validation of fake_select_lex before the unit pushdown was incomplete. That caused pushing down of statements having an incorrect ORDER BY clause. This commit moves preparation of the fake_select_lex->join to the unit prepare() method, before initializing of the pushdown handler, so incorrect clauses error out before being pushed down
-
- 29 Jun, 2023 1 commit
-
-
Oleg Smirnov authored
During the upgrade procedure on Windows mysqld.exe is started with the named pipe connection protocol. mysqladmin.exe then pings the server to check if is up and running. Command line looks like: mysqladmin.exe --protocol=pipe --socket=mysql_upgrade_service_xxx ping But the "socket" parameter resets the "protocol" which was previously initialized with the "pipe" value, setting it to "socket". As a result, connection cannot be established and the upgrade procedure fails. "socket" in Windows is used to pass the name of the pipe so resetting the protocol is not valid in this case. This commit fixes resetting of the "protocol" parameter with "socket" parameter in the case when protocol has been previously initialized to "pipe" value
-
- 28 Jun, 2023 8 commits
-
-
Sergei Petrunia authored
Set the histogram_type to be DOUBLE_PREC_HB as it originally was.
-
Vlad Lesin authored
The fix is in replacing the waiting for the whole purge finishing with the the waiting for only delete-marked records purging finishing. Reviewed by: Marko Mäkelä
-
Thirunarayanan Balathandayuthapani authored
- InnoDB bulk insert operation aborts the server for redundant table. InnoDB miscalculates the record size in temporary file for the redundant table. CHAR in redundant row format table always fixed length, but in temporary file, it is variable-length for variable-length character sets.
-
Vlad Lesin authored
The issue is caused by MDEV-30400 fix. There are two cursors in btr_estimate_n_rows_in_range() - p1 and p2, but both share the same mtr. Each cursor contains mtr savepoint for the previously fetched block to release it then the current block is fetched. Before MDEV-30400 the block was released with mtr_t::release_block_at_savepoint(), it just unfixed a block and released its page patch. In MDEV-30400 it was replaced with mtr_t::rollback_to_savepoint(), which does the same as the former mtr_t::release_block_at_savepoint(ulint begin, ulint end) but also erases the corresponding slots from mtr memo, what invalidates any stored mtr's memo savepoints, greater or equal to "begin". The idea of the fix is to get rid of savepoints at all in btr_estimate_n_rows_in_range() and btr_estimate_n_rows_in_range_on_level(). As mtr_t::rollback_to_savepoint() erases elements from mtr_t::m_memo, we know what element of mtr_t::m_memo can be deleted on the certain case, so there is no need to store savepoints. See also the following slides for details: https://docs.google.com/presentation/d/1RFYBo7EUhM22ab3GOYctv3j_3yC0vHtBY9auObZec8U Reviewed by: Marko Mäkelä
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Yuchen Pei authored
When setting the server lockwait timeout, spider should do some basic checks first, like whether the remote server is still reachable. So instead of directly calling spider_db_mbase::exec_query(), it should call spider_db_query(). The reset of the lock wait timeout does not need to do such checks, because they happen after the successfully setting the lock wait timeout, implying the checks have been passed already.
-
- 27 Jun, 2023 4 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-