[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