summaryrefslogtreecommitdiff
path: root/mysql-test
Commit message (Collapse)AuthorAgeFilesLines
* MDEV-14479: Do not acquire InnoDB record locks when covering table locksbb-10.5-MDEV-14479-table-locksVlad Lesin2020-02-282-0/+203
| | | | | | | exist lock_rec_lock() does not set record lock if table lock is stronger or equal to the acquired record lock.
* cleanup trailing wsSergey Vojtovich2020-02-272-18/+18
|
* MDEV-10569: Add RELEASE_ALL_LOCKS function. Implementing the SQLDaniel-Solo2020-02-272-1/+149
| | | | function to release all named locks
* Revert "MDEV-17554 Auto-create new partition for system versioned tables ↵Sergei Golubchik2020-02-276-251/+36
| | | | | | | with history partitioned by INTERVAL/LIMIT" This reverts commit 9894751a2a61ef952ac6ac556fd683e53fc150e2. This reverts commit f707c83fff4fa3f5291684e6226542fdb75bbdeb.
* MDEV-17554 Auto-create new partition for system versioned tables with ↵Aleksey Midenkov2020-02-256-36/+251
| | | | | | | | | | | | | | | | | | | | | | | | | | | | history partitioned by INTERVAL/LIMIT When there are E empty partitions left, auto-create N new empty partitions for SYSTEM_TIME partitioning rotated by INTERVAL/LIMIT and marked by AUTO_INCREMENT keyword. Syntax change: AUTO_INCREMENT keyword (or shorter AUTO may be used instead) after LIMIT/INTERVAL clause. CREATE OR REPLACE TABLE t (x INT) WITH SYSTEM VERSIONING PARTITION BY SYSTEM_TIME LIMIT 100000 AUTO_INCREMENT; CREATE OR REPLACE TABLE t (x INT) WITH SYSTEM VERSIONING PARTITION BY SYSTEM_TIME INTERVAL 1 WEEK AUTO_INCREMENT; The current revision implements hard-coded values of 1 for E and N. As well as auto-creation threshold MinInterval = 1 hour, MinLimit = 1000. The name for newly added partition will be first chosen as "pX", where X is partition number and "p" is hard-coded name prefix. If this name is already occupied, the X will be incremented until the resulting name will be free to use. ALTER TABLE ADD PARTITION is now always fast. If there some history partition overflow occurs manual ALTER TABLE REBUILD PARTITION is needed.
* try to fix sysvars_innodb,32bit testEugene Kosov2020-02-241-2/+2
|
* Disable galera_as_slave_gtid_replicate_do_db_cc because it crashes.Jan Lindström2020-02-213-45/+45
|
* MDEV-21601 : Cleanup Galera disabled testsJan Lindström2020-02-216-122/+0
| | | | | | * Remove those tests that will not be supported on that release. * Make sure that correct tests are disabled and have MDEVs * Sort test names
* Fix Galera test galera_as_slave_ctas.Jan Lindström2020-02-212-30/+32
|
* MDEV-21420 : Galera test failure on galera.mysql-wsrep#33Jan Lindström2020-02-214-7/+418
| | | | Add more tests and move SST restore to correct place.
* MDEV-21514 : Galera test failure on galera.galera_wan_restart_sst on AzureJan Lindström2020-02-213-29/+20
| | | | Remove sleeps and unnecessary waits.
* MDEV-18180 : Galera test failure on galera.galera_concurrent_ctasJan Lindström2020-02-212-19/+18
| | | | Test changes only.
* MDEV-21517 : Galera test galera_sr.GCF-561 failure: Result length mismatchJan Lindström2020-02-212-5/+10
| | | | Add wait conditions.
* MDEV-21421 : Galera test sporadic failure on ↵Jan Lindström2020-02-214-61/+61
| | | | | | | galera.galera_as_slave_gtid_myisam: Result length mismatch In Galera 4 nodes 1 and 2 are galera nodes and node_3 should be non galera.
* MDEV-21601 : Cleanup Galera disabled testsJan Lindström2020-02-2121-1440/+3
| | | | | | | | * Remove those tests that will not be supported on that release. * Make sure that correct tests are disabled and have MDEVs * Sort test names This should not be merged upwards.
* MDEV-14425 deprecate and ignore innodb_log_files_in_groupEugene Kosov2020-02-1919-152/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now there can be only one log file instead of several which logically work as a single file. Possible names of redo log files: ib_logfile0, ib_logfile101 (for just created one) innodb_log_fiels_in_group: value of this variable is not used by InnoDB. Possible values are still 1..100, to not break upgrade LOG_FILE_NAME: add constant of value "ib_logfile0" LOG_FILE_NAME_PREFIX: add constant of value "ib_logfile" get_log_file_path(): convenience function that returns full path of a redo log file SRV_N_LOG_FILES_MAX: removed srv_n_log_files: we can't remove this for compatibility reasons, but now server doesn't use this variable log_sys_t::file::fd: now just one, not std::vector log_sys_t::log_capacity: removed word 'group' find_and_check_log_file(): part of logic from huge srv_start() moved here recv_sys_t::files: file descriptors of redo log files. There can be several of those in case we're upgrading from older MariaDB version. recv_sys_t::remove_extra_log_files: whether to remove ib_logfile{1,2,3...} after successfull upgrade. recv_sys_t::read(): open if needed and read from one of several log files recv_sys_t::files_size(): open if needed and return files count redo_file_sizes_are_correct(): check that redo log files sizes are equal. Just to log an error for a user. Corresponding check was moved from srv0start.cc namespace deprecated: put all deprecated variables here to prevent usage of it by us, developers
* Reduce innodb_log_buffer_sizeMarko Mäkelä2020-02-182-2/+1
|
* MDEV-21725 Optimize btr_page_reorganize_low() redo loggingMarko Mäkelä2020-02-181-1/+1
| | | | | | | btr_page_reorganize_low(): Log only the changed data in the page. TODO: Do not copy the entire changed payload to the redo log. Emit a combination of MEMMOVE and WRITE records to reduce the log volume.
* MDEV-21744 Assertion `!rec_offs_nth_sql_null(offsets, n)' failedMarko Mäkelä2020-02-173-3/+51
| | | | | | | | | | | | | commit 08ba388713946c03aa591899cd3a446a6202f882 of MDEV-12353 introduced an incorrect assumption, which was documented by the failing assertion. After instant ADD COLUMN, we can have a null (and in-place) UPDATE of NULL to NULL. No data needs to be written for such updates. For ROW_FORMAT=REDUNDANT, we reserve space for the NULL values, and to be compatible with existing behaviour, we will zerofill the unused data bytes when updating to NULL value.
* Clarify, spelling for wsrep_strict_ddl description (#1447)Ian Gilfillan2020-02-171-1/+1
|
* MDEV-12353: Test InnoDB upgrade from multi-file redo logMarko Mäkelä2020-02-143-2/+208
|
* Merge commit 'bb-10.5-release' into 10.5Sergei Golubchik2020-02-141-1/+1
|\
| * alpha -> betamariadb-10.5.1Sergei Golubchik2020-02-131-1/+1
| |
* | MDEV-12353: Remove support for crash-upgradebb-10.5-MDEV-12353Marko Mäkelä2020-02-133-50/+22
| | | | | | | | | | | | We tighten some assertions regarding dict_index_t::is_dummy and crash recovery, now that redo log processing will no longer create dummy objects.
* | MDEV-12353: Change the redo log encodingMarko Mäkelä2020-02-138-74/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | log_t::FORMAT_10_5: physical redo log format tag log_phys_t: Buffered records in the physical format. The log record bytes will follow the last data field, making use of alignment padding that would otherwise be wasted. If there are multiple records for the same page, also those may be appended to an existing log_phys_t object if the memory is available. In the physical format, the first byte of a record identifies the record and its length (up to 15 bytes). For longer records, the immediately following bytes will encode the remaining length in a variable-length encoding. Usually, a variable-length-encoded page identifier will follow, followed by optional payload, whose length is included in the initially encoded total record length. When a mini-transaction is updating multiple fields in a page, it can avoid repeating the tablespace identifier and page number by setting the same_page flag (most significant bit) in the first byte of the log record. The byte offset of the record will be relative to where the previous record for that page ended. Until MDEV-14425 introduces a separate file-level log for redo log checkpoints and file operations, we will write the file-level records in the page-level redo log file. The record FILE_CHECKPOINT (which replaces MLOG_CHECKPOINT) will be removed in MDEV-14425, and one sequential scan of the page recovery log will suffice. Compared to MLOG_FILE_CREATE2, FILE_CREATE will not include any flags. If the information is needed, it can be parsed from WRITE records that modify FSP_SPACE_FLAGS. MLOG_ZIP_WRITE_STRING: Remove. The record was only introduced temporarily as part of this work, before being replaced with WRITE (along with MLOG_WRITE_STRING, MLOG_1BYTE, MLOG_nBYTES). mtr_buf_t::empty(): Check if the buffer is empty. mtr_t::m_n_log_recs: Remove. It suffices to check if m_log is empty. mtr_t::m_last, mtr_t::m_last_offset: End of the latest m_log record, for the same_page encoding. page_recv_t::last_offset: Reflects mtr_t::m_last_offset. Valid values for last_offset during recovery should be 0 or above 8. (The first 8 bytes of a page are the checksum and the page number, and neither are ever updated directly by log records.) Internally, the special value 1 indicates that the same_page form will not be allowed for the subsequent record. mtr_t::page_create(): Take the block descriptor as parameter, so that it can be compared to mtr_t::m_last. The INIT_INDEX_PAGE record will always followed by a subtype byte, because same_page records must be longer than 1 byte. trx_undo_page_init(): Combine the writes in WRITE record. trx_undo_header_create(): Write 4 bytes using a special MEMSET record that includes 1 bytes of length and 2 bytes of payload. flst_write_addr(): Define as a static function. Combine the writes. flst_zero_both(): Replaces two flst_zero_addr() calls. flst_init(): Do not inline the function. fsp_free_seg_inode(): Zerofill the whole inode. fsp_apply_init_file_page(): Initialize FIL_PAGE_PREV,FIL_PAGE_NEXT to FIL_NULL when using the physical format. btr_create(): Assert !page_has_siblings() because fsp_apply_init_file_page() must have been invoked. fil_ibd_create(): Do not write FILE_MODIFY after FILE_CREATE. fil_names_dirty_and_write(): Remove the parameter mtr. Write the records using a separate mini-transaction object, because any FILE_ records must be at the start of a mini-transaction log. recv_recover_page(): Add a fil_space_t* parameter. After applying log to the a ROW_FORMAT=COMPRESSED page, invoke buf_zip_decompress() to restore the uncompressed page. buf_page_io_complete(): Remove the temporary hack to discard the uncompressed page of a ROW_FORMAT=COMPRESSED page. page_zip_write_header(): Remove. Use mtr_t::write() or mtr_t::memset() instead, and update the compressed page frame separately. trx_undo_header_add_space_for_xid(): Remove. trx_undo_seg_create(): Perform the changes that were previously made by trx_undo_header_add_space_for_xid(). btr_reset_instant(): New function: Reset the table to MariaDB 10.2 or 10.3 format when rolling back an instant ALTER TABLE operation. page_rec_find_owner_rec(): Merge with the only callers. page_cur_insert_rec_low(): Combine writes by using a local buffer. MEMMOVE data from the preceding record whenever feasible (copying at least 3 bytes). page_cur_insert_rec_zip(): Combine writes to page header fields. PageBulk::insertPage(): Issue MEMMOVE records to copy a matching part from the preceding record. PageBulk::finishPage(): Combine the writes to the page header and to the sparse page directory slots. mtr_t::write(): Only log the least significant (last) bytes of multi-byte fields that actually differ. For updating FSP_SIZE, we must always write all 4 bytes to the redo log, so that the fil_space_set_recv_size() logic in recv_sys_t::parse() will work. mtr_t::memcpy(), mtr_t::zmemcpy(): Take a pointer argument instead of a numeric offset to the page frame. Only log the last bytes of multi-byte fields that actually differ. In fil_space_crypt_t::write_page0(), we must log also any unchanged bytes, so that recovery will recognize the record and invoke fil_crypt_parse(). Future work: MDEV-21724 Optimize page_cur_insert_rec_low() redo logging MDEV-21725 Optimize btr_page_reorganize_low() redo logging MDEV-21727 Optimize redo logging for ROW_FORMAT=COMPRESSED
* | MDEV-12353: Replace MLOG_REC_INSERT,MLOG_COMP_REC_INSERTMarko Mäkelä2020-02-132-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | page_mem_alloc_free(), page_dir_set_n_heap(), page_ptr_set_direction(): Merge with the callers. page_direction_reset(), page_direction_increment(), page_zip_dir_insert(), page_zip_write_rec_ext(), page_zip_write_rec(): Add the parameter mtr, and write log. PageBulk::insert(), PageBulk::finish(): Write log for all changes. page_cur_rec_insert(), page_cur_insert_rec_write_log(), page_cur_insert_rec_write_log(): Remove. page_rec_set_next(), page_header_set_field(), page_header_set_ptr(): Remove. Use lower-level operations with or without logging. page_zip_dir_add_slot(): Move to the same compilation unit with its only caller, page_cur_insert_rec_zip(). page_cur_insert_rec_zip(): Mark pieces of code that must be skipped once this task is completed. btr_defragment_chunk(): Before starting a mini-transaction that is writing (a lot), invoke log_free_check(). This should allow the test innodb.innodb_defrag_concurrent to pass with the mtr default_mysqld.cnf setting of innodb_log_file_size=10M. MLOG_BUF_MARGIN: Remove.
* | MDEV-12353: Replace MLOG_*LIST_*_DELETE and MLOG_*REC_DELETEMarko Mäkelä2020-02-131-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | No longer write the following redo log records: MLOG_COMP_LIST_END_DELETE, MLOG_LIST_END_DELETE, MLOG_COMP_LIST_START_DELETE, MLOG_LIST_START_DELETE, MLOG_REC_DELETE,MLOG_COMP_REC_DELETE. Each individual deleted record will be logged separately using physical log records. page_dir_slot_set_n_owned(), page_zip_rec_set_owned(), page_zip_dir_delete(), page_zip_clear_rec(): Add the parameter mtr, and write redo log. page_dir_slot_set_rec(): Remove. Replaced with lower-level operations that write redo log when necessary. page_rec_set_n_owned(): Replaces rec_set_n_owned_old(), rec_set_n_owned_new(). rec_set_heap_no(): Replaces rec_set_heap_no_old(), rec_set_heap_no_new(). page_mem_free(), page_dir_split_slot(), page_dir_balance_slot(): Add the parameter mtr. page_dir_set_n_slots(): Merge with the caller page_dir_split_slot(). page_dir_slot_set_rec(): Merge with the callers page_dir_split_slot() and page_dir_balance_slot(). page_cur_insert_rec_low(), page_cur_insert_rec_zip(): Suppress the logging of lower-level operations. page_cur_delete_rec_write_log(): Remove. page_cur_delete_rec(): Do not tolerate mtr=NULL. rec_convert_dtuple_to_rec_old(), rec_convert_dtuple_to_rec_comp(): Replace rec_set_heap_no_old() and rec_set_heap_no_new() with direct access that does not involve redo logging. mtr_t::memcpy(): Do allow non-redo-logged writes to uncompressed pages of ROW_FORMAT=COMPRESSED pages. buf_page_io_complete(): Evict the uncompressed page of a ROW_FORMAT=COMPRESSED page after recovery. Because we no longer write logical log records for deleting index records, but instead write physical records that may refer directly to the compressed page frame of a ROW_FORMAT=COMPRESSED page, and because on recovery we will only apply the changes to the ROW_FORMAT=COMPRESSED page, the uncompressed page frame can be stale until page_zip_decompress() is executed. recv_parse_or_apply_log_rec_body(): After applying MLOG_ZIP_WRITE_STRING, ensure that the FIL_PAGE_TYPE of the uncompressed page matches the compressed page, because buf_flush_init_for_writing() assumes that field to be valid. mlog_init_t::mark_ibuf_exist(): Invoke page_zip_decompress(), because the uncompressed page after buf_page_create() is not necessarily up to date. buf_LRU_block_remove_hashed(): Bypass a page_zip_validate() check during redo log apply. recv_apply_hashed_log_recs(): Invoke mlog_init.mark_ibuf_exist() also for the last batch, to ensure that page_zip_decompress() will be called for freshly initialized pages.
* | MDEV-12353: Replace MLOG_*_END_COPY_CREATEDMarko Mäkelä2020-02-1314-165/+209
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of writing the high-level redo log records MLOG_LIST_END_COPY_CREATED, MLOG_COMP_LIST_END_COPY_CREATED write log for each individual insert of a record. page_copy_rec_list_end_to_created_page(): Remove. This will improve the fill factor of some pages. Adjust some tests accordingly. PageBulk::init(), PageBulk::finish(): Avoid setting bogus limits to PAGE_HEAP_TOP and PAGE_N_DIR_SLOTS. Avoid accessor functions that would enforce these limits before the correct ones are set at the end of PageBulk::finish().
* | MDEV-12353: Deprecate and ignore innodb_log_compressed_pagesMarko Mäkelä2020-02-135-26/+21
|/ | | | | | page_zip_compress_write_log_no_data(): Remove. We no longer write the MLOG_ZIP_PAGE_COMPRESS_NO_DATA record. Instead, we will write MLOG_ZIP_PAGE_COMPRESS records.
* Update rdiff for sysvars 32bit to account for removed optionsVicențiu Ciorbaru2020-02-132-324/+282
|
* MDEV-18650: Options deprecated in previous versions - multi_range_countVicențiu Ciorbaru2020-02-135-490/+0
| | | | Remove deprecated system variable multi_range_count. It was ignored from 5.3.
* MDEV-18650: Options deprecated in previous versions - skip-bdbVicențiu Ciorbaru2020-02-131-2/+0
| | | | Remove the option from mysqld --help text.
* MDEV-18650: Options deprecated in previous versions - thread_concurrencyVicențiu Ciorbaru2020-02-139-400/+0
| | | | thread_concurrency was ignored since 5.5. Remove it.
* MDEV-18650: Options deprecated in previous versions - old_alter_tableVicențiu Ciorbaru2020-02-135-0/+32
| | | | | It was deprecated in 5.5 but it never issued a deprecation warning. Make it issue a warning in 10.5.1.
* MDEV-18650: Options deprecated in previous versions - storage_engineVicențiu Ciorbaru2020-02-13255-760/+794
| | | | | | | Remove usage of deprecated variable storage_engine. It was deprecated in 5.5 but it never issued a deprecation warning. Make it issue a warning in 10.5.1. Replaced with default_storage_engine.
* MDEV-15058: Revert the changes to INFORMATION_SCHEMAMarko Mäkelä2020-02-128-12/+17
| | | | | | | | | | | | | | | For compatibility with diagnostic software, let us return a dummy buffer pool identifier 0 and restore the columns that were initially deleted in commit 1a6f708ec594ac0ae2dd30db926ab07b100fa24b: information_schema.innodb_buffer_page.pool_id information_schema.innodb_buffer_page_lru.pool_id information_schema.innodb_buffer_pool_stats.pool_id information_schema.innodb_cmpmem.buffer_pool_instance information_schema.innodb_cmpmem_reset.buffer_pool_instance Thanks to Vladislav Vaintroub for pointing this out.
* MDEV-21665: Server crashes in my_qsort2 / Filesort_buffer::sort_bufferVarun Gupta2020-02-122-0/+53
| | | | | Allocation should use ALIGN_SIZE when we need to make sure that we have atleast enough space to store one record in MERGEBUFF2 buffers
* MDEV-15058: Deprecate and ignore innodb_buffer_pool_instancesMarko Mäkelä2020-02-1214-176/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Our benchmarking efforts indicate that the reasons for splitting the buf_pool in commit c18084f71b02ea707c6461353e6cfc15d7553bc6 have mostly gone away, possibly as a result of mysql/mysql-server@ce6109ebfdedfdf185e391a0c97dc6d33867ed78 or similar work. Only in one write-heavy benchmark where the working set size is ten times the buffer pool size, the buf_pool->mutex would be less contended with 4 buffer pool instances than with 1 instance, in buf_page_io_complete(). That contention could be alleviated further by making more use of std::atomic and by splitting buf_pool_t::mutex further (MDEV-15053). We will deprecate and ignore the following parameters: innodb_buffer_pool_instances innodb_page_cleaners There will be only one buffer pool and one page cleaner task. In a number of INFORMATION_SCHEMA views, columns that indicated the buffer pool instance will be removed: information_schema.innodb_buffer_page.pool_id information_schema.innodb_buffer_page_lru.pool_id information_schema.innodb_buffer_pool_stats.pool_id information_schema.innodb_cmpmem.buffer_pool_instance information_schema.innodb_cmpmem_reset.buffer_pool_instance
* Merge branch '10.4' into 10.5Oleksandr Byelkin2020-02-12124-2022/+2526
|\
| * Merge branch '10.3' into 10.4Oleksandr Byelkin2020-02-11126-2025/+2531
| |\
| | * Merge branch '10.2' into 10.3Oleksandr Byelkin2020-02-108-20/+52
| | |\
| | | * Merge branch '10.1' into 10.2Oleksandr Byelkin2020-02-102-0/+17
| | | |\
| | | | * MDEV-21563 FTS thread aborts during shutdownThirunarayanan Balathandayuthapani2020-02-072-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | | - Added the test case in innodb_fts suite - Updated copyright year in row0mysql.cc
| | | | * List of unstable tests for 10.1.44 releasemariadb-10.1.44Elena Stepanova2020-01-251-146/+117
| | | | |
| | | * | MDEV-21667 : Galera test failure on MW-336Jan Lindström2020-02-092-24/+96
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem seems to be the fact that we did not enforce correct applier thread numbers after every command that effects them. Test changes only.
| | | * | MDEV-21601 : Cleanup Galera disabled testsJan Lindström2020-02-0920-1244/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Remove those tests that will not be supported on that release. * Make sure that correct tests are disabled and have MDEVs * Sort test names This should not be merged upwards.
| | | * | added warning to ignoreOleksandr Byelkin2020-02-071-2/+2
| | | | |
| | | * | Windows test fixOleksandr Byelkin2020-02-071-13/+14
| | | | |
| | | * | MDEV-21608 Assertion `n_ext == dtuple_get_n_ext(dtuple)' failed during ↵Thirunarayanan Balathandayuthapani2020-02-072-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | updation of PK - n_ext value may be less than dtuple_get_n_ext(dtuple) when PK is being updated and new record inherits the externally stored fields from delete mark old record.
| | | * | MDEV-18027: Running out of file descriptors and eventual crashOleksandr Byelkin2020-02-052-2/+2
| | | | | | | | | | | | | | | | | | | | For automatic number of opened files limit take into account number of table instances for table cache