- 21 Dec, 2019 5 commits
-
-
Sergei Golubchik authored
-
Sergei Golubchik authored
item_cmpfunc.h includes pcre2.h, so with the bundled pcre2 it has to be built before anything that includes pcre2.h . And item_cmpfunc.h is indirectly included everywhere, also in many plugins. Somehow Ninja and Makefiles generators can still deduce the correct build dependencies, but Visual Studio generator cannot. Two changes: * move pcre2.h from item_cmpfunc.h to item_cmpfunc.cc * create an explicit dependency on pcre2 for the server
-
Sergei Golubchik authored
-
Sergei Golubchik authored
-
Alexey Botchkov authored
Related changes in the server code.
-
- 20 Dec, 2019 1 commit
-
-
Marko Mäkelä authored
In commit befde6e9 a bogus condition was added, aiming to avoid debug assertion failures during ALTER TABLE...IMPORT TABLESPACE. page_cur_delete_rec(): Remove the bogus condition, and replace the use of buf_block_modify_clock_inc() with a lower-level operation that skips the debug checks that would fail during IMPORT.
-
- 19 Dec, 2019 1 commit
-
-
Eugene Kosov authored
-
- 18 Dec, 2019 1 commit
-
-
Marko Mäkelä authored
Replace fil_space_get_flags(space) == ULINT_UNDEFINED with the functionally equivalent fil_space_get_size(space) == 0.
-
- 17 Dec, 2019 2 commits
-
-
Marko Mäkelä authored
The debug instrumentation with the MLOG_LSN pseudo-record has not been used for debugging for years. Let us remove this code now. It would have to be removed as part of MDEV-12353 or MDEV-14425 anyway, when implementing a new redo log file format.
-
Marko Mäkelä authored
-
- 16 Dec, 2019 4 commits
-
-
Marko Mäkelä authored
One reference to PageConverter::m_page_zip_ptr was not adjusted commit 745fd4b3 when the data member was removed.
-
Marko Mäkelä authored
Apparently, regular expression operations that remove entire lines of output do not work with list_files, and hence the adjustments in commit 1c282d4b were ineffective. For cat_file (preceded by list_files_write_file) the replace_regex does work. For some reason, for suite/parts/inc/partition_crash_exchange.inc some file names will be lost when using list_files_write_file instead of list_files. We use a precise pattern match. dict_mem_create_temporary_tablename() is generating #sql-ib names followed by decimal digits only.
-
Teemu Ollakka authored
This commit updates the wsrep-lib. The changes are a cleanup in client_state TOI processing and stub methods for future extensions.
-
Marko Mäkelä authored
-
- 13 Dec, 2019 8 commits
-
-
Marko Mäkelä authored
Pass buf_block_t* to more functions that write redo log. page_zip_write_node_ptr(), page_zip_write_blob_ptr(), page_zip_compress_write_log_no_data(): Take buf_block_t* as parameter, and do not tolerate mtr=NULL. page_zip_compress(): Do not tolerate mtr=NULL. page_zip_dir_insert(): Take page_cur_t* as parameter. mlog_write_initial_log_record(): Remove. This function was unused. RecIterator::remove(): Remove the redundant page_zip parameter. PageConverter::m_page_zip_ptr: Remove.
-
Marko Mäkelä authored
page_cur_insert_rec_low(): Take page_cur_t* as a parameter, and do not tolerate mtr=NULL. page_cur_insert_rec_zip(): Do not tolerate mtr=NULL.
-
Marko Mäkelä authored
page_cur_delete_rec(): Do not tolerate mtr=NULL. page_delete_rec(): Merge with the only caller, RecIterator::remove(). RecIterator::m_mtr: New data member: a dummy mini-transaction.
-
Marko Mäkelä authored
The adjustments in adb117cf turned out to be insufficient.
-
Marko Mäkelä authored
We disable the MDEV-21189 test galera.galera_partition because it times out.
-
Eugene Kosov authored
-
Alexander Barkov authored
The type handler and unsigned_flag erroneously went out of sync in Item_func_minus::fix_length_and_dec.
-
Marko Mäkelä authored
-
- 12 Dec, 2019 8 commits
-
-
Eugene Kosov authored
offset_t: this is a type which represents one record offset. It's unsigned short int. a lot of functions: replace ulint with offset_t btr_pcur_restore_position_func(), page_validate(), row_ins_scan_sec_index_for_duplicate(), row_upd_clust_rec_by_insert_inherit_func(), row_vers_impl_x_locked_low(), trx_undo_prev_version_build(): allocate record offsets on the stack instead of waiting for rec_get_offsets() to allocate it from mem_heap_t. So, reducing memory allocations. RECORD_OFFSET, INDEX_OFFSET: now it's less convenient to store pointers in offset_t* array. One pointer occupies now several offset_t. And those constant are start indexes into array to places where to store pointer values REC_OFFS_HEADER_SIZE: adjusted for the new reality REC_OFFS_NORMAL_SIZE: increase size from 100 to 300 which means less heap allocations. And sizeof(offset_t[REC_OFFS_NORMAL_SIZE]) now is 600 bytes which is smaller than previous 800 bytes. REC_OFFS_SEC_INDEX_SIZE: adjusted for the new reality rem0rec.h, rem0rec.ic, rem0rec.cc: various arguments, return values and local variables types were changed to fix numerous integer conversions issues. enum field_type_t: offset types concept was introduces which replaces old offset flags stuff. Like in earlier version, 2 upper bits are used to store offset type. And this enum represents those types. REC_OFFS_SQL_NULL, REC_OFFS_MASK: removed get_type(), set_type(), get_value(), combine(): these are convenience functions to work with offsets and it's types rec_offs_base()[0]: still uses an old scheme with flags REC_OFFS_COMPACT and REC_OFFS_EXTERNAL rec_offs_base()[i]: these have type offset_t now. Two upper bits contains type.
-
Eugene Kosov authored
recv_dblwr_t::list is used for appending to the beginning and iterating through its elements. std::deque fits better for that purpose because it does less allocations than std::forward_list and provides better memory locality.
-
Eugene Kosov authored
-
Marko Mäkelä authored
-
Alexander Barkov authored
When backpatching a forward GOTO label, the old code erroneously used CURSOR/HANDLER difference between context frames "c" and "a" to tune a cpop/hpop command. So the cpop/hpop command later tried to pop all cursors/handlers declared between "a" and "c", but those between "b" and "c" were not cpushed/hpoped yet during the execution of "GOTO x". Fixing the code to use the difference between frames "b" and "a" only. BEGIN -- a ... GOTO x; -- b ... <<x>> -- c ... END -- d
-
Vladislav Vaintroub authored
fil_node_t::find_metadata() tries to find out whether file is on an SSD, and the disk sector size. On Windows, it opens the corresponding volume for finding this data. This does not go well, if datadir is on network path/UNC. The volume name is invalid, CreateFile() function fails, and a cryptic (from the end user perspective) error is reported. Like this [ERROR] InnoDB: File \\.\\\workpc\work: 'CreateFile()' returned OS error 203. The fix is not to report error if open volume failed, and the path was not on fixed disk, i.e not on HDD or SSD. This is not a fatal error, there is a fallback anyway.
-
Vladislav Vaintroub authored
-
Vlad Lesin authored
copy thread) mariabackup hangs waiting until innodb redo log thread read log till certain LSN, and it waits under FTWRL. If there is redo log read error in the thread, it is finished, and main thread knows nothing about it, what leads to hanging. As it hangs under FTWRL, slave threads on server side can be blocked due to MDL lock conflict. The fix is to finish mariabackup with error message on innodb redo log read failure.
-
- 11 Dec, 2019 8 commits
-
-
Varun Gupta authored
The issue here is window function makes the passed string object to point to an area in a temporary table's record buffer. Then, the temporary table is freed, together with its record buffer. Then, Item_cache_str attempts to read this value. The fix is to call value_buff.copy(). This will make the value_buff to store its string in a buffer that it owns, which will not disappear unexpectedly.
-
Daniel Bartholomew authored
-
Daniel Bartholomew authored
-
Daniel Bartholomew authored
-
Eugene Kosov authored
Use std::queue backed by std::deque instead of list because it does less allocations which still having O(1) push and pop operations. Also store trx_purge_rec_t directly, because its only 16 bytes and allocating it is to wasteful. This should be faster. purge_node_t::purge_node_t: container is already empty after creation purge_node_t::end(): replace clearing container with assertion that it's clear
-
Vladislav Vaintroub authored
Simplify loading messages into mariabackup. Do the same as server does We're forcing english, so there is no attempt to load errmsg.sys
-
Daniele Sciascia authored
Test galera_sr_ddl_master would sometimes fail due to leftover streaming replication fragments. Rollbacker thread would attempt to open streaming_log table to remove the fragments, but would fail in check_stack_overrun(). Ultimately the check_stack_overrun() failure was caused by rollbacker missing to switch the victim's THD thread stack to rollbacker's thread stack. Also in this patch: - Remove duplicate functionality in rollbacker helper functions, and extract rollbacker fragment removal into function wsrep_remove_streaming_fragments() - Reuse open_for_write() in wsrep_schema::remove_fragments - Partially revert changes to galera_sr_ddl_master test from commit 44a11a7c. Removed unnecessary wait condition and isolation level setting
-
Vladislav Vaintroub authored
-
- 10 Dec, 2019 2 commits
-
-
Marko Mäkelä authored
When using huge pages, the innodb_buffer_pool_size cannot necessarily be restored. Simplify things by restarting the server.
-
Marko Mäkelä authored
InnoDB RNG maintains global state, causing otherwise unnecessary bus traffic. Even worse, this is cross-mutex traffic. That is, different mutexes suffer from contention. Fixed delay of 4 was verified to give best throughput by OLTP update index and read-write benchmarks on Intel Broadwell (2/20/40) and ARM (1/46/46). This is a backport of ce047900 from MariaDB Server 10.3.
-