- 24 Nov, 2021 2 commits
-
-
Marko Mäkelä authored
The macro my_offsetof() performs pointer arithmetics that may be undefined behavior. As reported in MDEV-26272, it may cause clang -fsanitize=undefined to generate invalid memory references. struct PFS_events_statements: Convert to std::is_standard_layout by encapsulating the standard-layout struct PFS_events instead of deriving from it, so that the standard macro offsetof() can be used. PFS_events_statements::copy(): Renamed from copy_events_statements(). A cast to void* is now needed in memcpy() to avoid GCC -Wclass-memaccess "writing to an object ... leaves 64 bytes unchanged".
-
Daniel Black authored
There's no need for Debian to set config items to their default. Left commented user, datadir and tmpdir as these may want to be changed. lc-messages and skip-external-locks are so infrequently set even listing them looks overly verbose. socket left uncommented in [client-server] as various client implementations may have different defaults compiled in.
-
- 17 Nov, 2021 6 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
MDEV-23805 simplified the treatment of empty tables during ALTER TABLE, which could prevent the scenarios that were previously reported and fixed as MDEV-16131 and MDEV-24730. With the MDEV-23805 fix, the statement SET DEBUG_SYNC = 'now WAIT_FOR copied'; could occasionally time out, depending on timing. Apparently, there was a race condition where purge could resume (and empty the table) before ALTER TABLE got the chance to execute. We must prevent the purge of history from running before ALTER TABLE has started executing.
-
Eugene Kosov authored
fil_space_decrypt(): change signature to return status via dberr_t only. Also replace impossible condition with an assertion and prove it via test cases.
-
Igor Babaev authored
This bug affected queries with two or more references to a CTE referring another CTE if the definition of the latter contained an invocation of a stored function that used a base table. The bug could lead to a bogus error message or to an assertion failure. For any non-first reference to CTE cte1 With_element::clone_parsed_spec() is called that parses the specification of cte1 to construct the unit structure for this usage of cte1. If cte1 refers to another CTE cte2 outside of the specification of cte1 then With_element::clone_parsed_spec() has to be called for cte2 as well. This call is made by the function LEX::resolve_references_to_cte() within the invocation of the function With_element::clone_parsed_spec() for cte1. When the specification of a CTE is parsed all table references encountered in it must be added to the global list of table references for the query. As the specification for the non-first usage of a CTE is parsed at a recursive call of the parser the function With_element::clone_parsed_spec() invoked at this recursive call should takes care of appending the list of table references encountered in the specification of this CTE cte1 to the list of table references created for the query. And it should do it after the call of LEX::resolve_references_to_cte() that resolves references to CTEs defined outside of the specification of cte1 because this call may invoke the parser again for specifications of other CTEs and the table references from their specifications must ultimately appear in the global list of table references of the query. The code of With_element::clone_parsed_spec() misplaced the call of LEX::resolve_references_to_cte(). As a result LEX::query_tables_last used for the query that was supposed to point to the field 'next_global' of the last element in the global list of table references actually pointed to 'next_global' of the previous element. The above inconsistency certainly caused serious problems when table references used in the stored functions invoked in cloned specifications of CTEs were added to the global list of table references.
-
- 16 Nov, 2021 6 commits
-
-
Marko Mäkelä authored
In commit 7ae21b18 (MDEV-12353) the recovery of ROW_FORMAT=COMPRESSED tables was changed. Changes would be logged in a physical format for the compressed page image, so that the page need not be decompressed or compressed during recovery. page_zip_write_rec(): Log any update of the delete-mark flag in the ROW_FORMAT=COMPRESSED page. page_zip_dir_insert(): Copy the delete-mark flag. A delete-marked record may be inserted by btr_cur_pessimistic_update() via btr_cur_insert_if_possible(), page_cur_tuple_insert(), page_cur_insert_rec_zip(). In the observed scenario, it was an ROLLBACK. Presumably, the test case involved repeated DELETE and INSERT of the same key, or updating a key back and forth. This change alone might make the adjustment in page_zip_write_rec() redundant, but we play it safe because we failed to create a minimal test case for this scenario.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
Rows_log_event::do_apply_event(): Correct the mistake that was made in the merge 5f8561a6. In Galera, the query cache will be invalidated near the end of the function.
-
Marko Mäkelä authored
buf_flush_check_neighbors(): Relax a debug assertion that could fail for the very last page(s) of a ROW_FORMAT=COMPRESSED tables using a 1024-byte or 2048-byte page size. This assertion started to fail after commit d09426f9 (MDEV-26537) modified the .ibd file extension to occur in steps of 4096 bytes.
-
Vladislav Vaintroub authored
-
Vladislav Vaintroub authored
-
- 13 Nov, 2021 1 commit
-
-
Vladislav Vaintroub authored
reapply patch 96b472c0 It was not merged correctly into 10.5+
-
- 12 Nov, 2021 1 commit
-
-
Thirunarayanan Balathandayuthapani authored
- In ha_innobase::prepare_inplace_alter_table(), InnoDB should check whether the table is empty. If the table is empty then server should avoid downgrading the MDL after prepare phase. It is more like instant alter, does change only in dicationary and metadata. - Changed few debug test case to make non-empty DDL table
-
- 11 Nov, 2021 5 commits
-
-
Vladislav Vaintroub authored
Upon investigation, decided this to be a compiler bug (happens with new compiler, on code that did not change for the last 15 years) Fixed by de-optimizing single function remove_key(), using MSVC pragma
-
Vladislav Vaintroub authored
-
Vladislav Vaintroub authored
-
Vladislav Vaintroub authored
Upon investigation, decided this to be a compiler bug (happens with new compiler, on code that did not change for the last 15 years) Fixed by de-optimizing single function remove_key(), using MSVC pragma
-
Brandon Nesterenko authored
MDEV-26991: CURRENT_TEST: main.mysql_binary_zero_insert 'grep' is not recognized as an internal or external command, operable program or batch file. Removed grep from mysqldump command stream and instead, extend the search_file pattern to search for rows containing binary zeros instead of any occurance of '00' in the input
-
- 10 Nov, 2021 1 commit
-
-
Sergei Krivonos authored
-
- 09 Nov, 2021 18 commits
-
-
Sergei Petrunia authored
-
Vladislav Vaintroub authored
If it is not enabled, build wsrep as static "stub" library from wsrep_dummy.cc ´ Allow static plugins to export symbols (on Unix) wsrep_info relies on wsrep defined symbols (e.g LOCK_wsrep_config_state) exported from mysqld
-
Vladislav Vaintroub authored
-
Vladislav Vaintroub authored
Means, plugin will not be available in embedded, even if compiled-in
-
Sergei Krivonos authored
This reverts commit 1a3570de.
-
Sergei Krivonos authored
This reverts commit e45f7f48.
-
Sergei Krivonos authored
-
Sergei Krivonos authored
-
Sergei Petrunia authored
- Add unit test.
-
Sergei Petrunia authored
Code cleanup: Remove Json_writer::is_on_fmt_helper_call. We already maintain this state in fmt_helper.
-
Vladislav Vaintroub authored
If it is not enabled, build wsrep as static "stub" library from wsrep_dummy.cc ´ Allow static plugins to export symbols (on Unix) wsrep_info relies on wsrep defined symbols (e.g LOCK_wsrep_config_state) exported from mysqld
-
Vladislav Vaintroub authored
-
Sergei Krivonos authored
-
Sergei Krivonos authored
in test main.range_vs_index_merge one path requires named JSON object: assert.c:0(.annobin_assert.c_end)[0x7fe9d2270a76] sql/my_json_writer.cc:43(Json_writer::on_start_object())[0x555e284f048a] sql/my_json_writer.cc:59(Json_writer::start_object())[0x555e284ee6e8] sql/my_json_writer.h:377(Json_writer_object::Json_writer_object(THD*))[0x555e281dce11] sql/opt_range.cc:5137(get_best_disjunct_quick(PARAM*, SEL_IMERGE*, double))[0x555e287c576b] sql/opt_range.cc:5492(merge_same_index_scans(PARAM*, SEL_IMERGE*, TRP_INDEX_MERGE*, double))[0x555e287c6cf6] sql/opt_range.cc:5287(get_best_disjunct_quick(PARAM*, SEL_IMERGE*, double))[0x555e287c607a] sql/opt_range.cc:3000(SQL_SELECT::test_quick_select another one requires unnamed JSON: mariadbd: /home/name/server/sql/my_json_writer.cc:379: bool Single_line_formatting_helper::on_add_member(const char*, size_t): Assertion `state== INACTIVE || state == assert.c:0(.annobin_assert.c_end)[0x7f33d8df8a76] sql/my_json_writer.cc:380(Single_line_formatting_helper::on_add_member(char const*, unsigned long))[0x558362f6a717] sql/my_json_writer.cc:150(Json_writer::add_member(char const*, unsigned long))[0x558362f69a91] sql/my_json_writer.cc:146(Json_writer::add_member(char const*))[0x558362f69a5f] sql/my_json_writer.h:383(Json_writer_object::Json_writer_object(THD*, char const*))[0x558362ceccaa] sql/opt_range.cc:5139(get_best_disjunct_quick(PARAM*, SEL_IMERGE*, double))[0x5583632407d0] sql/opt_range.cc:3000(SQL_SELECT::test_quick_select
-
Sergei Krivonos authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-