- 21 Mar, 2018 1 commit
-
-
Marko Mäkelä authored
-
- 20 Mar, 2018 17 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
mem_heap_create_block(): Poison the payload area until mem_heap_alloc() unpoisons it.
-
Marko Mäkelä authored
fil_iterate(), fil_tablespace_iterate(): Replace os_file_read() with os_file_read_no_error_handling(). os_file_read_func(), os_file_read_no_error_handling_func(): Do not retry partial reads. There used to be an infinite amount of retries. Because InnoDB extends both data and log files upfront, partial reads should be impossible during normal operation.
-
Marko Mäkelä authored
Initialize block.page.zip only once. PageConverter::update(): Initialize m_page_zip_ptr as late as possible. (We should really remove it at some point.) PageConverter::operator(): Refer to block->page.zip instead of m_page_zip_ptr. AbstractCallback::get_frame(): Define static. Refer to block->page.zip.data directly. fil_iterate(): Refer to block->page.zip.data directly. fil_tablespace_iterate(): Initialize block.page.zip.data as soon as possible.
-
Marko Mäkelä authored
fil_iterate(): Validate the pages directly. import_page_status_t, PageConverter::validate(): Remove. AbstractCallback::filename(): New accessor. AbstractCallback::is_interrupted(): Replaces periodic_check(). PageConverter::trigger_corruption(): Remove.
-
Marko Mäkelä authored
Reduce unnecessary inter-module calls for IMPORT TABLESPACE. Move some IMPORT-related code from fil0fil.cc to row0import.cc. PageCallback: Remove. Make AbstractCallback the base class. PageConverter: Define some member functions inline.
-
Thirunarayanan Balathandayuthapani authored
assert on UTF-8 columns Problem: ======= (1) Multi-byte character cases are not considered during prefix index cluster optimization check. It leads to fetch of improper results during read operation. (2) Strict assert in row_sel_field_store_in_mysql_format_func and it asserts for prefix index record to mysql conversion. Solution: ======== (1) Consider the case of multi-byte character during prefix index cluster optimization check. (2) Relax the assert in row_sel_field_store_in_mysql_format_func to allow prefix index record to mysql format conversion. The patch is taken from https://github.com/laurynas-biveinis/percona-server/commit/1eee538087ffcf121c37f844b447ba5480faf081
-
Jan Lindström authored
-
Philip Stoev authored
-
sjaakola authored
Refs: MW-245 - changed logic so that in non primary node it is possible to do SET + SHOW + SELECT from information and pfs schema, when dirty reads are not enabled - however, non table selects are not allowed (e.g. SELECT 1)
-
sjaakola authored
Refs MW-245 - logic was wrong in detecting if queries are allowed in non primary node. it allowed select with no table list to execute even if dirty reads was not specified
-
Philip Stoev authored
-
sjaakola authored
refs MW-245 - allowing USE <database> with dirty reads configuration - fix for logic of setting wsrep ready status
-
sjaakola authored
-
Eugene Kosov authored
-
Varun Gupta authored
MDEV-12737: tokudb_mariadb.mdev6657 fails in buildbot with different plan, and outside with valgrind warnings Fixing the test by adding replace column for the rows column in the explain.
-
- 19 Mar, 2018 7 commits
-
-
Jacob Mathew authored
MDEV-10991: Server crashes in spider_udf_direct_sql_create_conn - tests in spider/oracle* suites crash the server The crash occurs due to code that is #ifdef'd out with HAVE_ORACLE_OCI that pertains to the use of Spider with an Oracle data tier. Enabling this code eliminates the crash. The reason that MariaDB needs to support Oracle storage at the data tier is to help customers migrate from Oracle. It is necessary to build Spider with the additional build flag -DHAVE_ORACLE_OCI, and install and start Oracle before running the Oracle test suite or any tests within it. Nevertheless, if Spider is built normally and Oracle has not been started, these tests should not cause the MariaDB server to crash. The bug fix replaces the crash with the following error: ERROR 12501 (HY000) at line 4: The connect info 'ORACLE' is invalid Author: Jacob Mathew. Reviewer: Kentoku Shiba.
-
Vicențiu Ciorbaru authored
-
Eugene Kosov authored
Learn both valgrind and asan to catch this bug: mem_heap_t* heap = mem_heap_create(1024); byte* p = reinterpret_cast<byte*>(heap) + sizeof(mem_heap_t); *p = 123; Overflows of the last allocation in a block will be catched too. mem_heap_create_block(): poison newly allocated memory
-
Alexander Barkov authored
cmp_item_sort_string::store_value() did not cache the string returned from item->val_str(), whose result can point to various private members such as Item_char_typecast::tmp_value. - cmp_item_sort_string::store_value() remembered the pointer returned from item->val_str() poiting to tmp_value into cmp_item_string::value_res. - Later, cmp_item_real::store_value() was called, which called Item_str_func::val_real(), which called Item_char_typecast::val_str(&tmp) using a local stack variable "String tmp". Item_char_typecast::tmp_value was overwritten and become a link to "tmp": tmp_value.Ptr freed its own buffer and set to point to the buffer owned by "tmp". - On return from Item_str_func::val_real(), "String tmp" was destructed, but "tmp_value" still pointed to the buffer owned by "tmp", So tmp_value.Ptr became invalid. - Then cmp_item_sort_string() passed cmp_item_string::value_res to sortcmp(). At this point, value_res still pointed to an invalid value of Item_char_typecast::tmp_value. Fix: changing cmp_item_sort_string::store_value() to force copying to cmp_item_string::value if item->val_str(&value) returned a different pointer (instead of &value).
-
Jan Lindström authored
Fix test failure on galera_flush_local.
-
Jan Lindström authored
Fix test failure on galera_concurrent_ctas
-
Jan Lindström authored
Fortify wsrep_hton so that wsrep calls are not done to NULL-pointers.
-
- 17 Mar, 2018 1 commit
-
-
Varun Gupta authored
MDEV-6736: Valgrind warnings 'Invalid read' in subselect_engine::calc_const_tables with SQ in WHERE and HAVING, ORDER BY, materialization+semijoin During cleanup a pointer to the materialised table that was freed was not set to NULL
-
- 16 Mar, 2018 4 commits
-
-
Varun Gupta authored
To disallow equality propagation for DATETIME with non-zero YYYYMMDD part we were setting null_value to true. This caused issues when we were calculating selectivity for a condition as this returned IMPOSSIBLE WHERE. The issue is resolved by not setting null_value to true for DATETIME with non-zero YYYYMMDD.
-
Sergey Vojtovich authored
Eliminated last exit() call from libmysqld.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
Unlike commit a54abf01 claimed, the caller of THD::awake() may actually hold the InnoDB lock_sys->mutex. That commit introduced a deadlock of threads in the replication slave when running the test rpl.rpl_parallel_optimistic_nobinlog. lock_trx_handle_wait(): Expect the callers to acquire and release lock_sys->mutex and trx->mutex. innobase_kill_query(): Restore the logic for conditionally acquiring and releasing the mutexes. THD::awake() can be called from inside InnoDB while holding one or both mutexes, via thd_report_wait_for() and via wsrep_innobase_kill_one_trx().
-
- 15 Mar, 2018 10 commits
-
-
Marko Mäkelä authored
ha_innobase::unlock_row(): Use a relaxed version of the trx_state_eq() debug assertion, because rr_unlock_row() may be invoked after an error has been already reported and the transaction has been rolled back.
-
Marko Mäkelä authored
By definition, c_lock->trx->lock.wait_lock==c_lock cannot hold. That is, the owner transaction of a lock cannot be waiting for that particular lock. It must have been waiting for some other lock. Remove the dead code related to that. Also, test c_lock for NULLness only once.
-
Marko Mäkelä authored
The caller of THD::awake() should never hold any InnoDB mutexes, so we can always acquire lock_sys->mutex and trx->mutex.
-
Jan Lindström authored
MDEV-13549 Fix and re-enable test galera.galera_var_slave_threads
-
Daniele Sciascia authored
Two changes were made to the test: 1) Suppress warning "Refusing exit for the last slave thread." This warning was already suppressed, but on the wrong node. 2) The test occasionally fails because it expects that the number of applier threads changes immediately after changing the value of ```variable wsrep_slave_threads```. Which is not true. This patch turns snippets like this: ``` SET GLOBAL wsrep_slave_threads = x; SELECT COUNT(*) = x FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'system user'; ``` Into proper wait_conditions: ``` SET GLOBAL wsrep_slave_threads = x; let $wait_condition = SELECT COUNT(*) = x FROM ...; --source include/wait_condition.inc ```
-
Jan Lindström authored
MDEV-14144 Fix for MTR tests complaining "Query didn't return a result set"
-
Jan Lindström authored
-
Jan Lindström authored
MDEV-13549 Fix for test galera.galera_var_max_ws_rows
-
Jan Lindström authored
-
Jan Lindström authored
MDEV-13549 Fix and re-enable MTR test galera.MW-366
-