Web lists-archives.com

MySQL Community Server 5.7.6 has been released (part 2/3)




[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)

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/mysql