- 24 Nov, 2023 4 commits
-
-
Dmitry Shulga authored
This patch is actually follow-up for the task MDEV-23902: MariaDB crash on calling function to use correct query arena for a statement. In case invocation of a function is in progress use its call arena, else use current query arena that can be either a statement or a regular query arena.
-
Yuchen Pei authored
We remove the call to update spider persistent table stats (sts/crd) in spider_free_share(). This prevents spider from opening and closing further tables during close(), which fixes the following issues: MDEV-28739: ha_spider::close() is called during tdc_start_shutdown(), which is called after query_cache_destroy(). Closing the sts/crd Aria tables will trigger a call to Query_cache::invalidate_table(), which will attempt to use the query cache mutex structure_guard_mutex destroyed previously. MDEV-29421: during ha_spider::close(), spider_free_share() could trigger another spider_free_share() through updating sts/crd table, because open_table() calls tc_add_table(), which could trigger another ha_spider::close()... Since spider sts/crd system tables are only updated here, there's no use for these tables any more, and we remove all uses of these tables too. The removal should not cause any performance issue, as in memory spider table stats are only updated based on a time interval (spider_sts_interval and spider_crd_interval), which defaults to 10 seconds. It should not affect accuracy either, due to the infrequency of server restart. And inaccurate stats are not a problem for optimizer anyway. To be on the safe side, we defer the removal of the spider sts/crd tables themselves to future.
-
Yuchen Pei authored
They are not used. The code paths are never reached.
-
Yuchen Pei authored
This could help prevent race condition when shutting down the server not long after loading spider. Thus only needed for 10.4-10.6.
-
- 23 Nov, 2023 5 commits
-
-
Marko Mäkelä authored
btr_cur_update_in_place(): Update the DB_TRX_ID,DB_ROLL_PTR also on the compressed copy of the page. In a test case, a server built with cmake -DWITH_INNODB_EXTRA_DEBUG=ON would crash in page_zip_validate() due to the inconsistency. In a normal debug build, a different assertion would fail, depending on when the uncompressed page was restored from the compressed page. In MariaDB Server 10.5, this bug had already been fixed by commit b3d02a1f (MDEV-12353).
-
Oleksandr Byelkin authored
-
Lena Startseva authored
sets of the first and second execution. The results of the first and second execution are compared only if result logging is enabled Comparing two result sets is done as comparing two strings. Added a new method 'read_stmt_results' to get a result set after execution of prepare statement.
-
Oleksandr Byelkin authored
-
Anel Husakovic authored
- Allow database level access via `LOCK TABLES` to execute statement `BACKUP [un]LOCK <object>` - `BACKUP UNLOCK` works only with `RELOAD` privilege. In case there is `LOCK TABLES` privilege without `RELOAD` privilege, we check if backup lock is taken before. If it is not we raise an error of missing `RELOAD` privilege. - We had to remove any error/warnings from calling functions because `thd->get_stmt_da()->m_status` will be set to error and will break `my_ok()`. - Added missing test coverage of `RELOAD` privilege to `main.grant.test` Reviewer: <daniel@mariadb.org>
-
- 22 Nov, 2023 1 commit
-
-
Rex authored
Statements affected by this bug have all the following 1) select statements with a sub-query 2) that sub-query includes a group-by clause 3) that group-by clause contains an expression 4) that expression has a reference to view When a view is used in a group by expression, and that group by can be eliminated in a sub-query simplification as part of and outer condition that could be in, exists, > or <, then the table structure left behind will have a unit that contains a null select_lex pointer. If this happens as part of a prepared statement, or execute in a stored procedure for the second time, then, when the statement is executed, the table list entry for that, now eliminated, view is "opened" and "reinit"ialized. This table entry's unit no longer has a select_lex pointer. Prior to MDEV-31995 this was of little consequence, but now following this null pointer will cause a crash. Reviewed by Igor Babaev (igor@mariadb.com)
-
- 21 Nov, 2023 6 commits
-
-
Denis Protivensky authored
- Add selected tables as shared keys for CTAS certification - Set proper security context on the replayer thread - Disallow CTAS command retry Signed-off-by: Julius Goryavsky <julius.goryavsky@mariadb.com>
-
Julius Goryavsky authored
-
Jan Lindström authored
This is caused by fact that VARIABLE_VALUE is defined in variables_fields_info (sql_show.cc) as 2048. wsrep_provider_options contain few path variables and this could cause string truncation on deep and long directory paths. Signed-off-by: Julius Goryavsky <julius.goryavsky@mariadb.com>
-
Julius Goryavsky authored
-
Julius Goryavsky authored
-
Thirunarayanan Balathandayuthapani authored
Problem: ======== - InnoDB fails to free the allocated buffer of stored cursor when information schema query is interrupted. Solution: ========= - In case of error handling, information schema query should free the allocated buffer to store the cursor.
-
- 20 Nov, 2023 3 commits
-
-
Yuchen Pei authored
It is unused, and causing segfaults
-
Kristian Nielsen authored
Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
-
Anel Husakovic authored
- Commit e3bffd57 introduced the change - Fixed with commit 2d857144 in 10.4 (no removal of `Wimplicit-fallthrough=2`) - Fixed with commit 4a75b480 in 10.5+ - Closing PR #2817 Reviewed by: <monty@mariadb.org>
-
- 19 Nov, 2023 1 commit
-
-
Yuchen Pei authored
This will avoid issues like MDEV-32486 IDs used in - spider_alloc_calc_mem_init() - spider_string::init_calc_mem() - spider_malloc() - spider_bulk_alloc_mem() - spider_bulk_malloc()
-
- 18 Nov, 2023 1 commit
-
-
Nayuta Yanagisawa authored
The server doesn't use the enforced storage engine in ALTER TABLE without ENGINE clause to avoid an unwanted engine change. However, the server tries to use the enforced engine in CREATE INDEX. As a result, the false positive error is raised. The server should not apply the enforced engine in CREATE INDEX too.
-
- 17 Nov, 2023 12 commits
-
-
Rex authored
Lex_ident_sys had no new operator and was used incorrectly in save_item_list_names(), so leaked memory.
-
Kristian Nielsen authored
MDEV-20523: rpl.create_or_replace_mix, rpl.create_or_replace_statement failed in buildbot with wrong result Wait for the disconnect of the other connection to complete, before running SHOW BINLOG EVENTS. Otherwise the DROP TEMPORARY TABLE that is binlogged during disconnect may not have appeared yet depending on thread scheduling. Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
-
Kristian Nielsen authored
Fix wrong change to rpl.rpl_shutdown_wait_slaves. After shutting down the master, slaves may or may not succeed in reconnecting depending on the timing on their reconnect relative to master restart. So don't assume all IO threads will be running, just restart any slave that needs it. Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
-
Kristian Nielsen authored
Fix sporadic test failure in rpl.rpl_ssl1. The test incorrectly did a STOP SLAVE too early, which could race with the expected 'Access denied' error. Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
-
Kristian Nielsen authored
Fix sporadic test failures in rpl.rpl_set_statement_default_master and rpl.rpl_slave_load_tmpdir_not_exist. A race between START and STOP SLAVE could leave an error condition that causes test failure after MDEV-32168. Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
-
Kristian Nielsen authored
Test rpl.show_status_stop_slave_race-7126 now fails sporadically because it is expected to sometimes (but not always) leave an error condition after slave stop. Fix by explicitly allowing the error condition in this case. Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
-
Kristian Nielsen authored
Fix a start/stop race that causes occasional test failure after more the more strict error check of MDEV-32168. Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
-
Brandon Nesterenko authored
Calling SHOW BINLOG EVENTS FROM <offset> with an invalid offset writes error messages into the server log about invalid reads. The read errors that occur from this command should only be relayed back to the user though, and not written into the server log. This is because they are read-only and have no impact on server operation, and the client only need be informed to correct the parameter. This patch fixes this by omitting binary log read errors from the server when the invocation happens from SHOW BINLOG EVENTS. Additionally, redundant error messages are omitted when calling the string based read_log_event from the IO_Cache based read_log_event, as the later already will report the error of the former. Reviewed By: ============ Kristian Nielsen <knielsen@knielsen-hq.org> Andrei Elkin <andrei.elkin@mariadb.com>
-
Marko Mäkelä authored
To allow cmake -DWITH_ASAN=ON to work out of the box when using newer compilers, we must increase the default thread stack size. By design, AddressSanitizer will allocate some "sentinel" areas in stack frames so that it can better catch buffer overflows, by trapping access to memory addresses that reside between stack-allocated variables. Apparently, some parameters related to this have been changed recently, possibly to allow -fsanitize=address to catch more errors.
-
Yuchen Pei authored
This fixes MDEV-30014, MDEV-29456, MDEV-29667, and MDEV-30049. The server may ask storage engines to unlock when the original sql command is not UNLOCK. This patch makes sure that spider honours these requests, so that the server has the correct idea which tables are locked and which are not. MDEV-29456, MDEV-29667, MDEV-30049: a later LOCK statement would, as the first step, unlock locked tables and clear the OPTION_TABLE_LOCK bit in thd->variables.option_bits, as well as locked_tables_list, indicating no tables are locked. If Spider does not unlock because the sql command is not UNLOCK, and if after this the LOCK statement fails to lock any tables, these indications that no tables are locked remains, so a later UNLOCK TABLES; statement would not try to unlock any table. Causing later statements requiring mdl locks to hang on waiting until lock_wait_timeout (default 1h) has passed. MDEV-30014: when a LOCK statement tries to lock more than one tables, say t2 and t3 as in mdev_30014.test, and t2 succeeds but t3 fails, the sql layer would try to undo by unlocking t2, and again, if Spider does not honour this request, the sql layer would assume t2 has been unlocked, but later actions on t2 or t2's remote table could hang on waiting for the mdl.
-
Yuchen Pei authored
Spider populates its lock lists (a hash) in store_lock(), and normally clears them in the actual lock_tables(). However, if lock_tables() fails, there's no reset_lock() method for storage engine handlers, which can cause bad things to happen. For example, if one of the table involved is dropped and recreated, or simply TRUNCATEd, when executing LOCK TABLES again, the lock lists would be queried again in store_lock(), which could cause access to freed space associated with the dropped table.
-
Yuchen Pei authored
Spider GBH's query rewrite of table joins is overly complex and error-prone. We replace it with something closer to what dbug_print() (more specifically, print_join()) does, but catered to spider. More specifically, we replace the body of spider_db_mbase_util::append_from_and_tables() with a call to spider_db_mbase_util::append_join(), and remove downstream append_X functions. We make it handle const tables by rewriting them as (select 1). This fixes the main issue in MDEV-26247. We also ban semijoin from spider gbh, which fixes MDEV-31645 and MDEV-30392, as semi-join is an "internal" join, and "semi join" does not parse, and it is different from "join" in that it deduplicates the right hand side Not all queries passed to a group by handler are valid (MDEV-32273), for example, a join on expr may refer outer fields not in the current context. We detect this during the handler creation when walking the join. See also gbh_outer_fields_in_join.test. It also skips eliminated tables, which fixes MDEV-26193.
-
- 16 Nov, 2023 4 commits
-
-
Yuchen Pei authored
-
Yuchen Pei authored
Spider gbh query rewrite should get table for fields in a simple way. Add a method spider_fields::find_table that searches its table holders to find table for a given field. This way we will be able to get rid of the first pass during the gbh creation where field_chains and field_holders are created. We also check that the field belongs to a spider table while walking through the query, so we could remove all_query_fields_are_query_table_members(). However, this requires an earlier creation of the table_holder so that tables are added before checking. We do that, and in doing so, also decouple table_holder and spider_fields Remove unused methods and fields. Add comments.
-
Yuchen Pei authored
Two methods from spider_fields. There are probably more of these conn_holder related methods that can be removed reappend_tables_part() reappend_tables()
-
Anel Husakovic authored
- Reviewer: <knielsen@knielsen-hq.org> <brandon.nesterenko@mariadb.com> <andrei.elkin@mariadb.com>
-
- 15 Nov, 2023 3 commits
-
-
Daniel Black authored
Originally requested to be infinity, but rolled back to 99% to allow for a remote ssh connection or the odd needed system job. This is up from 15% which is the effective default of DefaultTasksMax. Thanks Rick Pizzi for the bug report.
-
Kristian Nielsen authored
MDEV-30064: binlog.binlog_mysqlbinlog_raw_flush sometimes fails with Errcode: 2 "No such file or directory" Increase a 1-second timeout, which is a bit too small for slow buildbot builders. Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
-
Kristian Nielsen authored
Reset the GTID sequence at the start of test so earlier run tests does not influence the expected GTID sequence. Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
-