summaryrefslogtreecommitdiff
path: root/storage/innobase
Commit message (Collapse)AuthorAgeFilesLines
* Remove trx_sys_t::pending_purge_rseg_array.Marko Mäkelä2017-03-0911-213/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In MySQL 5.7, there is some redundant code for supposedly handling an upgrade from an earlier version of InnoDB. An upgrade of InnoDB between major versions should include a slow shutdown (innodb_fast_shutdown=0) of the previous version. A comment in trx_lists_init_at_db_start() confused clean shutdown and slow shutdown. A clean shutdown does not necessarily guarantee that there are no active transactions. A slow shutdown guarantees that. Because there was no code to handle rollback of recovered transactions that happened to use the rollback segment slots that MySQL 5.7.2 repurposed for temporary undo logs, the upgrade is not working in all cases, and we may as well remove the code to handle purging. trx_sys_t::pending_purge_rseg_array: Remove. trx_undo_get_undo_rec_low(): Define as static. Remove the parameter is_redo_rseg. trx_undo_get_undo_rec(), trx_rseg_get_on_id(): Remove the parameter is_redo_rseg. trx_rseg_mem_free(): Remove the second parameter. trx_sys_get_nth_rseg(): Replace with trx_rseg_get_on_id(). trx_rseg_schedule_pending_purge(): Remove.
* enum btr_latch_mode: Incorporate some flags.Marko Mäkelä2017-03-095-40/+58
| | | | | This fixes some GCC 6.3.0 warnings and makes the code a little more debugging-friendly.
* MDEV-11688 follow-up: More robust shutdown after aborted startup.Marko Mäkelä2017-03-083-30/+49
| | | | | | | | | | | | | | | | | | After starting MariaDB 10.2 with an invalid value of --innodb-flush-method= (the empty string), shutdown would attempt to dereference some NULL pointers. This was probably broken in commit 81b7fe9d383bdf68a622b95384f067ed68ba342c which implemented shutdown after aborted startup. logs_empty_and_mark_files_at_shutdown(): Allow shutdown even if lock_sys, log_sys, or fil_system is NULL. os_aio_free(): Tolerate os_aio_segment_wait_events==NULL. innobase_start_or_create_for_mysql(): Do not invoke srv_init_abort() before initializing all mutexes for the temporary files. innodb_shutdown(): Tolerate buf_pool_ptr==NULL.
* MDEV-11027 InnoDB log recovery is too noisyMarko Mäkelä2017-03-084-164/+88
| | | | | | | | | | | | | | | | | | | Provide more useful progress reporting of crash recovery. recv_sys_t::progress_time: The time of the last report. recv_sys_t::report(ib_time_t): Determine whether progress should be reported. recv_scan_print_counter: Remove. log_group_read_log_seg(): After after each I/O request, invoke recv_sys_t::report() and report progress if needed. recv_apply_hashed_log_recs(): Change the return type back to void (DB_SUCCESS was always returned), and rename the parameter to last_batch. At the start of each batch, if there are pages to be recovered, issue a message.
* Remove MLOG_COMP_REC_SEC_DELETE_MARK.Marko Mäkelä2017-03-072-21/+2
| | | | | | | | The InnoDB redo log record type MLOG_COMP_REC_SEC_DELETE_MARK has been unused for a long time, and it has never been written after WL#8845 introduced the redo log format identifier in MySQL 5.7.9 or MariaDB Server 10.2.2. Thus, removing the record type does not constitute any functional change.
* Fix many -Wconversion warnings.Marko Mäkelä2017-03-0795-618/+581
| | | | | | | | | | | | | | | | | | | Define my_thread_id as an unsigned type, to avoid mismatch with ulonglong. Change some parameters to this type. Use size_t in a few more places. Declare many flag constants as unsigned to avoid sign mismatch when shifting bits or applying the unary ~ operator. When applying the unary ~ operator to enum constants, explictly cast the result to an unsigned type, because enum constants can be treated as signed. In InnoDB, change the source code line number parameters from ulint to unsigned type. Also, make some InnoDB functions return a narrower type (unsigned or uint32_t instead of ulint; bool instead of ibool).
* Remove an unused declaration.Marko Mäkelä2017-03-061-10/+1
| | | | The function thd_supports_xa() was removed in MySQL 5.7 in WL#8843.
* MDEV-9282 follow-up: Remove an unused variable.Marko Mäkelä2017-03-063-18/+10
| | | | | | | | | Remove the unused variable innodb_calling_exit which was added in MySQL 5.7 in an attempt to avoid failures in other threads when an I/O thread calls exit(). Since MDEV-9282, InnoDB or XtraDB MariaDB Server is not calling exit() at all, and the variable innodb_calling_exit was never set.
* MDEV-12121 Introduce build option WITH_INNODB_AHI to disable ↵Marko Mäkelä2017-03-0341-390/+508
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | innodb_adaptive_hash_index The InnoDB adaptive hash index is sometimes degrading the performance of InnoDB, and it is sometimes disabled to get more consistent performance. We should have a compile-time option to disable the adaptive hash index. Let us introduce two options: OPTION(WITH_INNODB_AHI "Include innodb_adaptive_hash_index" ON) OPTION(WITH_INNODB_ROOT_GUESS "Cache index root block descriptors" ON) where WITH_INNODB_AHI always implies WITH_INNODB_ROOT_GUESS. As part of this change, the misleadingly named function trx_search_latch_release_if_reserved(trx) will be replaced with the macro trx_assert_no_search_latch(trx) that will be empty unless BTR_CUR_HASH_ADAPT is defined (cmake -DWITH_INNODB_AHI=ON). We will also remove the unused column INFORMATION_SCHEMA.INNODB_TRX.TRX_ADAPTIVE_HASH_TIMEOUT. In MariaDB Server 10.1, it used to reflect the value of trx_t::search_latch_timeout which could be adjusted during row_search_for_mysql(). In 10.2, there is no such field. Other than the removal of the unused column TRX_ADAPTIVE_HASH_TIMEOUT, this is an almost non-functional change to the server when using the default build options. Some tests are adjusted so that they will work with both -DWITH_INNODB_AHI=ON and -DWITH_INNODB_AHI=OFF. The test innodb.innodb_monitor has been renamed to innodb.monitor in order to track MySQL 5.7, and the duplicate tests sys_vars.innodb_monitor_* are removed.
* MDEV-12103: Move a misplaced assertion.Marko Mäkelä2017-03-031-1/+2
|
* MDEV-12103 Reduce the time of looking for MLOG_CHECKPOINT during crash recoveryMarko Mäkelä2017-03-033-83/+104
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes MySQL Bug#80788 in MariaDB 10.2.5. When I made the InnoDB crash recovery more robust by implementing WL#7142, I also introduced an extra redo log scan pass that can be shortened. This fix will slightly extend the InnoDB redo log format that I introduced in MySQL 5.7.9 by writing the start LSN of the MLOG_CHECKPOINT mini-transaction to the end of the log checkpoint page, so that recovery can jump straight to it without scanning all the preceding redo log. LOG_CHECKPOINT_END_LSN: At the end of the checkpoint page, the start LSN of the MLOG_CHECKPOINT mini-transaction. Previously, these bytes were written as 0. log_write_checkpoint_info(), log_group_checkpoint(): Add the parameter end_lsn for writing LOG_CHECKPOINT_END_LSN. log_checkpoint(): Remember the LSN at which the MLOG_CHECKPOINT mini-transaction is starting (or at which the redo log ends on shutdown). recv_init_crash_recovery(): Remove. recv_group_scan_log_recs(): Add the parameter checkpoint_lsn. recv_recovery_from_checkpoint_start(): Read LOG_CHECKPOINT_END_LSN and if it is set, start the first scan from it instead of the checkpoint LSN. Improve some messages and remove bogus assertions. recv_parse_log_recs(): Do not skip DBUG_PRINT("ib_log") for some file-level redo log records. recv_parse_or_apply_log_rec_body(): If we have not parsed all redo log between the checkpoint and the corresponding MLOG_CHECKPOINT record, defer the check for MLOG_FILE_DELETE or MLOG_FILE_NAME records to recv_init_crash_recovery_spaces(). recv_init_crash_recovery_spaces(): Refuse recovery if MLOG_FILE_NAME or MLOG_FILE_DELETE records are missing.
* MDEV-12146 Deprecate and remove innodb_instrument_semaphoresMarko Mäkelä2017-02-286-60/+41
| | | | | | | | | | | | | | | | | | | | MDEV-7618 introduced configuration parameter innodb_instrument_semaphores in MariaDB Server 10.1. The parameter seems to only affect the rw-lock X-latch acquisition. Extra fields are added to rw_lock_t to remember one X-latch holder or waiter. These fields are not being consulted or reported anywhere. This is basically only adding code bloat. If the intention is to debug hangs or deadlocks, we have better tools for that in the debug server, and for the non-debug server, core dumps can reveal a lot. For example, the mini-transaction memo records the currently held buffer block or index rw-locks, to be released at mtr_t::commit(). The configuration parameter innodb_instrument_semaphores will be deprecated in 10.2.5 and removed in 10.3.0. rw_lock_t: Remove the members lock_name, file_name, line, thread_id which did not affect any output.
* Remove the unused field tablespace_version.Marko Mäkelä2017-02-271-8/+0
| | | | | The field should have been removed when merging MySQL 5.7.9 to MariaDB 10.2.2 in commit 2e814d4702d71a04388386a9f591d14a35980bfe.
* MDEV-11927 InnoDB change buffer is not being mergedMarko Mäkelä2017-02-245-42/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | to tables in the system tablespace This is a regression caused by MDEV-11585, which accidentally changed Tablespace::is_undo_tablespace() in an incorrect way, causing the InnoDB system tablespace to be reported as a dedicated undo tablespace, for which the change buffer is not applicable. Tablespace::is_undo_tablespace(): Remove. There were only 2 calls from the function buf_page_io_complete(). Replace those calls as appropriate. Also, merge changes to tablespace import/export tests from MySQL 5.7, and clean up the tests a little further, allowing them to be run with any innodb_page_size. Remove duplicated error injection instrumentation for the import/export tests. In MySQL 5.7, the error injection label buf_page_is_corrupt_failure was renamed to buf_page_import_corrupt_failure. fil_space_extend_must_retry(): Correct a debug assertion (tablespaces can be extended during IMPORT), and remove a TODO comment about compressed temporary tables that was already addressed in MDEV-11816. dict_build_tablespace_for_table(): Correct a comment that no longer holds after MDEV-11816, and assert that ROW_FORMAT=COMPRESSED can only be used in .ibd files.
* MDEV-11454 post-merge fix:Marko Mäkelä2017-02-241-3/+6
| | | | | | | | | | | | buf_dump(): Correct the printf format passed to buf_dump_status() to match the argument types. Revert the changes to storage/xtradb. XtraDB is not being compiled for 10.2. The unused copy that we have in the 10.2 branch is only getting merges from 10.1. Disable the test sys_vars.innodb_buffer_pool_dump_pct_function because it is unstable on buildbot.
* Merge pull request #264 from ↵Marko Mäkelä2017-02-241-1/+13
|\ | | | | | | | | grooverdan/10.2-MDEV-11454-innodb_buffer_pool_dump_pct-entire-pool MDEV-11454: Make innodb_buffer_pool_dump_pct refer to the entire buffer pool size
| * Report any innodb_buf_pool_dump_pct restrictionDaniel Black2016-12-061-0/+4
| |
| * MDEV-11454: Make innodb_buffer_pool_dump_pct refer to the entire buffer pool ↵Daniel Black2016-12-061-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | size Rather than innodb_buffer_pool_dump_pct referring to the percentage of hot data in the buffer pool, it refers to the entire buffer pool size. This means that a completed load followed by a shutdown will write the exact same data. The problem was: With innodb_buffer_pool_dump_pct say 25% (the default since 10.2.2), a server started will restore 25% of the buffer pool size with the expectation that over time the rest of the buffer pool will be populated. Then on shutdown 25% will be saved. If a server is started and then is shutdown a) without much activity occurring b) is started as a hot spare and shutdown before being used, then 6.25% (25% of 25%) of the buffer pool is saved. This will generate bigger dump files for users who don't have a full innodb_buffer_pool however a realistic scenario is a buffer pool should be completely used. Signed-off-by: Daniel Black <daniel.black@au.ibm.com>
* | MDEV-11802 innodb.innodb_bug14676111 failsMarko Mäkelä2017-02-2018-111/+132
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The function trx_purge_stop() was calling os_event_reset(purge_sys->event) before calling rw_lock_x_lock(&purge_sys->latch). The os_event_set() call in srv_purge_coordinator_suspend() is protected by that X-latch. It would seem a good idea to consistently protect both os_event_set() and os_event_reset() calls with a common mutex or rw-lock in those cases where os_event_set() and os_event_reset() are used like condition variables, tied to changes of shared state. For each os_event_t, we try to document the mutex or rw-lock that is being used. For some events, frequent calls to os_event_set() seem to try to avoid hangs. Some events are never waited for infinitely, only timed waits, and os_event_set() is used for early termination of these waits. os_aio_simulated_put_read_threads_to_sleep(): Define as a null macro on other systems than Windows. TODO: remove this altogether and disable innodb_use_native_aio on Windows. os_aio_segment_wait_events[]: Initialize only if innodb_use_native_aio=0. log_write_flush_to_disk_low(): Invoke log_mutex_enter() at the end, to avoid race conditions when changing the system state. (No potential race condition existed before MySQL 5.7.)
* | Simplify a WL#6494/WL#7142 test.mariadb-10.2.4Marko Mäkelä2017-02-161-3/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The test innodb.log_file_size_checkpoint was originally added to MySQL 5.7 by me in a bug fix, to fix the interaction of WL#6494 (redo log resizing, introduced in MySQL 5.6) and WL#7142 (data file discovery based on MLOG_FILE_NAME records, introduced in MySQL 5.7): commit 70f9ef4e1220827132b50275ca7272f2bcca1864 Author: Marko Mäkelä <marko.makela@oracle.com> Date: Wed May 21 13:31:29 2014 +0300 Bug#18755095 REDO LOG SIZE CHANGE AFTER CRASH RESULTS IN CHECKPOINT AGE ERROR MESSAGE This is a regression from fixing Bug#18730524 REPEATED KILL+RESTART FAILS DUE TO MISSING MLOG_FILE_NAME RECORD innobase_start_or_create_for_mysql(): Invoke fil_names_clear() before creating the "checkpoint" when changing redo log files. Approved by Jimmy Yang on IM. The relevant part of the test is that fil_names_clear() is invoked to emit an MLOG_CHECKPOINT record before the redo log files are deleted. In case the server is killed before ib_logfile0 has been deleted, the old (not-yet-resized) redo log will be treated as valid. We do not need to create a large number of tables for that.
* | MDEV-12072 Do not unnecessarily construct rec_printer objectsMarko Mäkelä2017-02-163-132/+68
| | | | | | | | | | | | | | | | | | I introduced the rec_printer object in MySQL to pretty-print raw InnoDB records and index tuples in diagnostic messages. These objects are being constructed unconditionally, even though the DBUG_PRINT is not enabled. The unnecessary work is avoided by simply passing rec_printer(…).str() to the DBUG_LOG macro that was introduced in MDEV-11713.
* | MDEV-11641 innobase_get_stmt_safe() does not copy the last byte of ↵Marko Mäkelä2017-02-151-2/+2
| | | | | | | | | | | | thd->query_string innobase_get_stmt_safe(): Copy also the last byte.
* | Fix some InnoDB memory leaks.Marko Mäkelä2017-02-154-20/+22
| | | | | | | | | | | | | | | | dict_init_free(): Make global, and move the call from dict_close() to srv_free(), because this is initialized earlier than dict_sys. innobase_space_shutdown(): Do not leak srv_allow_writes_event.
* | MDEV-11782: Redefine the innodb_encrypt_log formatMarko Mäkelä2017-02-1510-1015/+569
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Write only one encryption key to the checkpoint page. Use 4 bytes of nonce. Encrypt more of each redo log block, only skipping the 4-byte field LOG_BLOCK_HDR_NO which the initialization vector is derived from. Issue notes, not warning messages for rewriting the redo log files. recv_recovery_from_checkpoint_finish(): Do not generate any redo log, because we must avoid that before rewriting the redo log files, or otherwise a crash during a redo log rewrite (removing or adding encryption) may end up making the database unrecoverable. Instead, do these tasks in innobase_start_or_create_for_mysql(). Issue a firm "Missing MLOG_CHECKPOINT" error message. Remove some unreachable code and duplicated error messages for log corruption. LOG_HEADER_FORMAT_ENCRYPTED: A flag for identifying an encrypted redo log format. log_group_t::is_encrypted(), log_t::is_encrypted(): Determine if the redo log is in encrypted format. recv_find_max_checkpoint(): Interpret LOG_HEADER_FORMAT_ENCRYPTED. srv_prepare_to_delete_redo_log_files(): Display NOTE messages about adding or removing encryption. Do not issue warnings for redo log resizing any more. innobase_start_or_create_for_mysql(): Rebuild the redo logs also when the encryption changes. innodb_log_checksums_func_update(): Always use the CRC-32C checksum if innodb_encrypt_log. If needed, issue a warning that innodb_encrypt_log implies innodb_log_checksums. log_group_write_buf(): Compute the checksum on the encrypted block contents, so that transmission errors or incomplete blocks can be detected without decrypting. Rewrite most of the redo log encryption code. Only remember one encryption key at a time (but remember up to 5 when upgrading from the MariaDB 10.1 format.)
* | MDEV-12061 Allow innodb_log_files_in_group=1Marko Mäkelä2017-02-153-8/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The InnoDB redo log consists of a list of files that logically form a bigger file, as if the individual files were concatenated together. The first file will always be written on redo log checkpoint, because the two checkpoint pages are at the start of the single logical redo log file. There is no technical reason why InnoDB requires at least 2 files to exist. Let us reduce the minimum number to 1. In that way, restoring from backups will become easier, since InnoDB can directly deal with a single backed-up redo log file.
* | MDEV-12057 Embedded server shutdown hangs in InnoDBMarko Mäkelä2017-02-144-39/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Ever since MDEV-5800 enabled indexed virtual columns for InnoDB, the InnoDB shutdown relied on close_connections() that would set thd->killed for the InnoDB purge threads. Alas, the embedded server shutdown is not invoking close_connections(), and thus InnoDB purge threads fail to initiate shutdown, causing a hang. innodb_inited: Remove. Use srv_was_started instead. innobase_fast_shutdown: Remove. Use srv_fast_shutdown instead. srv_running: Renamed from thd_destructor_myvar, and made global. The value NULL means that shutdown was requested or the purge threads should not be running because of innodb_read_only_mode=1. innobase_init(): Set srv_was_started after ensuring that srv_running was initialized. (In innodb_read_only mode, the purge threads are not started and we do not care if srv_running==NULL.) innobase_start_or_create_for_mysql(): Do not set srv_was_started. Let it be set by the only caller innobase_init(). srv_purge_should_exit(): Check also srv_was_started and srv_running when evaluating thd->killed.
* | MDEV-11704 InnoDB: Failing assertion: dfield_is_null(dfield2) || dfield2->dataSergei Golubchik2017-02-131-1/+2
| | | | | | | | | | relax innodb assertion, because Field_blob::store() clearly says that a data pointer can be zero if the length is zero.
* | bugfix: disable ICP in InnoDB for indexes on virtual columnsSergei Golubchik2017-02-131-0/+6
| | | | | | | | because it doesn't work, vcols are never calculated for ICP
* | InnoDB: suppress posix_fallocate() failure errors when EINVALSergei Golubchik2017-02-131-10/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | EINVAL means that the filesystem doesn't support posix_fallocate(). There were two places where this error was issued, one checked for EINVAL, the other did not. This commit fixed the other place to also check for EINVAL. Also, remove the space after the REFMAN to get the valid url with no space in the middle. Also don't say "Make sure the file system supports this function." when posix_fallocate() fails, because this message is only shown when the filesystem does support this function.
* | MDEV-11836 vcol.vcol_keys_myisam fails in buildbot and outsideSergei Golubchik2017-02-131-1/+1
| | | | | | | | | | | | | | move TABLE::key_read into handler. Because in index merge and DS-MRR there can be many handlers per table, and some of them use key read while others don't. "keyread" is really per handler, not per TABLE property.
* | Post-fix for MDEV-12050 Remove unused InnoDB Memcached hooksMarko Mäkelä2017-02-132-5/+0
| | | | | | | | | | Remove also the field trx_t::read_write that was only used by the Memcached hooks.
* | MDEV-12050 Remove unused InnoDB Memcached hooksMarko Mäkelä2017-02-1319-4943/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Oracle introduced a Memcached plugin interface to the InnoDB storage engine in MySQL 5.6. That interface is essentially a fork of Memcached development snapshot 1.6.0-beta1 of an old development branch 'engine-pu'. To my knowledge, there have not been any updates to the Memcached code between MySQL 5.6 and 5.7; only bug fixes and extensions related to the Oracle modifications. The Memcached plugin is not part of the MariaDB Server. Therefore it does not make sense to include the InnoDB interfaces for the Memcached plugin, or to have any related configuration parameters: innodb_api_bk_commit_interval innodb_api_disable_rowlock innodb_api_enable_binlog innodb_api_enable_mdl innodb_api_trx_level Removing this code in one commit makes it possible to easily restore it, in case it turns out to be needed later.
* | MDEV-11782 preparation: Add separate code for validating the 10.1 redo log.Marko Mäkelä2017-02-133-6/+98
| | | | | | | | | | | | | | | | | | | | | | | | | | | | log_crypt_101_read_checkpoint(): Read the encryption information from a MariaDB 10.1 checkpoint page. log_crypt_101_read_block(): Attempt to decrypt a MariaDB 10.1 redo log page. recv_log_format_0_recover(): Only attempt decryption on checksum mismatch. NOTE: With the MariaDB 10.1 innodb_encrypt_log format, we can actually determine from the cleartext portion of the redo log whether the redo log is empty. We do not really have to decrypt the redo log here, if we did not want to determine if the checksum is valid.
* | MDEV-11782 preparation: Remove recv_sys_t::last_block.Marko Mäkelä2017-02-132-28/+9
| | | | | | | | | | We can use log_sys->buf instead of recv_sys->last_block during crash recovery. Remove the redundant buffer.
* | Fix a memory leak on aborted InnoDB startup.Marko Mäkelä2017-02-132-4/+5
| | | | | | | | | | | | | | | | | | innodb_shutdown(), trx_sys_close(): Startup may be aborted between purge_sys and trx_sys creation. Therefore, purge_sys must be freed independently of trx_sys. innobase_start_or_create_for_mysql(): Remember to free purge_queue if it was not yet attached to purge_sys.
* | Merge branch 'bb-10.2-serg-merge' into 10.2Sergei Golubchik2017-02-114-13/+18
|\ \
| * \ Merge branch '10.1' into 10.2Sergei Golubchik2017-02-104-13/+18
| |\ \
| | * | MDEV-11671: Duplicated [NOTE] output for changed innodb_page_sizeJan Lindström2017-01-311-19/+13
| | | | | | | | | | | | | | | | Remove duplicated output and change output level to info.
| | * | Merge 10.0 into 10.1Marko Mäkelä2017-01-262-176/+113
| | |\ \
| | | * | MDEV-11915 Detect InnoDB system tablespace size mismatch earlyMarko Mäkelä2017-01-262-170/+91
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | InnoDB would refuse to start up if there is a mismatch on the size of the system tablespace files. However, before this check is conducted, the system tablespace may already have been heavily modified. InnoDB should perform the size check as early as possible. recv_recovery_from_checkpoint_finish(): Move the recv_apply_hashed_log_recs() call to innobase_start_or_create_for_mysql(). innobase_start_or_create_for_mysql(): Test the mutex functionality before doing anything else. Use a compile_time_assert() for a sizeof() constraint. Check the size of the system tablespace as early as possible.
| | | * | MDEV-11814 Refuse innodb_read_only startup if crash recovery is neededMarko Mäkelä2017-01-261-5/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | recv_scan_log_recs(): Remember if redo log apply is needed, even if starting up in innodb_read_only mode. recv_recovery_from_checkpoint_start_func(): Refuse innodb_read_only startup if redo log apply is needed.
| | * | | MDEV-11614: Syslog messages: "InnoDB: Log sequence numberJan Lindström2017-01-221-8/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | at the start 759654123 and the end 0 do not match." For page compressed and encrypted tables log sequence number at end is not stored, thus disable this message for them.
| | * | | MDEV-11838: Innodb-encryption-algorithm default should be != noneJan Lindström2017-01-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change default to zlib, this has effect only if user has explicitly requested page compression and then user naturally expects that pages are really compressed if they can be compressed.
| | * | | MDEV-11835: InnoDB: Failing assertion: free_slot != NULL onJan Lindström2017-01-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | restarting server with encryption and read-only buf0buf.cc: Temporary slots used in encryption was calculated by read_threads * write_threads. However, in read-only mode write_threads is zero. Correct way is to calculate (read_threads + write_threads) * max pending IO requests.
| | * | | Merge remote-tracking branch 'origin/10.1' into 10.1bb-10.1-vicentiu-galeraVicențiu Ciorbaru2017-01-1616-872/+724
| | |\ \ \ | | | | | | | | | | | | | | | | | | Extra merge due to more extra commits during merge process
| | * \ \ \ Merge branch '10.0' into 10.1Vicențiu Ciorbaru2017-01-1613-61/+189
| | |\ \ \ \ | | | | |/ / | | | |/| |
| | | * | | Merge branch 'bb-10.0-vicentiu' into 10.0mariadb-10.0.29Vicențiu Ciorbaru2017-01-1213-61/+189
| | | |\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | Extra merge commit due to intermediate commits pushed to 10.0 while merge was done.
| | | | * | | Fix problems from 5.5 mergeVicențiu Ciorbaru2017-01-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Update mysqld_safe script to remove duplicated parameter --crash-script * Make --core-file-size accept underscores as well as dashes correctly. * Add mysqld_safe_helper to Debian and Ubuntu files. * Update innodb minor version to 35
| | | | * | | Merge remote-tracking branch 'merge/merge-innodb-5.6' into 10.0vicentiu2017-01-1012-60/+188
| | | | |\ \ \
| | | | | * | | 5.6.35vicentiu2017-01-0712-60/+188
| | | | | | | |