- 28 Jan, 2020 4 commits
-
-
Marko Mäkelä authored
-
Alexander Barkov authored
-
Oleksandr Byelkin authored
-
Alexander Barkov authored
-
- 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 9 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
-
Varun Gupta authored
Made the test order_by_pack_big stable
-
Marko Mäkelä authored
An assertion added in commit c20bf8fd includes a sign mismatch. Make the affected data members unsigned.
-
Marko Mäkelä authored
Since commit f52bf920 the type Sql_sort is non-trivial, because it includes a data member Bounds_checked_array<SORT_FIELD> local_sortorder. There still is no vtable, so memset() is safe to invoke, but we must add a cast to silence a warning in GCC 8 or later.
-
Varun Gupta authored
MDEV-21541: main.sum_distinct-big fails with Assertion `m_buffer_end == __null || end <= m_buffer_end' For Merge_chuck structures first set the start and end positions of the buffer and then adjust the end positions of the buffer if the records are dynamic in nature.
-
Alexander Barkov authored
- Adding a way to define I_S columns without DEFAULT. - Fixing all ENUM columns in I_S.INNODB* table definitions to have no DEFAULT.
-
- 21 Jan, 2020 3 commits
-
-
Vladislav Vaintroub authored
maybe_wake_or_create_thread() A task that is executed,could be counted as waiting (after wait_begin() before wait_end()) or as long-running (callback runs for a long time). If task is both marked waiting and long running, then calculation of current concurrency (# of executing tasks - # of long tasks - #of waiting tasks) is wrong, as task is counted twice. Thus current concurrency could go negative, but with unsigned arithmetic it will become a huge number. As a result, maybe_wake_or_create_thread() would neither wake or create a thread, when it should. Which may result in a deadlock.
-
Oleksandr Byelkin authored
-
Vladislav Vaintroub authored
Someone tried -DBUILD_SHARED_LIBS:BOOL=ON. This did not work well
-