- 03 Dec, 2019 10 commits
-
-
Marko Mäkelä authored
Passing buf_block_t helps us avoid calling mlog_write_initial_log_record_fast() and page_get_page_no(), and allows us to implement more debug checks, such as that on ROW_FORMAT=COMPRESSED index pages, only the page header may be modified by MLOG_MEMSET records. fseg_n_reserved_pages(): Add a buf_block_t parameter.
-
Marko Mäkelä authored
Refer to buf_page_t::id instead of parsing the tablespace identifier or page number from the buffer pool page.
-
Marko Mäkelä authored
mtr_t::write(): Replaces mlog_write_ulint(), mlog_write_ull(). Optimize away writes if the page contents does not change, except when a dummy write has been explicitly requested. Because the member function template takes a block descriptor as a parameter, it is possible to introduce better consistency checks. Due to this, the code for handling file-based lists, undo logs and user transactions was refactored to pass around buf_block_t.
-
Marko Mäkelä authored
page_create_write_log(), mlog_write_initial_log_record(): Merge to the only caller, and use mlog_write_initial_log_record_low() for writing the log record.
-
Marko Mäkelä authored
aio_linux::m_max_io_count: Unused data member; remove. aiocb::m_ret_len: Declare as the more compatible type size_t. Unfortunately, ssize_t is not available on Microsoft Visual Studio.
-
Marko Mäkelä authored
btr_set_min_rec_mark(): Write MLOG_1BYTE instead of MLOG_REC_MIN_MARK or MLOG_COMP_REC_MIN_MARK. On ROW_FORMAT=COMPRESSED pages, the minimum record flag is not stored at all. The flag is computed for the uncompressed page by page_zip_decompress(). Hence, nothing needs to be logged for ROW_FORMAT=COMPRESSED tables for this operation. To facilitate crash-upgrade and hot backup from older versions, we will retain the code to parse and apply the old log record types MLOG_REC_MIN_MARK and MLOG_COMP_REC_MIN_MARK.
-
Marko Mäkelä authored
The MLOG_FILE_WRITE_CRYPT_DATA record was completely redundant. It can be replaced with a single MLOG_WRITE_STRING record. To facilitate upgrade from older versions, we will retain fil_parse_write_crypt_data(). fil_crypt_parse(): Recover fil_space_crypt_t::write_page0(). fil_space_crypt_t::write_page0(): Write everything in a single MLOG_WRITE_STRING for easy parsing. fil_space_crypt_t::page0_offset: Remove.
-
Marko Mäkelä authored
-
Aleksey Midenkov authored
Moved partition_rotation, partition_innodb to partition.test
-
Aleksey Midenkov authored
* Fixed missed warning on condition boundary * REORGANIZE cases * vers_utils.h removed * test cases cleanup
-
- 02 Dec, 2019 8 commits
-
-
Aleksey Midenkov authored
-
Aleksey Midenkov authored
-
Aleksey Midenkov authored
Don't do skip_setup_conds() unless all errors are checked. Fixes following errors: ER_PERIOD_NOT_FOUND ER_VERS_QUERY_IN_PARTITION ER_VERS_ENGINE_UNSUPPORTED ER_VERS_NOT_VERSIONED
-
Aleksey Midenkov authored
Don't do skip_setup_conds() unless all errors are checked. Fixes following errors: ER_PERIOD_NOT_FOUND ER_VERS_QUERY_IN_PARTITION ER_VERS_ENGINE_UNSUPPORTED ER_VERS_NOT_VERSIONED
-
Aleksey Midenkov authored
MDEV-21011 Table corruption reported for versioned partitioned table after DELETE: "Found a misplaced row" LIMIT history partitions cannot be checked by existing algorithm of check_misplaced_rows() because working history partition is incremented each time another one is filled. The existing algorithm gets record and tries to decide partition id for it by get_partition_id(). For LIMIT history it will just get first non-filled partition. To fix such partitions it is required to do REBUILD instead of REPAIR.
-
Aleksey Midenkov authored
When view is merged by DT_MERGE_FOR_INSERT it is then skipped from processing and doesn't update WHERE clause with vers_setup_conds(). Note that view itself cannot work in vers_setup_conds() because it doesn't have row_start, row_end fields. Thus it is required to descend down to material TABLE_LIST through calls of mysql_derived_prepare() and run vers_setup_conds() from there. Luckily, all views (views of views, views of views of views, etc.) are linked in one list through next_global pointer, so we can skip all views of views and get straight to non-view TABLE_LIST by checking its merge_underlying_list property for zero value (it is assigned by DT_MERGE_FOR_INSERT for merged derived tables). We have to do that only for UPDATE and DELETE. Other DML commands don't use WHERE clause. MDEV-21146 Assertion `m_lock_type == 2' in handler::ha_drop_table upon LOAD DATA LOAD DATA does not use WHERE and the above call of vers_setup_conds() is not needed. unit->prepare() led to wrongly locked temporary table.
-
Aleksey Midenkov authored
"write set" for replication finally got its correct place (mark_columns_per_binlog_row_image()). When done generally in mark_columns_needed_for_update() it affects optimization algorithm. used_key_is_modified, query_plan.using_io_buffer are wrongly set and that leads to wrong prepare_for_keyread() which limits read_set.
-
Aleksey Midenkov authored
Turn read cache off for update and multi-update for versioned table. no_cache is reinited on each TABLE open because it is applicable for specific algorithms. As a side fix vers_insert_history_row() honors vers_write setting. Aria with row_format=fixed uses IO_CACHE of type READ_CACHE for sequential read in update loop. When history row is inserted inside this loop the cache misses it and fails with error. TODO: Currently maria_extra() does not support SEQ_READ_APPEND. Probably it might be possible to use this type of cache.
-
- 30 Nov, 2019 1 commit
-
-
Alexander Barkov authored
-
- 29 Nov, 2019 10 commits
-
-
Kentoku authored
Get count from last_used_con->info Contributed by willhan at Tencent Games Reviewed by Monty
-
Kentoku authored
Get count from last_used_con->info Contributed by willhan at Tencent Games
-
Marko Mäkelä authored
page_zip_compress(), page_zip_decompress_low(), page_zip_reorganize(): Make use of memcpy_aligned() and memset_aligned(), so that some operations can be translated more efficiently. No difference was observed for AMD64 on GCC 9.2.1. But, such hints could enable more efficient code on less common instruction set architectures, such as 32-bit ARM, POWER or MIPS.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
Both variants of the InnoDB page directory are aligned to the entry size (16 bits). Inform the compiler about it.
-
Sergei Golubchik authored
generalize the replacement
-
Sergei Golubchik authored
This reverts commit 0d345ec2. Upgrades from 8.0 don't work yet, one has to dump/restore manually to get the metadata out of the data dictionary.
-
Marko Mäkelä authored
dict_table_t::init_instant(): Remove bool replace_dropped=true. The template parameter was unnecessarily added in commit a044e326.
-
Jan Lindström authored
-
Tony Reix authored
Patch `36a2a185` introduced `wsrep_server_incoming_address()` in `10.4`. Since AIX `/usr/include/netinet/ip.h` header defines `ip_len` as `ip_ff.ip_flen` and `size_t const ip_len` is preprocessed as `size_t const ip_ff.ip_vhltl.ip_x.ip_xlen`, to prevent the define from overwriting code in MariaDB, rename the variable name to `ip_len_mdb`. This patch is done by Tony Reix <tony.reix@atos.net>. This patch was submitted under MCA. Closes #1307
-
- 28 Nov, 2019 11 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
warning C4390: ';': empty controlled statement found; is this the intent?
-
Sergei Golubchik authored
mariadb packages conflict with mysql-8.0
-
Sergei Golubchik authored
Obsoletes: cannot contain (x86-64) anymore Python shebang must be specific
-
Marko Mäkelä authored
buf_flush_write_block_low(): Assert that the FIL_PAGE_LSN is set and is not less than buf_page_t::oldest_modification.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
Before commit c0f47a4a (MDEV-12026) introduced the innodb_checksum_algorithm=full_crc32 format, it was impossible to tell if InnoDB data files contained garbage in the FIL_PAGE_TYPE header field (and possibly other fields). This is because before commit 3926673c in MySQL 5.1.48, InnoDB would write uninitialized data to some fields, and because there was no way to tell with which InnoDB version a data file was created. If fil_space_t::full_crc32() holds, the data file cannot contain uninitialized garbage or invalid FIL_PAGE_TYPE, and thus fil_block_check_type() should not be invoked to correct anything.
-
Sergei Golubchik authored
generalize the replacement
-
Vladislav Vaintroub authored
mariadb-conv does not need to be linked with the client library it does not talk to the server
-
Alexander Barkov authored
The original patch was made by Takashi Sasaki <tsasaki609@gmail.com>.
-
Alexander E. Patrakov authored
The log file is opened as root since commit bb7a70c9, so there is no need to chown it.
-