- 29 Jan, 2020 1 commit
-
-
Marko Mäkelä authored
recv_sys_t::free_corrupted_page(): Renamed from recv_recover_corrupt_page(). recv_sys_t::is_memory_exhausted(): Renamed from recv_sys_heap_check(). recv_sys_t::max_blocks(): Accessor for max_log_blocks. recv_sys_t::blocks: Buffer pool blocks reserved for redo log records. For the debug functions related to recv_sys_t::alloc(), use the logical name free(). Rename some variables 'store_to_hash' to 'store', because recv_sys.pages is not a hash table.
-
- 28 Jan, 2020 11 commits
-
-
Thirunarayanan Balathandayuthapani authored
- Fixing innodb.undo_truncate_recover test case
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Alexander Barkov authored
-
Oleksandr Byelkin authored
-
Alexander Barkov authored
-
Thirunarayanan Balathandayuthapani authored
- Fixing the windows compilation failure
-
Thirunarayanan Balathandayuthapani authored
- Added a debug assert to unfix the block after applying the redo log - Added store_recv in recv_sys_t::alloc() to make sure that recv_t and recv_t::data is in the same block - Added the assert which check buf_fix_count is 0 after applying all redo log records.
-
Marko Mäkelä authored
-
Thirunarayanan Balathandayuthapani authored
- Remove recv_sys_t::heap, MEM_HEAP_FOR_RECV_SYS. - Replaced recv_n_pool_free_frames with recv_sys.max_log_blocks. - Removed available_mem variable in recv_parse_log_recs() and redo log blocks threshold check is done with the help of recv_sys.max_log_blocks. - Allocate the recv_sys.pages and its elements directly by the system allocator. - Allocate buffer pool blocks directly by buf_block_alloc(). Use block->unzip_LRU for keeping track of allocated blocks. - Append log records to the last block, until the block->frame is filled up. (Similar to the current recv_sys.heap.) - Repurpose buf_block_t::modify_clock to store the length of the redo log data. - Use buf_block_t::page::buf_fix_count only in debug builds to count the number of pointers from recv_sys.pages.
-
- 27 Jan, 2020 2 commits
-
-
Daniel Bartholomew authored
-
Rasmus Johansson authored
Changed Travis status to show status of branch 10.5 (it was still pointing to 10.4)
-
- 26 Jan, 2020 2 commits
-
-
Elena Stepanova authored
-
Sergei Petrunia authored
-
- 25 Jan, 2020 1 commit
-
-
Oleksandr Byelkin authored
-
- 24 Jan, 2020 10 commits
-
-
Sergei Petrunia authored
[Variant 2 of the fix: collect the attached conditions] Problem: make_join_select() has a section of code which starts with "We plan to scan all rows. Check again if we should use an index." the code in that section will [unnecessarily] re-run the range optimizer using this condition: condition_attached_to_current_table AND current_table's_ON_expr Note that the original invocation of range optimizer in make_join_statistics was done using the whole select's WHERE condition. Taking the whole select's WHERE condition and using multiple-equalities allowed the range optimizer to infer more range restrictions. The fix: - Do range optimization using a condition that is an AND of this table's condition and all of the previous tables' conditions. - Also, fix the range optimizer to prefer SEL_ARGs with type=KEY_RANGE over SEL_ARGS with type=MAYBE_KEY, regardless of the key part. Computing key_and( SEL_ARG(type=MAYBE_KEY key_part=1), SEL_ARG(type=KEY_RANGE, key_part=2) ) will now produce the SEL_ARG with type=KEY_RANGE.
-
Eugene Kosov authored
class log_file_t: more or less sane RAII wrapper around redo log file descriptor and its path. This change is motivated by the need of using that log_file_t somewhere else.
-
Oleksandr Byelkin authored
-
Oleksandr Byelkin authored
-
Oleksandr Byelkin authored
-
Oleksandr Byelkin authored
-
Oleksandr Byelkin authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
We missed these in commit 89633995 and commit ccd87d34.
-
Sujatha authored
MDEV-21490: binlog tests fail with valgrind: Conditional jump or move depends on uninitialised value in sql_ex_info::init Problem: ======= P1) Conditional jump or move depends on uninitialised value(s) sql_ex_info::init(char const*, char const*, bool) (log_event.cc:3083) code: All the following variables are not initialized. ---- return ((cached_new_format != -1) ? cached_new_format : (cached_new_format=(field_term_len > 1 || enclosed_len > 1 || line_term_len > 1 || line_start_len > 1 || escaped_len > 1))); P2) Conditional jump or move depends on uninitialised value(s) Rows_log_event::Rows_log_event(char const*, unsigned int, Format_description_log_event const*) (log_event.cc:9571) Code: Uninitialized values is reported for 'var_header_len' variable. ---- if (var_header_len < 2 || event_len < static_cast<unsigned int>(var_header_len + (post_start - buf))) P3) Conditional jump or move depends on uninitialised value(s) Table_map_log_event::pack_info(Protocol*) (log_event.cc:11553) code:'m_table_id' is uninitialized. ---- void Table_map_log_event::pack_info(Protocol *protocol) ... size_t bytes= my_snprintf(buf, sizeof(buf), "table_id: %lu (%s.%s)", m_table_id, m_dbnam, m_tblnam); Fix: === P1 - Fix) Initialize cached_new_format,field_term_len, enclosed_len, line_term_len, line_start_len, escaped_len members in default constructor. P2 - Fix) "var_header_len" is initialized by reading the event buffer. In case of an invalid event the buffer will contain invalid data. Hence added a check to validate the event data. If event_len is smaller than valid header length return immediately. P3 - Fix) 'm_table_id' within Table_map_log_event is initialized by reading data from the event buffer. Use 'VALIDATE_BYTES_READ' macro to validate the current state of the buffer. If it is invalid return immediately.
-
- 23 Jan, 2020 9 commits
-
-
Sergei Golubchik authored
this test needs a *server* and tries to connect with $MYSQL to it
-
Alexey Botchkov authored
PCRE reports small frame size working with ASAN, so the test has to be ready for the minimlas possible size.
-
Eugene Kosov authored
os_file_flush_data_func(): fix builds on POSIX OSs where fdatasync() is not avaiable log_t::files::flush_data_only(): rename from fdatasync() log_t::files::fsync(): removed and replaced with flush_data_only(). It will flush everything we need for using redo log files.
-
Marko Mäkelä authored
This is the only symlink in the repository. Symlinks can cause trouble when using file systems or operating systems that do not support them. Also remove the unused file DartConfig.cmake that refers to the script.
-
Marko Mäkelä authored
cmake -DWITH_INNODB_EXTRA_DEBUG:BOOL=ON was broken ever since commit 8777458a (MDEV-6076 Persistent AUTO_INCREMENT for InnoDB). There is a race condition between page reads that call page_zip_validate() (while holding clustered index root page S-latch) and writes that update PAGE_ROOT_AUTO_INC (with buf_block_t::lock SX-latch, compatible with S-latch). page_zip_validate_low(): Skip the PAGE_ROOT_AUTO_INC field on clustered index root pages in order to avoid false positives.
-
Vladislav Vaintroub authored
MDEV-21551 : Assertion `m_active_threads.size() >= m_long_tasks_count + m_waiting_task_count' failed" Happened when running innodb_fts.sync_ddl m_long_task_count could be wrongly reset to 0, if m_task_queue is empty.
-
Thirunarayanan Balathandayuthapani authored
dict_table_t::parse_name(): Properly calculate the *tbl_name_len. A failure was easily repeatable during the test innodb.innodb-alter-debug for the table name test.① ("test/@2460"). The UTF-8 representation of the U+2460 is only 3 bytes "\xe2\x91\xa0" while the filename-safe encoded counterpart of it in dict_table_t::name is 5 bytes "@2460". This bug, introduced by commit ea37b144 (MDEV-16678), could cause a purge task to hang.
-
Vlad Lesin authored
Post-push fix. aria_pack_mdev14183 test is unstable. The fix is the following: 1. Disable the test for embedded server. 2. Create non-"transactional" Aria table in the test, as aria_pack does not support "transactional" Aria tables.
-
Sergei Golubchik authored
tests for --ssl-verify-server-cert with system CA and with incorrect hostname
-
- 22 Jan, 2020 4 commits
-
-
Vladislav Vaintroub authored
While waiting for mutex, thread_pool_generic::wait_begin(), current task can be marked long-running. This is done by periodic mantainence task, that runs in parallel. Fix to recheck is_long_task() after the mutex acquisition.
-
Eugene Kosov authored
I found that memcpy_aligned was used incorrectly at redo log and decided to put assertions in aligned functions. And found even more incorrect cases. Given the amount discovered of bugs, I left assertions to prevent future bugs. my_assume_aligned(): instead of MY_ASSUME_ALIGNED macro
-
Jan Lindström authored
This is 10.4 version. Idea is to create monitor thread for both donor and joiner that will periodically if needed extend systemd timeout while SST is being processed. In 10.4 actual SST is executed by running SST script and exchanging messages on pipe using blocking fgets. This fix starts monitoring thread before SST script is started and we stop monitoring thread when SST has been completed.
-
Marko Mäkelä authored
-