- 25 Jul, 2023 1 commit
-
-
Ian Gilfillan authored
-
- 24 Jul, 2023 3 commits
-
-
Otto Kekäläinen authored
For the sake of readable diffs this change is done separately from the previous commit and it changes all man page headers to: - Use correct syntax \fB and \fR to make titles bold instead of previous capitalized version that had no effect - Omit unnecessary \&. syntax, works fine without it - Bump version to 10.11 Ideally the version would automatically be inherited from the build/release, but for now at least update it manually to match what is in the VERSION file of this release branch. 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.
-
Otto Kekäläinen authored
Add \FR on lines that start with \FB as it is likely useful, but not stricly necessary. However if there is just \ the line won't render at all as happened in example below from 'man mysql-test-test.pl.1': AUTHOR MariaDB Foundation (http://www.mariadb.org/). MYSQL-TEST-RUN() -> AUTHOR MariaDB Foundation (http://www.mariadb.org/). MariaDB 10.11 15 May 2020 MYSQL-TEST-RUN(1) Also use full command name instead of truncated ones. 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.
-
Otto Kekäläinen authored
The man pages has several places where \' is intended to escape the single quote and just print '. However, in reality this will print an ` (acute accent). Fix this by removing excess backslashes. Also remove some excess & in front of dots, such escaping is also unnecessary. Also join several lines to avoid lone words in quotes to be read by groff as macros when they are just text. In a table (t{}) the content must be on new lines separately, so groff will try to read them as macros too, so use \(aq that renders to ' (single quote). This error was originally detected by Lintian: https://lintian.debian.org/tags/acute-accent-in-manual-page Example of man page sections before and after: Make a backup of each table´s data file using the name tbl_name.OLD. -> Make a backup of each table's data file using the name tbl_name.OLD. A typical debug_options string is ´d:t:o,file_name´. The default is ´d:t:o,/tmp/my_print_defaults.trace´. -> A typical debug_options string is 'd:t:o,file_name'. The default is 'd:t:o,/tmp/my_print_defaults.trace'. shell> mysql --xml -uroot -e "SHOW VARIABLES LIKE ´version%´" <?xml version="1.0"?> <resultset statement="SHOW VARIABLES LIKE ´version%´" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> -> shell> mysql --xml -uroot -e "SHOW VARIABLES LIKE 'version%'" <?xml version="1.0"?> <resultset statement="SHOW VARIABLES LIKE 'version%'" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> This command was used to validate no man pages have syntax errors: for x in *.? do echo "##### $x #####" LC_ALL=C.UTF-8 MANROFFSEQ='' MANWIDTH=80 man --warnings -E UTF-8 -l -Tutf8 -Z $x >/dev/null done The man pages are not perfect after this, there are still a lot of suboptimal syntax, but this helps towards better man pages. 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 2 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
- 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
-
- 30 Jun, 2023 3 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
-
- 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 4 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ä
-
- 27 Jun, 2023 5 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
recv_sys_t::parse(): For undo tablespace truncation mini-transactions, remember the start_lsn instead of the end LSN. This is what we expect after commit 461402a5 (MDEV-30479).
-
- 26 Jun, 2023 2 commits
-
-
Marko Mäkelä authored
-
Rucha Deodhar authored
mysql.proc. The table is probably corrupted" Analysis: When mysql_upgrade runs statements for upgrade, characterset is converted to utf8mb4 because server starts with old_mode that interprets utf8 to utf8mb4, but mysql.proc table has "utf8mb3" as hardcoded, so it crashes with corrupted table. Fix: Changed Table_check_intact::check() definition to allow both utf8mb3 and utf8mb4 by checking prefix and changing the upgrade scripts to explicitly use utf8mb3
-
- 25 Jun, 2023 7 commits
-
-
Monty authored
-
Michael Widenius authored
MDEV-29253 Detect incompatible MySQL partition scheme and either convert them or report to user and in error log. This task is about converting in place MySQL 5.6 and 5.7 partition tables to MariaDB as part of mariadb-upgrade. - Update TABLE_SHARE::init_from_binary_frm_image() to be able to read MySQL frm files with partitions. - Create .par file, if it do not exists, on open of partitioned table. Executing mariadb-upgrade will create all the missing .par files. The MySQL .frm file will be changed to MariaDB format after next ALTER TABLE. Other changes: - If we are using stored mysql_version to distingush between MySQL and MariaDB .frm file information, do not upgrade mysql_version in the .frm file as part of CHECK TABLE .. FOR UPGRADE as this would cause problems next time we parse the .frm file.
-
Monty authored
- Moved view checks after privilege tables are fixed. This is to avoid warnings about wrongly defined mysql.proc when checking views. - Don't use stat tables before they have been fixed. - Don't run mysql_fix_view() if 'FOR MYSQL' is used if the view is already a MariaDB view. - Added 'FOR UPGRADE' as an option for 'REPAIR VIEW' to be able to detect if the REPAIR command comes from mariadb_upgrade. In this case we get a warning, instead of an error, if a definer of a view does not exists.
-
Vicentiu Ciorbaru authored
In this case, one would end up calling my_error(ER_BAD_DB_ERROR, ...) with a null ptr for DB, which caused a NULL ptr dereference.
-
Vicentiu Ciorbaru authored
-
Vicentiu Ciorbaru authored
The original code generated a warning in gcc 13.1
-
Monty authored
-
- 21 Jun, 2023 1 commit
-
-
Brandon Nesterenko authored
When opening and locking tables, if triggers will be invoked in a separate database, thd->set_db() is invoked, thus freeeing the memory and headers which thd->db had previously pointed to. In row based replication, the event execution logic initializes thd->db to point to the database which the event targets, which is owned by the corresponding table share (introduced in d9898c9a for MDEV-7409). The problem then, is that during the table opening and locking process for a row event, memory which belongs to the table share would be freed, which is not valid. This patch replaces the thd->reset_db() calls to thd->set_db(), which copies-by-value, rather than by reference. Then when the memory is freed, our copy of memory is freed, rather than memory which belongs to a table share. Notes: 1. The call to change thd->db now happens on a higher-level, in Rows_log_event::do_apply_event() rather than ::do_exec_row(), in the call stack. This is because do_exec_row() is called within a loop, and each invocation would redundantly set and unset the db to the same value. 2. thd->set_db() is only used if triggers are to be invoked, as there is no vulnerability in the non-trigger case, and copying memory would be an unnecessary inefficiency. Reviewed By: ============ Andrei Elkin <andrei.elkin@mariadb.com>
-
- 20 Jun, 2023 1 commit
-
-
Sergei Petrunia authored
-
- 19 Jun, 2023 1 commit
-
-
Meng-Hsiu Chiang authored
-Wdeprecated-declarations: Replace deprecated xmlXPathInit() with xmlInitParser()[1] -Wmaybe-uninitialized: `fil1` was initialized to 0 in commit 0138220f to fix compiler warnings, but `fil2` was missed. ref: [1]: https://gnome.pages.gitlab.gnome.org/libxml2/devhelp/libxml2-xpath.html#xmlXPathInit
-
- 16 Jun, 2023 1 commit
-
-
Thirunarayanan Balathandayuthapani authored
- InnoDB shouldn't acquire the tablespace when it is being stopped or closed
-
- 15 Jun, 2023 1 commit
-
-
Sergei Petrunia authored
Fix a typo in make_join_statistics(): when updating statistics for derived table, set s->table->... not "table->..."
-
- 14 Jun, 2023 1 commit
-
-
Sergei Petrunia authored
(Same as TODO-3938: best_access_path shows negative costs for mrr=on) best_access_path() assumes that quick select cost includes (quick->rows/TIME_FOR_COMPARE) as a cost of checking the attached part of the WHERE condition. It calls adjust_quick_cost() to subtract addition from quick's cost. The problem was that DS-MRR cost formula didn't include this cost. For very large tables, adjust_quick_cost() would produce a negative cost which would cause assert in debug build or bad query plan choice in release builds. Approved-by: Monty <monty@mariadb.org>
-
- 13 Jun, 2023 2 commits
-
-
Monty authored
The effect was that that ROOT_FLAG_THREAD_SPECIFIC was cleared and the memory allocated by memroot would be contributed the the system, not to the thread. This exposed a bug in how "show explain for ..." allocated data. - The thread that did provide the explain allocated data in the "show explain" threads mem_root, which is marked as THREAD_SPECIFIC. - Fixed by allocating the explain data in a temporary explain_mem_root which is not THREAD_SPECIFIC. Other things: - Added extra checks when using update_malloc_size() - Do not call update_malloc_size() for memory not registered with update_malloc_size(). This avoid some wrong 'memory not freed' reports. - Added a checking of 'thd->killed' to ensure that main.truncate_notembedded.test still works. Reported by: Yury Chaikou
-
Monty authored
-