- 26 Sep, 2023 3 commits
-
-
Jan Lindström authored
MDEV-31651 : Assertion wsrep_thd_is_applying(thd) && !wsrep_thd_is_local_toi(thd) in wsrep_ignored_error_code Problem was that with BINLOG-statement you can execute binlog events on master also (not only in applier). Fix removes too strict part wsrep_thd_is_applying from assertion. Note that actual event in test is intentionally corrupted to test should this error being ignored. Signed-off-by: Julius Goryavsky <julius.goryavsky@mariadb.com>
-
Jan Lindström authored
|| state() == s_prepared || state() == s_committing || state() == s_must_abort || state() == s_replaying' failed. CACHE INDEX and LOAD INDEX INTO CACHE are local operations. Therefore, do not replicate them with Galera. Signed-off-by: Julius Goryavsky <julius.goryavsky@mariadb.com>
-
Thirunarayanan Balathandayuthapani authored
Problem: ========= During commit, server calls prepare_commit_versioned to determine the transaction modified system-versioned data. Due to binlog_do_db option, we disable the binlog for the statement. But prepare_commit_versioned() is being called only when binlog is enabled for the statement. Fix: === prepare_commit_versioned() should happen irrespective of binlog state. So if the server has any read-write operation then we should call prepare_commit_versioned().
-
- 25 Sep, 2023 3 commits
-
-
Daniel Black authored
There are many filesystem related errors that can occur with MariaBackup. These already outputed to stderr with a good description of the error. Many of these are permission or resource (file descriptor) limits where the assertion and resulting core crash doesn't offer developers anything more than the log message. To the user, assertions and core crashes come across as poor error handling. As such we return an error and handle this all the way up the stack.
-
Vlad Lesin authored
The fix is to return 3-state value from Range_rowid_filter::build() call: 1. The filter was built successfully; 2. The filter was not built, but the error was not fatal, i.e. there is no need to rollback transaction. For example, if the size of container to storevrow ids is not enough; 3. The filter was not built because of fatal error, for example, deadlock or lock wait timeout from storage engine. In this case we should stop query plan execution and roll back transaction. Reviewed by: Sergey Petrunya
-
Yuchen Pei authored
Spider is part of the server, and there's no need to check the version. All spider plugins are uninstalled in clean_up_spider.inc DROP SERVER IF EXISTS makes things easier
-
- 24 Sep, 2023 1 commit
-
-
Igor Babaev authored
Memory for type holders of the columns of a table value constructor must be allocated only once. Approved by Oleksandr Byelkin <sanja@mariadb.com>
-
- 22 Sep, 2023 3 commits
-
-
Vladislav Vaintroub authored
is_file_on_ssd() is more expensive than it should be. It caches the results by volume name, but still calls GetVolumePathName() every time, which, as procmon shows, opens multiple directories in filesystem hierarchy (db directory, datadir, and all ancestors) The fix is to cache SSD status by volume serial ID, which is cheap to retrieve with GetFileInformationByHandleEx()
-
Oleksandr Byelkin authored
The counter is global so we do not need add backup to it if we do not zero it after taking the backup.
-
Oleksandr Byelkin authored
Fix row counters to be able to get any possible value.
-
- 20 Sep, 2023 2 commits
-
-
Oleksandr Byelkin authored
-
Oleg Smirnov authored
MDEV-29731 Assertion failure when HAVING in a correlated subquery references columns in the outer query When resolving a column from the HAVING clause, a new Item_field object may be created inside Item_ref::fix_fields(). But the object is created with an empty name resolution context, which then leads to debug assertion failure during Item_field::fix_fields(). The solution is to pass the correct name resolution context when creating the Item_field object. Reviewer: Oleksandr Byelkin (sanja@mariadb.com)
-
- 19 Sep, 2023 5 commits
-
-
Daniel Black authored
The table structure from MySQL-5.1.14 is: CREATE TABLE `slow_log` ( `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `user_host` mediumtext NOT NULL, `query_time` time NOT NULL, `lock_time` time NOT NULL, `rows_sent` int(11) NOT NULL, `rows_examined` int(11) NOT NULL, `db` varchar(512) DEFAULT NULL, `last_insert_id` int(11) DEFAULT NULL, `insert_id` int(11) DEFAULT NULL, `server_id` int(11) DEFAULT NULL, `sql_text` mediumtext NOT NULL ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log' Even as far back as MySQL-5.5.40 this table could be created as NULLs where not permitted in the CSV table time, but it seems they where allowed sometime. As the first part of mariadb-upgrade adds the column thread_id without correcting the 'NULL'able status of existing columns it fails. We reorder the sql statements in the ugprade as follows: ALTER TABLE slow_log MODIFY {columns} {new types} NOT NULL,.... As thread_id doesn't exist in the above statement it was removed from the first ALTER TABLE statement to prevent failure. Previous ALTER TABLE slow_log where moved later appending thread_id and rows_affected, and also enforces the type of thread_id if it was incorrectly like the now first ALTER STATEMENT slow_log used to do.
-
Daniel Black authored
-
Marko Mäkelä authored
According to commit ea568419 the stack normally grows downwards, except on HP PA-RISC where it grows upwards. Because determining the stack direction is not possible in a portable way, let us determine the default STACK_DIRECTION in CMake based on the ISA. On clang 16.0.6 running on and targeting AMD64, STACK_DIRECTION=1 is being incorrectly detected, causing the failure of a number of tests.
-
Marko Mäkelä authored
row_vers_vc_matches_cluster(): Invoke dtype_get_at_most_n_mbchars() to extract the correct number of bytes corresponding to the number of characters in a virtual column prefix index, just like we do in row_sel_sec_rec_is_for_clust_rec(). The test case would occasionally reproduce the failure when this fix is not present.
-
Dmitry Shulga authored
On creation of a VIEW that depends on a stored routine an instance of the class Item_func_sp is allocated on a memory root of SP statement. It happens since mysql_make_view() calls the method THD::activate_stmt_arena_if_needed() before parsing definition of the view. On the other hand, when sp_head's rcontext is created an instance of the class Field referenced by the data member Item_func_sp::result_field is allocated on the Item_func_sp's Query_arena (call arena) that set up inside the method Item_sp::execute_impl just before calling the method sp_head::execute_function() On return from the method sp_head::execute_function() all items allocated on the Item_func_sp's Query_arena are released and its memory root is freed (see implementation of the method Item_sp::execute_impl). As a consequence, the pointer Item_func_sp::result_field references to the deallocated memory. Later, when the method sp_head::execute cleans up items allocated for just executed SP instruction the method Item_func_sp::cleanup is invoked and tries to delete an object referenced by data member Item_func_sp::result_field that points to already deallocated memory, that results in a server abnormal termination. To fix the issue the current active arena shouldn't be switched to a statement arena inside the function mysql_make_view() that invoked indirectly by the method sp_head::rcontext_create. It is implemented by introducing the new Query_arena's state STMT_SP_QUERY_ARGUMENTS that is set when explicit Query_arena is created for placing SP arguments and other caller's side items used during SP execution. Then the method THD::activate_stmt_arena_if_needed() checks Query_arena's state and returns immediately without switching to statement's arena.
-
- 18 Sep, 2023 1 commit
-
-
Daniel Black authored
mariadb-install-db --auth-root-authentication-method=normal created 4 root accounts by default, but only two of these had PROXY privilege granted. mariadb-install-db (default option --auth-root-authentication-method=socket) as non-root user also didn't grant PROXY priv to the created nonroot@localhost user. To fix this, in mysql_system_tables_data.sql, we re-use tmp_user_nopasswd as this contains the list of all root users. REPLACE INTO tmp_proxies_priv SELECT @current_hostname, IFNULL(@auth_root_socket, 'root') creates the $user@$current_host but will not error if @auth_root_socket is null. Note @current_hostname lines are filtered out with --cross-bootstrap in mariadb-install-db so it was needed to include this expression for consistency. Like the existing mysql_system_tables.sql is used to create teh $user@localhost proxies_priv. Test cases roles.acl_statistics, perfschema,privilege_table_io depends on the number of proxy users. After: --auth-root-authentication-method=normal: MariaDB [mysql]> select * from global_priv; +-----------+-------------+--------------------------------------------------------------------------------------------------------------------------+ | Host | User | Priv | +-----------+-------------+--------------------------------------------------------------------------------------------------------------------------+ | localhost | mariadb.sys | {"access":0,"plugin":"mysql_native_password","authentication_string":"","account_locked":true,"password_last_changed":0} | | localhost | root | {"access":18446744073709551615} | | bark | root | {"access":18446744073709551615} | | 127.0.0.1 | root | {"access":18446744073709551615} | | ::1 | root | {"access":18446744073709551615} | | localhost | | {} | | bark | | {} | +-----------+-------------+--------------------------------------------------------------------------------------------------------------------------+ 7 rows in set (0.001 sec) MariaDB [mysql]> select * from proxies_priv; +-----------+------+--------------+--------------+------------+---------+---------------------+ | Host | User | Proxied_host | Proxied_user | With_grant | Grantor | Timestamp | +-----------+------+--------------+--------------+------------+---------+---------------------+ | localhost | root | | | 1 | | 2023-07-10 12:12:24 | | 127.0.0.1 | root | | | 1 | | 2023-07-10 12:12:24 | | ::1 | root | | | 1 | | 2023-07-10 12:12:24 | | bark | root | | | 1 | | 2023-07-10 12:12:24 | +-----------+------+--------------+--------------+------------+---------+---------------------+ --auth-root-authentication-method=socket: MariaDB [mysql]> select * from proxies_priv; +-----------+------+--------------+--------------+------------+---------+---------------------+ | Host | User | Proxied_host | Proxied_user | With_grant | Grantor | Timestamp | +-----------+------+--------------+--------------+------------+---------+---------------------+ | localhost | root | | | 1 | | 2023-07-10 12:11:55 | | localhost | dan | | | 1 | | 2023-07-10 12:11:55 | | bark | dan | | | 1 | | 2023-07-10 12:11:55 | +-----------+------+--------------+--------------+------------+---------+---------------------+ 3 rows in set (0.017 sec) MariaDB [mysql]> select * from global_priv; +-----------+-------------+--------------------------------------------------------------------------------------------------------------------------------------------+ | Host | User | Priv | +-----------+-------------+--------------------------------------------------------------------------------------------------------------------------------------------+ | localhost | mariadb.sys | {"access":0,"plugin":"mysql_native_password","authentication_string":"","account_locked":true,"password_last_changed":0} | | localhost | root | {"access":18446744073709551615,"plugin":"mysql_native_password","authentication_string":"invalid","auth_or":[{},{"plugin":"unix_socket"}]} | | localhost | dan | {"access":18446744073709551615,"plugin":"mysql_native_password","authentication_string":"invalid","auth_or":[{},{"plugin":"unix_socket"}]} | | localhost | | {} | | bark | | {} | +-----------+-------------+--------------------------------------------------------------------------------------------------------------------------------------------+ 5 rows in set (0.000 sec) MariaDB [mysql]> show grants; +----------------------------------------------------------------------------------------------------------------------------------------+ | Grants for dan@localhost | +----------------------------------------------------------------------------------------------------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO `dan`@`localhost` IDENTIFIED VIA mysql_native_password USING 'invalid' OR unix_socket WITH GRANT OPTION | | GRANT PROXY ON ''@'%' TO 'dan'@'localhost' WITH GRANT OPTION | +----------------------------------------------------------------------------------------------------------------------------------------+
-
- 15 Sep, 2023 4 commits
-
-
Yuchen Pei authored
Removed some redundant hint related string literals from spd_db_conn.cc Clean up SPIDER_PARAM_*_[CHAR]LEN[S] Adding tests covering monitoring_kind=2. What it does is that it reads from mysql.spider_link_mon_servers with matching db_name, table_name, link_id, and does not do anything about that... How monitoring_* can be useful: in the deprecated spider high availability feature, when one remote fails, spider will try another remote, which apparently makes use of these table parameters. A test covering the query_cache_sync table param. Some further tests on some spider table params. Wrapper should be case insensitive. Code documentation on spider priority binary tree. Add an assertion that static_key_cardinality is always -1. All tests pass still
-
Yuchen Pei authored
This helps eliminate "server exists" failures Also, spider/bugfix.mdev_29676, when enabled after MDEV-29525 is pushed will fail because we have not --recorded the result. But the failure will only emerge when working on MDEV-31138 where we manually re-enable this test, so let's worry about that then.
-
Yuchen Pei authored
Also: - clean up spider_check_and_get_casual_read_conn() and spider_check_and_set_autocommit() - remove a couple of commented out code blocks
-
Yuchen Pei authored
-
- 14 Sep, 2023 5 commits
-
-
Anel Husakovic authored
- Reviewer: <knielsen@knielsen-hq.org> <brandon.nesterenko@mariadb.com>
-
Anel Husakovic authored
- Remove extra connections in the form of `server_number_1` for the same server during initialization of servers in the `rpl_init.inc` file. - Remove disconnecting and reconnecting to the same connections, since they are not used by the test. - Update comments about the above. - Reviewer: <knielsen@knielsen-hq.org> <brandon.nesterenko@mariadb.com>
-
Anel Husakovic authored
- Fix the calling of the assertion condition when `rpl_check_server_ids` parameter is used. - Fix comments regarding the default usage and configuration files extension in this case. - Reviewer: <knielsen@knielsen-hq.org> <brandon.nesterenko@mariadb.com>
-
Anel Husakovic authored
- `default_client` is included already in rpl_1slave_base.cnf`, so remove it from `my.cnf` - Remove option group for `mysqld` server as and add comment how to override specific settings for specific server - Reviewer: <brandon.nesterenko@mariadb.com>
-
Yuchen Pei authored
This function trivially returns false
-
- 13 Sep, 2023 3 commits
-
-
Brandon Nesterenko authored
The SQL thread and a user connection executing SHOW SLAVE STATUS have a race condition on Last_SQL_Errno, such that a slave which previously errored and stopped, on its next start, SHOW SLAVE STATUS can show that the SQL Thread is running while the previous error is also showing. The fix is to move when the last error is cleared when the SQL thread starts to occur before setting the status of Slave_SQL_Running. Thanks to Kristian Nielson for his work diagnosing the problem! Reviewed By: ============ Andrei Elkin <andrei.elkin@mariadb.com> Kristian Nielson <knielsen@knielsen-hq.org>
-
Daniel Black authored
Remove TLSv1.1 from the default tls_version system variable. Output a warning if TLSv1.0 or TLSv1.1 are selected. Thanks Tingyao Nian for the feature request.
-
Oleg Smirnov authored
There is a list of plugins in the WiX configuration file for HeidiSQL, and the installer only installs DLLs from that list although the HeidiSQL portable archive may include other plugins. This commit adds client_ed25519.dll to this list and also rearranges the list alphabetically, so it is easier to verify its contents
-
- 11 Sep, 2023 9 commits
-
-
Julius Goryavsky authored
-
Daniele Sciascia authored
- Deterministic test to reproduce the warning - Update wsrep-lib to fix the issue Signed-off-by: Julius Goryavsky <julius.goryavsky@mariadb.com>
-
Jan Lindström authored
Test case is starting too many servers that are not really needed for original problem testing. This fix reduces number of servers to make test case smaller and more robust. Signed-off-by: Julius Goryavsky <julius.goryavsky@mariadb.com>
-
Jan Lindström authored
Problem was that if wsrep_notify_cmd was set it was called with a new status "joined" it tries to connect to the server to update some table, but the server isn't initialized yet, it's not listening for connections. So the server waits for the script to finish, script waits for mariadb client to connect, and the client cannot connect, because the server isn't listening. Fix is to call script only when Galera has already formed a view or when it is synched or donor. This fix also enables following test cases: * galera.MW-284 * galera.galera_binlog_checksum * galera_var_notify_ssl_ipv6 Signed-off-by: Julius Goryavsky <julius.goryavsky@mariadb.com>
-
Sergei Golubchik authored
* version_compile_os can be "linux-systemd", not equal to "Linux" * main.no-threads forces no-threads scheduler, a check whether it has one_thread_per_connection is guaranteed to fail.
-
Marko Mäkelä authored
innodb_monitor_validate(): Let item_val_str() allocate the memory in THD, so that it will be available to innodb_monitor_update(). In this way, there is no need to allocate another buffer, and no problem if the call to innodb_monitor_update() is skipped due to an invalid value that is passed to another configuration parameter. There are some other callers to st_mysql_sys_var::val_str() that validate configuration parameters that are related to FULLTEXT INDEX, but they will allocate memory by invoking thd_strmake().
-
Marko Mäkelä authored
Currently include/have_innodb_4k.inc etc. files only check that the server is running with the corresponding page size. I think it would be more convenient if they actually enforced the setting.
-
Marko Mäkelä authored
The test innodb_zip.index_large_prefix_4k would not run unless it is invoked as ./mtr --mysqld=--innodb-page-size=4k innodb_zip.index_large_prefix_4k This test was originally developed to cover an option that was removed in commit 0c92794d. Starting with MariaDB Server 10.2, which introduced innodb_default_row_format=dynamic, the option innodb_large_prefix had become useless. Let us remove some of the stale tests and adjust the outcome to the expected behaviour.
-
Marko Mäkelä authored
Let us avoid inserting the rows fid=714 and fid=715, because we would evaluate g=NULL for them, and NULL values are not allowed in InnoDB SPATIAL INDEX. Also, let the test run on any page size, and on non-debug builds.
-
- 09 Sep, 2023 1 commit
-
-
Sergei Golubchik authored
and "Undefined subroutine &Manager::move"
-