- 19 Oct, 2023 6 commits
-
-
Monty authored
Problem was that JOIN_TAB::cleanup() was not run because JOIN::top_join_tab_count was not set in case of early errors. Fixed by setting JOIN::tab_join_tab_count when JOIN_TAB's are allocated. Something that should eventually be fixed: - Cleaning up JOIN_TAB's is now done in 3 different loops. JOIN_TAB::cleanup() is only doing a partial cleanup. Other cleanups are done outside of JOIN_TAB::cleanup(). The above should be fixed so that JOIN_TAB::cleanup() is freeing everything related to it's own memory, including all its sub JOIN_ TAB's. JOIN::cleanup() should only loop over all it's top JOIN_TAB's and call JOIN_TAB::cleanup() on these. This will greatly simplify and speedup the current code (as we now do some cleanup's twice).
-
Monty authored
Other usage if persistent statistics is checking 'stats_is_read' in caller, which is why this was not noticed earlier. Other things: - Simplified no_stat_values_provided
-
Marko Mäkelä authored
-
Thirunarayanan Balathandayuthapani authored
srv_all_undo_tablespaces_open(): While opening the extra unused undo tablespaces, InnoDB should use ULINT_UNDEFINED instead of SRV_SPACE_ID_UPPER_BOUND.
-
Thirunarayanan Balathandayuthapani authored
recv_recovery_from_checkpoint_start(): InnoDB should add the redo log block header + trailer size while checking the log sequence number in log file with log sequence number in the system tablespace first page.
-
Marko Mäkelä authored
In commit 384eb570 the debug check was relaxed in trx_undo_header_create(), not in the intended function trx_undo_write_xid().
-
- 18 Oct, 2023 2 commits
-
-
Marko Mäkelä authored
fil_aio_callback(): Invoke fil_node_t::complete_write() before releasing any page latch, so that in case a log checkpoint is executed roughly concurrently with the first write into a file since the previous checkpoint, we will not miss a fdatasync() or fsync() call to make the write durable.
-
Marko Mäkelä authored
In MemorySanitizer builds of 10.10 and 10.11, we would rather often have the assertion fail in innodb_init() during mariadb-backup --prepare. The assertion could also fail during InnoDB startup, but less often. Before commit 685d958e in 10.8 the log file cleanup after a successfully applied backup is different, and the os_aio_pending_writes() assertion is in srv0start.cc. IORequest::write_complete(): Invoke node->complete_write() before releasing the page latch, so that a log checkpoint that is about to execute concurrently will not miss a fdatasync() or fsync() on the file, in case this was the first write since the last such call. create_log_file(), srv_start(): Replace the debug assertion with a debug check. For all intents and purposes, all writes could have been completed but some write_io_callback() may not have invoked io_slots::release() yet.
-
- 17 Oct, 2023 1 commit
-
-
Thirunarayanan Balathandayuthapani authored
Problem: ======== - InnoDB fails to open undo tablespace when page0 is corrupted and fails to throw error. Solution: ========= - InnoDB throws DB_CORRUPTION error when InnoDB encounters page0 corruption of undo tablespace. - InnoDB restores the page0 of undo tablespace from doublewrite buffer if it encounters page corruption - Moved Datafile::restore_from_doublewrite() to recv_dblwr_t::restore_first_page(). So that undo tablespace and system tablespace can use this function instead of duplicating the code srv_undo_tablespace_open(): Returns 0 if file doesn't exist or ULINT_UNDEFINED if page0 is corrupted.
-
- 16 Oct, 2023 2 commits
-
-
Thirunarayanan Balathandayuthapani authored
- InnoDB fails to check the overflow buffer while applying the operation to the table that was rebuilt. This is caused by commit 3cef4f8f (MDEV-515).
-
Monty authored
-
- 14 Oct, 2023 3 commits
-
-
Monty authored
Fixed missing initialization of Alter_info() This could cause crashes in some create table like scenarios where some generated indexes where automatically dropped. I also added a test that we do not try to drop from index_stats for temporary tables.
-
Monty authored
The intentention was always to not create histograms for single value unique keys (as histograms is not useful in this case), but because of a bug in the code this was still done. The changes in the test cases was mainly because hist_size is now NULL for these kind of columns.
-
Sergei Golubchik authored
This reverts commit 03c9a4ef. The fix is wrong. It was doing this: if the uninitialized wait->m_class has some specific value, then don't initialize it.
-
- 13 Oct, 2023 4 commits
-
-
Sergei Golubchik authored
-
Vlad Lesin authored
MDEV-32272 lock_release_on_prepare_try() does not release lock if supremum bit is set along with other bits set in lock's bitmap The error is caused by MDEV-30165 fix with the following commit: d13a57ae There is logical error in lock_release_on_prepare_try(): if (supremum_bit) lock_rec_unlock_supremum(*cell, lock); else lock_rec_dequeue_from_page(lock, false); Because there can be other bits set in the lock's bitmap, and the lock type can be suitable for releasing criteria, but the above logic releases only supremum bit of the lock. The fix is to release lock if it suits for releasing criteria and unlock supremum if supremum is locked otherwise. Tere is also the test for the case, which was reported by QA team. I placed it in a separate files, because it requires debug build. Reviewed by: Marko Mäkelä
-
Sergei Golubchik authored
-
Thirunarayanan Balathandayuthapani authored
MDEV-31098 InnoDB Recovery doesn't display encryption message when no encryption configuration passed - InnoDB fails to report the error when encryption configuration wasn't passed. This patch addresses the issue by adding the error while loading the tablespace and deferring the tablespace creation.
-
- 12 Oct, 2023 3 commits
-
-
Daniel Black authored
Review cleanups.
-
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.
-
Marko Mäkelä authored
This fixes up a merge of commit 4fb8f7d0 with respect to commit ea37b144.
-
- 10 Oct, 2023 4 commits
-
-
Monty authored
The problem was that RANGE_OPT_PARAM was not completely initialized in some cases. Added bzero() to ensure that all elements are always initialized.
-
Monty authored
-
Monty authored
Fixed hang when renaming index to original name
-
Monty authored
Use Dummy_error_handler in open_stat_tables() to ignore all errors when opening statistics tables.
-
- 08 Oct, 2023 6 commits
-
-
Monty authored
Part of the test did not work with view_protocol as the query written to the slow_log table is changed because of view_protocol.
-
Monty authored
-
Monty authored
There where several reasons why the test failed: - Constructors for Field_double and Field_float changed an argument to the constructor instead of a the correct class variable. - gcc 7.5.0 produced wrong code when inlining Field_double constructor into Field_test_double constructor. Fixed by changing the correct class variable and make the constructors not inline to go around the gcc bug.
-
Otto Kekalainen authored
In commit 5ea5291d @sanja-byelkin for unknown reason switched the file mode for 3 Galera tzinfo related test files from 644 -> 755. This exists only from branch 10.6 onward: $ git checkout 10.5 $ find mysql-test -executable -name *.test -or -executable -name *.result (no results) $ git checkout 10.6 $ find mysql-test -executable -name *.test -or -executable -name *.result mysql-test/suite/galera/t/mysql_tzmysql-test/suite/galera/t/mysql_tzinfo_to_sql.test mysql-test/suite/galera/t/mariadb_tzinfo_to_sql.test mysql-test/suite/galera/r/mariadb_tzinfo_to_sql.resultinfo_to_sql.test mysql-test/suite/galera/t/mariadb_tzinfo_to_sql.test mysql-test/suite/galera/r/mariadb_tzinfo_to_sql.result No test file nor test result file should be executable, so run chmod -x on them. 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.
-
Monty authored
The bug was in the test case. The problem was that maria_empty_logs.inc deleted aria log files before the server was properly shutdown. Fixed by waiting for pid file to disappear before starting to delete log files. Other things: - Fixed that translog_purge_at_flush() will not stop deleting files even if one file could not be deleted.
-
Monty authored
The problem was that sometimes InnoDB returned sligtly wrong record count for table, which causes the optimizer to disregard the result from the range optimizer. The end result was that the optimizer choosed a ref access instead of a range access which caused errors in buildbot. Fixed by adding more rows to the table to ensure that table scan is more costly than range scan of the given interval.
-
- 06 Oct, 2023 4 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
log_t::create(): Return whether the initialisation succeeded. It may fail if too large an innodb_log_buffer_size is specified.
-
Marko Mäkelä authored
copy_back(): Also copy the dummy empty ib_logfile0 so that MariaDB Server 10.8 or later can be started after --copy-back or --move-back. Thanks to Daniel Black for reporting this. This is a 10.5 version of commit ebf36492
-
Marko Mäkelä authored
Table_cache_instance::operator new[](size_t): Reverted the changes that were made in commit 8edef482 and move them to the only caller.
-
- 04 Oct, 2023 2 commits
-
-
Vladislav Vaintroub authored
Use an std::atomic_flag to track thread creation in progress. This is mainly a cleanup, the effect of this change was not measureable in my tests.
-
Vladislav Vaintroub authored
Add threadpool functionality to restrict concurrency during "batch" periods (where tasks are added in rapid succession). This will throttle thread creation more agressively than usual, while keeping performance at least on-par. One of these cases is bufferpool load, where async read IOs are executed without any throttling. There can be as much as 650K read IOs for loading 10GB buffer pool. Another one is recovery, where "fake read" IOs are executed. Why there are more threads than we expect? Worker threads are not be recognized as idle, until they return to the standby list, and to return to that list, they need to acquire mutex currently held in the submit_task(). In those cases, submit_task() has no worker to wake, and would create threads until default concurrency level (2*ncpus) is satisfied. Only after that throttling would happen.
-
- 03 Oct, 2023 3 commits
-
-
Michael Widenius authored
The problem was that we did not handle errors properly in JOIN::get_best_combination. In case an early error, JOIN->join_tab would contain unintialized values, which would cause errors on cleanup(). The error in question was reported earlier, but not noticed until later. One cause of this is that most of the sql_select.cc code just checks thd->fatal_error and not thd->is_error(). Fixed by changing of checks of fatal_error to is_error().
-
Monty authored
This allows a user to to change the default value of MAX_SEL_ARGS (16000) in the rare case where they neeed more generated SEL_ARGS (as part of the range optimizer)
-
Monty authored
Raise notes if indexes cannot be used: - in case of data type or collation mismatch (diferent error messages). - in case if a table field was replaced to something else (e.g. Item_func_conv_charset) during a condition rewrite. Added option to write warnings and notes to the slow query log for slow queries. New variables added/changed: - note_verbosity, with is a set of the following options: basic - All old notes unusable_keys - Print warnings about keys that cannot be used for select, delete or update. explain - Print unusable_keys warnings for EXPLAIN querys. The default is 'basic,explain'. This means that for old installations the only notable new behavior is that one will get notes about unusable keys when one does an EXPLAIN for a query. One can turn all of all notes by either setting note_verbosity to "" or setting sql_notes=0. - log_slow_verbosity has a new option 'warnings'. If this is set then warnings and notes generated are printed in the slow query log (up to log_slow_max_warnings times per statement). - log_slow_max_warnings - Max number of warnings written to slow query log. Other things: - One can now use =ALL for any 'set' variable to set all options at once. For example using "note_verbosity=ALL" in a config file or "SET @@note_verbosity=ALL' in SQL. - mysqldump will in the future use @@note_verbosity=""' instead of @sql_notes=0 to disable notes. - Added "enum class Data_type_compatibility" and changing the return type of all Field::can_optimize*() methods from "bool" to this new data type. Reviewer & Co-author: Alexander Barkov <bar@mariadb.com> - The code that prints out the notes comes mainly from Alexander
-