MySQL Community Server 5.7.6 has been released (part 2/3)
Posted by: Bjørn Munch
Date: March 10, 2015 12:00PM
Date: March 10, 2015 12:00PM
[This is part 2 of the announcement ]
* The minimum value of the stored_program_cache system variable has been changed from 256 to 16, to enable configuration of a smaller amount of memory devoted to the stored program cache. (Bug #72451, Bug #18661573) * The code in my_strnxfrm_simple() was suboptimal and was improved. Thanks to Alexey Kopytov for the patch. (Bug #68476, Bug #16403708) * Features have been added to MySQL 5.7.6 which are reserved for future use. These specific changes were implemented: The following errors were added: + ER_BEFORE_DML_VALIDATION_ERROR + ER_PREVENTS_VARIABLE_WITHOUT_RBR + ER_RUN_HOOK_ERROR + ER_TRANSACTION_ROLLBACK_DURING_COMMIT + ER_GROUP_REPLICATION_CONFIGURATION + ER_GROUP_REPLICATION_RUNNING + ER_GROUP_REPLICATION_APPLIER_INIT_ERROR + ER_GROUP_REPLICATION_STOP_APPLIER_THREAD_TIMEOUT + ER_GROUP_REPLICATION_COMMUNICATION_LAYER_SESSION_ERR OR + ER_GROUP_REPLICATION_COMMUNICATION_LAYER_JOIN_ERROR The following Performance Schema tables were added: + replication_group_members + replication_group_member_stats Additionally, the GROUP_NAME variable was added to the replication_connection_status table. The variable transaction_write_set_extraction was added. The following SQL statements were added: + START GROUP_REPLICATION + STOP GROUP_REPLICATION * The following items are deprecated and will be removed in a future MySQL release. Where alternatives are shown, applications should be updated to use them. + The ENCRYPT(), DES_ENCRYPT(), and DES_DECRYPT() functions. Consider using AES_ENCRYPT() and AES_DECRYPT() instead. + The sync_frm system variable. This variable will be removed when .frm files become obsolete. + The global character_set_database and collation_database system variables are deprecated and will be removed in a future version of MySQL. Assigning a value to the session character_set_database and collation_database system variables is deprecated and assignments produce a warning. The session variables will become read only in a future version of MySQL and assignments will produce an error. It will remain possible to access the session variables to determine the database character set and collation for the default database. + Conversion of pre-MySQL 5.1 database names containing special characters to 5.1 format with the addition of a #mysql50# prefix. (For information about these conversions, see Mapping of Identifiers to File Names (http://dev.mysql.com/doc/refman/5.7/en/identifier-mapping.html).) Because such conversions now are deprecated, the --fix-db-names and --fix-table-names options for mysqlcheck and the UPGRADE DATA DIRECTORY NAME clause for the ALTER DATABASE statement are also deprecated. Upgrades are supported only from one major version to another (for example, 5.0 to 5.1, or 5.1 to 5.5), so there should be little remaining need for conversion of older 5.0 database names to current versions of MySQL. As a workaround, upgrade a MySQL 5.0 installation to MySQL 5.1 before upgrading to a more recent release. * For queries that combine ORDER BY with LIMIT, the optimizer may switch to an index that applies to the ORDER BY. In some cases, the decision to switch was based on a heuristic rather than on cost. The optimizer now uniformly makes the decision whether to switch on a cost basis. This should result in better performanance when switching would cause a query to read an entire index or a large part of it to find qualifying rows. References: See also Bug #73837, Bug #19579507, Bug #16522053. * The variable session_track_gtids was added, which enables a tracker that captures GTIDs and appends them to the OK packet. * The plugin and servers tables in the mysql system database now are InnoDB (transactional) tables. Previously, these were MyISAM (nontransactional) tables. In consequence of this change, INSTALL PLUGIN and UNINSTALL PLUGIN are now included among the statements that cause an implicit commit (see Statements That Cause an Implicit Commit (http://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html)). If you upgrade to this release of MySQL from an earlier version, you must run mysql_upgrade (and restart the server) to incorporate these changes into the mysql database. * Refactoring within the optimizer resulted in the following improvements to EXPLAIN output: + Output that showed ORDER BY col_name for implicitly grouped queries no longer does so. + Output for INSERT statements involving partition pruning now shows only the partitions actually used, not all partitions in the table. + Output for UPDATE, INSERT, or DELETE statements no longer shows "Using join buffer" in cases when join buffering was not used. In addition, for killed queries where the previously returned error was "Unknown error", the error is now "Query execution was interrupted". References: See also Bug #70553, Bug #17575172. * Server and client errors are numbered in ranges beginning from 1000 and 2000, respectively. However, server error numbers are approaching 2000, leading to a potential conflict with client error numbers. To deal with this, server error numbers for MySQL 5.7 now have a range beginning with 3000. This is implemented by permitting multiple start-error-number N lines in sql/share/errmsg-utf8.txt, with each such line resetting the numbering to N. * The metadata locking subsystem (see Metadata Locking (http://dev.mysql.com/doc/refman/5.7/en/metadata-locking.html)) has been extended to cover concurrent access to tablespaces. This includes DDL statements that explicitly affect tablespaces: ALTER TABLESPACE, CREATE TABLESPACE, and DROP TABLESPACE. It also includes DDL statements that affect tablespace contents: ALTER TABLE, CREATE INDEX, CREATE TABLE, DROP INDEX, DROP TABLE, LOCK TABLES, RENAME TABLE, and TRUNCATE TABLE. Bugs Fixed * Incompatible Change; InnoDB: File page type validation on data files created prior to MySQL 5.1 could result in a failure due to invalid file page type values in some pages. Prior to MySQL 5.1, InnoDB did not initialize the FIL_PAGE_TYPE field when creating a page. InnoDB only initialized the FIL_PAGE_TYPE field to FILE_PAGE_INDEX when flushing a B-tree page. For other page types, InnoDB left garbage or invalid FIL_PAGE_TYPE values in the FIL_PAGE_TYPE field. Since MySQL 5.1, InnoDB initializes FILE_PAGE_TYPE for every page. Because pre-MySQL 5.1 data files could contain garbage or invalid FILE_PAGE_TYPE values, FILE_PAGE_TYPE must be reset when flushing pages. With this patch, a non-index page that contains FIL_PAGE_INDEX or FIL_PAGE_RTREE in the FIL_PAGE_TYPE field may trigger failures when the page is written to disk. You can address the failure by modifying the data file to replace the invalid FIL_PAGE_TYPE value with FIL_PAGE_UNKNOWN. The error log message provides the tablespace ID and page number of the page with the invalid FIL_PAGE_TYPE value. Before MySQL 5.6, the page size was set to 16384 bytes at compilation time. FIL_PAGE_TYPE is defined as 24. So, if page number P of a tablespace file is affected, the data at byte offset 16384*P+24 should contain the bytes 0x45 0xbf (FIL_PAGE_INDEX) or 0x45 0xbe (FIL_PAGE_RTREE). These bytes should be replaced with 0x00 0x0d (FIL_PAGE_UNKNOWN). If the page contains the strings infimum and supremum at byte offset 99 or 101 (75 or 77 bytes after the start of the FIL_PAGE_TYPE), the page could be an index page, and there may be actual corruption. Warning Do not attempt to modify data files directly unless you know exactly what you are doing and fully understand the implications. (Bug #17345513, Bug #17332603, Bug #19658698) * InnoDB: Opening and closing of intrinsic temporary tables caused a negative table reference count in InnoDB Monitor output. (Bug #20608113) * InnoDB: A duplicate database page corruption error message was removed from buf0buf.cc. (Bug #20605167) * InnoDB: The NAME column of the INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO table was incorrectly declared as 192 characters wide. The correct length is 64 characters. (Bug #20512578) * InnoDB: A full-text phrase search returned an incorrect result. An empty string was handled incorrectly when tokenizing a newly inserted row. (Bug #20465273, Bug #75755) * InnoDB: A workaround introduced in MySQL 5.7.0, in the patch for Bug #14658648, was removed. The workaround allowed MySQL to disable the query cache during crash recovery. Inconsistent data could be produced during crash recovery if MySQL crashed while XA transactions were in a PREPARED state with the query cache enabled. The bug was fixed in MySQL 5.7.2 by the patch for Bug #16593427. (Bug #20461632) * InnoDB: In debug builds, assertion code related to buffer pool resizing caused a significant increase in Valgrind testing time. (Bug #20461123) * InnoDB: The use of change buffering for a spatial index raised an assertion. Change buffer flags should not be set for spatial indexes. (Bug #20452564, Bug #75718) * InnoDB: On ALTER TABLE ... IMPORT TABLESPACE, there was a missing dictionary unlock call on Out-Of-Memory(OOM) that could result in a failure when allocating memory for a .ibd file path string. (Bug #20430105) * InnoDB: An undefined reference error occurred when building MySQL with DWITH_EXTRA_CHARSETS=none. (Bug #20429800) * InnoDB: Optimizing a FULLTEXT index raised an assertion. The last optimized word of a FULLTEXT index is stored in the CONFIG table value column which is defined as CHAR(50). An assertion was raised when the last optimized word was greater than 50 characters in length. The CONFIG table value column is defined as CHAR(200) as of MySQL 5.6.24 and MySQL 5.7.6. If your innodb_ft_max_token_size setting is greater than 50, it is recommended that you recreate existing InnoDB FULLTEXT indexes after upgrading to MySQL 5.6.24 or MySQL 5.7.6 to avoid this issue. FULLTEXT indexes created after upgrading to MySQL 5.6.24 or MySQL 5.7.6 are unaffected. (Bug #20418326) * InnoDB: The innodb_optimize_point_storage option and related internal data types (DATA_POINT and DATA_VAR_POINT) were removed. (Bug #20415831) * InnoDB: fts_optimize_thread() set a NULL exit_event when the server started to shut down, and before fts_optimize_thread was started. (Bug #20389745) * InnoDB: The memcached process_arithmetic_command raised an assertion. The wrong error code was returned for a nonexistent decr key. (Bug #20386835) * InnoDB: The expiration time (exptime) defined using the memcached set command was ignored. InnoDB memcached set the expiration time to an interval value instead of a system time value. (Bug #20381342, Bug #70055) * InnoDB: A NaN value in the GIS-related mbr_join_square function raised an assertion. (Bug #20379160) * InnoDB: The innobase_close_thd function and related wrapper functions and pointers were removed. The functions and pointers were introduced with the InnoDB memcached plugin but never used. (Bug #20369370) * InnoDB: An assertion was raised when the full-text search fts_savepoint_release() function released a named transaction savepoint and all subsequent savepoints. Only the initial savepoint should be released. (Bug #20341916) * InnoDB: Table names were displayed inconsistently in diagnostic output for InnoDB tables that store persistent statistics. (Bug #20330831) * InnoDB: The INFORMATION_SCHEMA.TABLES UPDATE_TIME field, enabled for InnoDB tables in MySQL 5.7.2, was not updated for XA COMMIT of recovered transactions that were in XA PREPARE state. (Bug #20303205) * InnoDB: An incorrect expression was used in /storage/innobase/trx/trx0trx.cc. trx->lock.rec_pool.empty() was used instead of trx->lock.table_pool.empty(). (Bug #20294158, Bug #75373) * InnoDB: In /storage/innobase/handler/ha_innodb.cc, a va_end() was missing in returns that were added in MySQL 5.7.5. (Bug #20285744, Bug #75323) * InnoDB: A full-text search optimization operation raised an assertion. (Bug #20281800) * InnoDB: A tablespace export operation set the purge state to PURGE_STATE_STOP, but the purge thread did not check the purge state until the current purge operation was completed. In the case of a large history list, the tablespace export operation was delayed, waiting for the current purge operation to finish. The purge state is now checked with every purge batch. (Bug #20266847, Bug #75298) * InnoDB: When a page is read from disk, there is a check for pending insert buffer entries which involves acquiring a latch on the insert buffer page. If pending entries are found, they are merged. Because the change buffer is only applicable to B-tree secondary leaf pages in non-temporary tablespaces, insert buffer merge is not necessary for all page types. Using page_type, page_level, and tablespace type information from the page that is read from disk, insert buffer merge is now skipped for non-applicable page types. (Bug #20220909) * InnoDB: The name of the internal pseudo-tablespace that is created for the InnoDB redo log was changed from ib_logfile101 to innodb_redo_log. The new name aligns with other MySQL 5.7 internal tablespace names that use an "innodb_" prefix. (Bug #20204978) * InnoDB: An ALTER TABLE ... ADD INDEX operation raised an assertion due to assertion code that did not allow an online index status of ONLINE_INDEX_ABORTED_DROPPED. The assertion code was relaxed. (Bug #20198726) * InnoDB: Attempting to access the table name for a table that was NULL due to a prior inconsistency caused a crash in innobase_update_foreign_cache() when printing an error. (Bug #20146176) * InnoDB: An error occurred when the push_warning_printf function was invoked during server recovery. This function was previously used to print a warning message to the client. Also, current_thd was NULL when the server was restarted. (Bug #20144839) * InnoDB: The last flushing loop on shutdown did not call buf_flush_wait_LRU_batch_end(), resulting in an assertion failure. (Bug #20137435) * InnoDB: The dict_index_t::auto_gen_clust_index flag, which was used inconsistently and redundant, was removed. (Bug #20136192) * InnoDB: A memory access violation in fts_optimize_thread caused the server to halt. A table was freed but not removed from the full-text search optimize queue. (Bug #20125560) * InnoDB: An assertion was raised while updating statistics for referenced tables after a cascade update. (Bug #20125466) * InnoDB: A crash occurred in btr_cur_latch_leaves while performing a load operation. Checking the page state without latching the page caused an inconsistency. The page state should only be checked after the page is latched. (Bug #20111105, Bug #74596) * InnoDB: The INNODB_METRICS adaptive_hash_searches_btree counter failed to report counter data. (Bug #20080942, Bug #74511) * InnoDB: Due to a regression introduced in MySQL 5.6.20, mysqld stop did not stop the mysqld server process while the InnoDB memcached plugin was active. (Bug #20078646, Bug #74956) References: This bug is a regression of Bug #18409840. * InnoDB: The commit_node member from the tab_node_t and ind_node_t query graph objects, used during table and index creation, were removed. The commit_node member was initialized but never used. Unused TABLE_COMMIT_WORK and INDEX_COMMIT_WORK execution steps were also removed. (Bug #20060218) * InnoDB: An ALTER TABLE ... RENAME failure on a table with a FULLTEXT index raised an assertion. (Bug #20043707) * InnoDB: A duplicate key error encountered during a REPLACE operation on a temporary table raised an assertion. (Bug #20040791) * InnoDB: An ALTER TABLE operation that changed the name of a foreign key column resulted in a failure when reloading the foreign key constraint. The previous column name remained in the data dictionary cache instead of being evicted. (Bug #20031243) * InnoDB: ALTER TABLE failed to check if the table is corrupted. An ALTER TABLE operation that affects InnoDB metadata should be refused if the clustered index is corrupted or the table is marked as corrupted. An ALTER TABLE operation should also be refused if the table is not rebuilt and a corrupted secondary index would remain after the ALTER TABLE operation. (Bug #20015132, Bug #74810) * InnoDB: On Windows, renaming a FULLTEXT search file name raised an assertion. (Bug #20001827) * InnoDB: A row update operation raised an assertion in row_upd_sec_index_entry(). In row_merge_read_clustered_index(), the cached spatial index was not inserted prior to the mini-transaction commit. Once the mini-transaction was committed, the clustered index page was updated or freed, resulting in the primary key fields for cached spatial index entries pointing to invalid addresses. (Bug #19999469) * InnoDB: An assertion was raised in the btr_cur_search_to_nth_level function. Both shared locks (s-locks) and shared-exclusive locks (sx-locks) should be permitted for all latch modes. (Bug #19984494) * InnoDB: An ALTER TABLE operation on a table with a FULLTEXT index raised an assertion. The table was already present in the cache and the FULLTEXT indexes were already initialized. When the table was reloaded, the FULLTEXT indexes were initialized again, causing the assertion. (Bug #19978288) * InnoDB: An UPDATE operation on a compressed temporary table raised an assertion. Shared temporary tablespace attributes were used when extending the tablespace for a compressed temporary table. (Bug #19976331) * InnoDB: Error messages regarding a size limitation on BLOB or TEXT data inserted in a single transaction were revised. (Bug #19975322) * InnoDB: Server logs reported a vector subscript out of range error. (Bug #19955501) * InnoDB: CHECK TABLE failed to check if the table is in a corrupt state before performing validation, resulting in an assertion. (Bug #19954054) * InnoDB: To avoid I/O on tablespaces that are rarely written to, the fsp_get_available_space_in_free_extents function now accesses metadata from cached fields instead of the tablespace header page in the buffer pool. This patch also includes the following optimizations: + To avoid lookups, fsp_fill_free_list() and some other functions now take a fil_space_t pointer instead of a numeric tablespace identifier. + The fil_extend_space_to_desired_size function was renamed to fil_space_extend and its API was simplified. + A new method, undo::Truncate::was_tablespace_truncated, was added to avoid a consistency check before flushing of truncated undo tablespace files. (Bug #19949683) * InnoDB: A failed DROP TABLE operation could leave a table in an inconsistent state without marking the table as corrupted. (Bug #19946781, Bug #74676) * InnoDB: A wrapper class was added to improve printing of quoted SQL identifiers, such as index, column and tablespace names. (Bug #19933607) * InnoDB: An ALTER TABLE operation raised an assertion. When a foreign key object was removed from the dictionary cache, an incorrect foreign key object was removed from the rb-tree. (Bug #19908343) References: This bug is a regression of Bug #18806829. * InnoDB: DML operations on a table with full-text search indexes raised an invalid assertion. (Bug #19905246) References: This bug is a regression of Bug #19314480. * InnoDB: A missing DBUG_RETURN() in ha_innobase::update_row raised an assertion. (Bug #19904800) * InnoDB: In debug builds, setting the innodb_limit_optimistic_insert_debug debug configuration option to 1 caused an infinite B-tree page split. (Bug #19904003, Bug #74605) * InnoDB: An ALTER TABLE ... DROP PRIMARY KEY, ADD PRIMARY KEY operation that changed the prefix length of the primary key field raised an assertion in the bulk insert code. (Bug #19896922) * InnoDB: Some InnoDB diagnostic output to stderr included unnecessary line breaks and lines without a preceding timestamp. Output from multiple threads could become interleaved due to messages being written out in several non-atomic steps. (Bug #19895222) * InnoDB: The innodb_create_intrinsic option, introduced in MySQL 5.7.5, was removed. (Bug #19893327) * InnoDB: As of MySQL 5.7.5, MySQL builds depend on atomic memory access primitives being present on the target platform. To simplify the code, HAVE_ATOMIC_BUILTINS was removed from the InnoDB source in MySQL 5.7.6. InnoDB now depends on Microsoft atomics on Windows, and on GCC-style atomics on other platforms. (Bug #19856411) * InnoDB: A severe error occurred during the log apply phase of an online ALTER TABLE operation that was converting a table with a UTF-8 charset to ROW_FORMAT=REDUNDANT. (Bug #19843246) * InnoDB: A multiple-table delete operation caused the server to halt. (Bug #19815702) * InnoDB: A buffer pool dump referred to a non-existing tablespace ID. (Bug #19814155) References: This bug is a regression of Bug #19149177. * InnoDB: The logic used to select native AIO on Windows was simplified. All Windows versions supported by MySQL 5.7 now support native AIO. The logic required to handle older Windows versions that do not support native AIO was no longer necessary. (Bug #19803939) * InnoDB: In debug builds, buf_block_align() could be called from debug assertion code while the buffer pool is being resized, resulting in a race condition. (Bug #19803497) * InnoDB: A FLUSH TABLES operation raised an assertion. (Bug #19803418) * InnoDB: The dict_boot() function did not set the maximum length of columns used for index fields, resulting in dict_index_node_ptr_max_size() returning incorrect values. (Bug #19791849) * InnoDB: When dummy tables are created, the autoinc_mutex member of the of the dict_table_t object was created unnecessarily. Similarly, the zip_pad.mutex object of dict_index_t object was created unnecessarily for dummy indexes. To avoid unnecessary mutex contention, autoinc_mutex and zip_pad.mutex objects are now allocated and initialized on the first lock attempt. (Bug #19788198, Bug #73361) * InnoDB: log_sys->mutex was not held when reading the fil_space_t::max_lsn field, causing a race condition. (Bug #19729855) References: This bug is a regression of Bug #18645050. * InnoDB: btr_insert_into_right_sibling() could delete node pointers at the parent page. To avoid latch order violations and deadlocks with other threads, lock intention is now checked for leaf pages as well as upper non-leaf pages. (Bug #19729316) * InnoDB: InnoDB performed unnecessary table lookups in the change buffer during tablespace export operations. (Bug #19724300) * InnoDB: The fil_tablespace_deleted_or_being_deleted_in_mem() function, added in MySQL 4.1, was longer necessary and has been removed. There is a fallback check in fil_io() that returns DB_TABLESPACE_DELETED. (Bug #19719727) * InnoDB: To ease future development, the ha_innobase::create function was refactored. (Bug #19718568) * InnoDB: Redundant conditional branching and a redundant a check for srv_read_only_mode were removed from ha_innobase::create(). Redundant conditional branching and an unused local variable were removed from ha_innobase::delete_table(). (Bug #19712822) * InnoDB: Unused code related to UTF-8 handling for InnoDB FULLTEXT indexes was removed. (Bug #19712059) * InnoDB: The fil_index_tree_is_freed() function, which returned a false negative when the index root page was reallocated, was replaced by improved logic for freeing index trees. This patch also removed a redundant parameter that was passed to dict_drop_index_tree(). (Bug #19710798) * InnoDB: The InnoDB change buffer tree, which was created inside the InnoDB data dictionary cache unnecessarily, is now created directly, bypassing the cache. This patch also removes the DICT_UNIVERSAL flag, which was set in in connection with DICT_IBUF. Neither of the flags is used for persistent data structures, which makes DICT_UNIVERSAL unnecessary. (Bug #19710650) * InnoDB: The fil_space_t::tablespace_version field, introduced to keep track of ALTER TABLE...DISCARD TABLESPACE followed by ALTER TABLE IMPORT TABLESPACE operations, was removed. The tablespace_version field ensured that a change buffer merge would not occur for old buffered entries while a tablespace with the same space_id was imported. The field was redundant and no longer required. (Bug #19710564) * InnoDB: Removed unused code related to index name lookup, and replaced a function that permitted duplicate index names. (Bug #19710348) * InnoDB: Column and index names were unnecessarily escaped in InnoDB diagnostic messages and interfaces. This patch also adds a new function, innobase_quote_identifier, for quoting FOREIGN KEY constraints and column names in SHOW CREATE TABLE output. (Bug #19704286) * InnoDB: When using the MySQL thread pool, connections encountered long semaphore waits during load testing. (Bug #19703758, Bug #19887285) * InnoDB: Since the introduction of fast index creation in MySQL 5.1, index objects have been added to the SYS_INDEXES internal data dictionary table before being committed. Uncommitted entries were identified by a prefix (defined as TEMP_INDEX_PREFIX). TEMP_INDEX_PREFIX was also used in the InnoDB data dictionary cache, resulting in complications when displaying or comparing index names. To address this problem, a new dict_index_t::uncommitted flag was introduced along with accessor methods is_committed() and set_committed(). Before this change, some InnoDB INFORMATION_SCHEMA tables displayed uncommitted index names with a preceding question mark. The question mark prefix is now omitted. (Bug #19702328) * InnoDB: InnoDB displayed tables names inconsistently in diagnostic messages. Some messages displayed table names using an internal representation while other messages displayed table names in a translated form. (Bug #19694618) * InnoDB: For FULLTEXT indexes, a lookup for the FTS_DOC_ID_INDEX was performed during DML operations. To avoid the costly lookups, a pointer to FTS_DOC_ID_INDEX is now cached at DDL time. (Bug #19693488) * InnoDB: To simplify code, the is_redo_skipped flag, introduced in MySQL 5.7.5 with the CREATE INDEX bulk load feature, was removed. The flag caused redo logging for page allocation to be skipped. Redo logs are now generated for page allocation, even when creating a new tablespace. (Bug #19693192) * InnoDB: An MLOG_FILE_NAME redo log record, which provides the information necessary to identify tablespace files that changed since the last checkpoint, were emitted on log checkpoint even though there were no changes to tablespace files. If a tablespace file is missing or unreadable on crash recovery, the inconsistency should be ignored if there are no redo logs to apply. For related information, see Tablespace Discovery During Crash Recovery (http://dev.mysql.com/doc/refman/5.7/en/innodb-recovery-tablespace-discovery.html). (Bug #19685095) * InnoDB: An unused parameter, archive_space_id, that was passed and ignored in the log_group_init function, was removed. (Bug #19669129) References: See also Bug #16296837. * InnoDB: In read-only mode, a GIS data search using the MBRCONTAINS() function raised an assertion. (Bug #19664678) * InnoDB: Page reservation for the index tree was not performed before calling btr_page_alloc(). (Bug #19660261) * InnoDB: Building MySQL 5.7.5 on a Debian 7 32-bit system with GCC resulted in a MySQL server failure. The problem was due to a GCC bug (Debian Bug Report #764220 (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=764220)) that causes incorrect code to be emitted when a function that takes a pointer or reference as a parameter is declared as attribute((const)) or attribute((pure)). The problem is known to occur on Debian Wheezy 7.6 x86 with g++-4.6 (Debian 4.6.3-14) 4.6.3 or g++ (Debian 4.7.2-5) 4.7.2, and on Debian Jessie/Sid amd64 with gcc (Debian 4.9.1-15) 4.9.1 or g++ (Debian 4.9.1-15) 4.9.1. The bug may exist in other gcc-4.x versions as well any GCC version that accepts the attribute((const)) or attribute((pure)) code. To avoid the bug, problematic attributes have been removed from MySQL functions that take pointers or references that they are dereferencing. This patch also removed instances of attribute((nonnull)), which do not always generate a warning when NULL is passed, and may not emit code for handling the NULL case. (Bug #19632776) * InnoDB: A rollback operation raised an assertion in lock_rec_free_all_from_discard_page_low() due to stale records locks on empty pages that were being removed from an index tree. (Bug #19628598) * InnoDB: The modify_clock value is now stored to allow the buf_page_optimistic_get() function, used to get optimistic access to a database page, to succeed in most cases. An unnecessary PAGE_HEAP_TOP (record heap top pointer) and FIL_PAGE_TYPE (file page type) set was removed from btr0bulk.cc. (Bug #19611367) * InnoDB: The dict_set_corrupted() function attempted to update the clustered index of the SYS_INDEXES data dictionary table incorrectly. (Bug #19584379) * InnoDB: Compiling with the new Clang 3.5 release resulted in a number of InnoDB compilation warnings. (Bug #19579603) * InnoDB: Removed unused API definitions from api0api.h and api0api.cc source files. (Bug #19579149) * InnoDB: The DICT_TF2_USE_FILE_PER_TABLE flag should be tested by the dict_table_use_file_per_table function to verify that the table uses a file-per-table tablespace. (Bug #19578222) * InnoDB: With innodb_create_intrinsic enabled, temporary tables created during ALTER TABLE operations were marked as intrinsic temporary tables, resulting in an assertion. Enabling innodb_create_intrinsic should only affect CREATE TABLE and CREATE INDEX operations. (Bug #19565749) * InnoDB: Valgrind testing returned a Conditional jump or move depends on uninitialised value(s) at buf_page_is_zeroes error. The unread portion of the page contained garbage values. (Bug #19536534) * InnoDB: An INSERT operation on a spatial index resulted in a crash in split_rtree_node(). The mbr_join_square function failed to check for infinity and NaN (not a number) values. (Bug #19533996, Bug #73776) * InnoDB: With change buffering enabled, a buffered sequence of operations that should not have been buffered resulted in an Unable to purge a record error. (Bug #19528825, Bug #73767) * InnoDB: Pages with a checksum value of zero were incorrectly treated as empty pages. A page should only be considered empty if its checksum value and LSN field values are zero. (Bug #19500258, Bug #73689) References: This bug is a regression of Bug #17335427. * InnoDB: The C-style function, ib_logf(), used for writing log messages, has been removed in favor of C++ style classes (ib::info, ib::warn, ib::error, and ib::fatal). (Bug #19495721) * InnoDB: The InnoDB data dictionary was not updated when a ALTER TABLE ... CHANGE COLUMN operation changed the case of the column name. (Bug #19465984) * InnoDB: InnoDB returned a table not found error for a missing tablespace file. (Bug #19419026) * InnoDB: InnoDB shutdown stalled due to a user thread that was in a waiting state. (Bug #19386426) * InnoDB: After upgrading to MySQL 5.7, an ALTER TABLE operation on a tables created in MySQL 5.6 and containing GIS data would cause a serious error. (Bug #19368904) * InnoDB: After an online ALTER TABLE ... ADD INDEX operation, crash recovery failed due to a regression introduced with the CREATE INDEX bulk insert enhancement introduced in MySQL 5.7.5. (Bug #19316315, Bug #19308426) * InnoDB: On non-Windows platforms, os-file_pread and os_file_pwrite functions return -1 when an error occurs. This value was printed in an error message as the number of bytes read or written. Instead of printing the -1 value in the error message, a separate error message indicating a system call failure is now printed. Thanks to David Bennett for the patch. (Bug #19315210, Bug #73365) * InnoDB: A memory access violation caused fts_optimize_thread and mysqld to terminate. (Bug #19314480) * InnoDB: A procedure, called from a function to perform an operation on a temporary table, caused the server to halt. (Bug #19306524) * InnoDB: Attempting to shut down the server after starting the server with innodb_force_recovery=6 resulted in a hang. (Bug #19265668, Bug #73341) * InnoDB: The fil_inc_pending_ops() and fil_decr_pending_ops() functions have been replaced by fil_space_acquire() and fil_space_release(). This change removes a space ID lookup. The new functions are implemented in buf_load(), fsp_get_available_space_in_free_extents(), and lock_rec_block_validate(), which is a debug function. The patch for this bug also removed fil_tablespace_is_being_deleted(), which was an orphaned function. (Bug #19149177) * InnoDB: If the log sequence number (LSN) has not increased, the log_write_up_to() function should not initiate redo log writing. (Bug #19068569, Bug #73109) * InnoDB: A CREATE TABLE operation failed with a table is full error when running a MySQL server with innodb_flush_method=O_DIRECT on a Linux system with an ext3 file system. The error was due to an internal posix_fallocate() failure that occurs when O_DIRECT is specified. To allow the file operation to proceed, the internal posix_fallocate() failure now prints an error message to the error log. (Bug #18903979) * InnoDB: As part of a cleanup of InnoDB INSERT code paths, assertion code was added to ha_innobase::end_stmt() and other places at the start of DDL. Debug code was added to row_log_table_apply(). Assertion code was added to intrinsic temporary table-related functions, and unused parameters were removed. (Bug #18894337) References: This bug is a regression of Bug #11758237. * InnoDB: Enhancements introduced in MySQL 5.7.5 related to tablespace discovery during crash recovery caused a performance regression. (Bug #18645050) * InnoDB: If a database is named using uppercase letters on a MySQL server with lower_case_table_names=2 (which is default on Mac OS X), InnoDB stores the database name as specified in the InnoDB internal system table (SYS_TABLES) but stores the name in lowercase on disk. During crash recovery, the case mismatch resulted in a conflict that marked the tablespace .ibd file as missing. The patch for this bug converts database names to lowercase on crash recovery. (Bug #18412598, Bug #72043) * InnoDB: A full-text query expansion search using a search phrase plus wildcard operator resulted in InnoDB: Did not find word ... for query expansion search errors. This patch also addressed an issue related to full-text indexes being "unsynced" by DDL rollback. (Bug #18229097, Bug #19831736) References: This bug is a regression of Bug #17373659. * InnoDB: In debug builds, the InnoDB Lock Monitor asserted after a DROP TABLE operation, and the InnoDB Monitor encountered an assertion in buf_page_get_gen. (Bug #18062698, Bug #71343, Bug #18173184, Bug #68116) * InnoDB: A CREATE TABLE operation that failed when innodb_strict_mode was enabled succeeded without printing a warning when innodb_strict_mode was disabled. (Bug #17852083) * InnoDB: buf_LRU_free_page() would call buf_page_set_sticky(bpage), needlessly making removed pages sticky in some cases. (Bug #17407091, Bug #70228) * InnoDB: A slow shutdown (innodb_fast_shutdown=0) after crash recovery raised an assertion. Slow shutdown did not wait for background rollback operations to finish before proceeding. (Bug #16862810) * InnoDB: The criteria used to define a small tablespace was inconsistent. Thanks to Laurynas Biveinis for the patch. (Bug #16696906, Bug #68970) * InnoDB: For explicit cache coherency, a write barrier was added to the head of os_thread_create_func(), and a read barrier was added to assertion code in rw_lock_free_func(). (Bug #13364876, Bug #62692, Bug #18870970, Bug #72809) * InnoDB: A memcached append operation on an INT column caused a segmentation fault. append operations on INT columns are not supported and are now blocked. (Bug #75200, Bug #20209756) * InnoDB: The integer column value was handled incorrectly for the memcached incr and decr commands. (Bug #69415, Bug #20083106, Bug #74874, Bug #20044123)
Subject
Views
Written By
Posted
Sorry, you can't reply to this topic. It has been closed.
Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.