[This is part 3 of the announcement]
Bugs Fixed
* Important Change: The empty string value is now accepted
as a key when used with JSON functions such as
JSON_EXTRACT(). In such cases, it must be quoted. (Bug
#79643, Bug #22366102)
* MySQL Cluster: Previously, the mysql.ndb_binlog_index
table was created even if the server was built without
NDB. Now the table is created only if the server is built
with NDB. (Bug #22874872)
* InnoDB: Unnecessary checks were removed from the
ut_cpuid() function which is used to fetch information
about the CPU. (Bug #24405292)
* InnoDB: An asynchronous read operation on a deleted
tablespace raised an error. (Bug #24388498)
* InnoDB: dict_col_t accessors were added to the InnoDB
code. (Bug #24363566)
* InnoDB: dict_col functions in the InnoDB code were
replaced by accessors. (Bug #24361098)
* InnoDB: dict_index_t functions in the InnoDB code were
replaced by accessors. (Bug #24361023)
* InnoDB: Unnecessary code that checked for and released
reserved adaptive hash index search latches was removed.
(Bug #24300175)
* InnoDB: A system tablespace data file size greater than
4G on a 32-bit operating system could result in an
overflow condition. (Bug #23753625)
* InnoDB: Internal methods for accessing table object data
were added to to dict_table_t. (Bug #23748128)
* InnoDB: An unspecified block size resulted in an empty
INFORMATION_SCHEMA.TABLESPACES table on Windows NTFS with
a cluster page size greater than or equal to 8K. (Bug
#23598872)
* InnoDB: The restriction that required the first undo
tablespace to use space_id 1 was removed to avoid
space_id conflicts with existing tablespaces during
upgrade. The first undo tablespace can now use a space_id
other than 1. space_id values for undo tablespaces are
still assigned in a consecutive sequence. (Bug #23517560)
* InnoDB: Internal accessor functions for iterating the
indexes of a table were replaced with accessor methods.
Dead code was removed. (Bug #23336108)
* InnoDB: The mysql.innodb_index_stats and
mysql.innodb_table_stats table definitions, which were
previously created by an SQL script, are now hard-coded.
As a result, the dict_table_schema_check function is
longer required and was removed. (Bug #23336079)
* InnoDB: The ut_snprint function was replaced by the C++11
snprintf function. (Bug #23329353)
* InnoDB: For consistency, instances of ulint in InnoDB
code were replaced with space_id_t and page_no_t data
types. (Bug #23297169)
* InnoDB: Use of boost::atomic in InnoDB code was replaced
with std::atomic. (Bug #23280649)
* InnoDB: MySQL binaries were not built with the NUMA
feature. (Bug #23259754)
* InnoDB: References to UNIV_NONINL and
UNIV_MUST_NOT_INLINE were removed. The fut0fut.cc and
ut0byte.cc files, which were only necessary when
UNIV_NONINL was defined, were also removed. (Bug
#23150562)
* InnoDB: The mutex_own() mapping caused warnings when
compiling with Clang or newer GCC compilers. (Bug
#23090278)
* InnoDB: Compilation of InnoDB with Visual Studio 2015
Update 2 returned warnings. (Bug #23056963)
* InnoDB: Querying Performance Schema for InnoDB memory
allocation event data incorrectly reported values of 0.
(Bug #23020280)
* InnoDB: DBUG_OFF compile-time flags were replaced by
UNIV_DEBUG flags. To improve error log output,
ut_dbg_assertion_failed() now uses sql_print_error() to
display the file name, line number, and message in a
single line. The thread ID is displayed in a subsequent
line. (Bug #22996442, Bug #23028144)
* InnoDB: SHOW ENGINE INNODB STATUS output displayed
negative spin rounds per wait values.
Thanks to Laurynas Biveinis for the patch. (Bug
#22844987, Bug #79703)
* InnoDB: The innodb_disable_resize_buffer_pool_debug
option was removed. The patch for this change also
removed a code variable and simplified the
buf_pool_resize() function. (Bug #22755053)
* InnoDB: After a successful ALTER TABLE ... ALGORITHM=COPY
operation, an assertion was raised while building a
previous version of a clustered index record. (Bug
#22707367)
* InnoDB: A DML operation that updated a counter in a table
with a virtual index raised on assertion in
row_parse_int(). (Bug #22650195)
* InnoDB: The InnoDB memcached plugin would not load when
compiled with libevent 2.0. (Bug #22646919)
* InnoDB: Unused calculations for integer-based rec_per_key
values were removed from InnoDB. Integer-based
rec_per_key information was replaced by floating point
index statistics in an earlier release. (Bug #22625348)
* InnoDB: On slow shutdown, purge thread shutdown was
initiated before the background rollback thread exited,
resulting in an assertion failure. (Bug #22561332)
* InnoDB: Blocks were lost in
row_vers_old_has_index_entry() due to unfreed heaps. (Bug
#22543834, Bug #79973)
* InnoDB: A transportable tablespace debug test raised an
assertion that was due to a race condition. (Bug
#22453668)
* InnoDB: The server failed to start due to missing undo
tablespaces. (Bug #22452992)
* InnoDB: InnoDB recovery asserted while attempting to
close an undo tablespace due to buffered undo tablespace
changes introduced by the recovery process. (Bug
#22361764)
* InnoDB: Reallocation of memcached-referenced memory
raised an assertion. (Bug #22304250, Bug #79500)
* InnoDB: Building InnoDB with C++11 returned "register"
deprecation warnings. Handling of "register" deprecation
warnings remained in the code after the deprecated
"register" keyword was removed. Also, an unused
declaration of yyset_extra() was removed. (Bug #22292704)
* InnoDB: SHOW CREATE TABLE output for partitioned tables
did not accurately display tablespace assignment
information for table partitions. (Bug #22245554)
* InnoDB: An ALTER TABLE...TRUNCATE PARTITION operation
ignored the table's KEY_BLOCK_SIZE attribute and used the
default value instead, which is half of the
innodb_page_size value. (Bug #22186558, Bug #79223)
* InnoDB: Memory leaks in innochecksum were corrected. (Bug
#22179518)
* InnoDB: A SPACE_ID column was added to the
INNODB_CACHED_INDEXES table. The INDEX_ID value is no
longer a global unique identifier. (Bug #22172026)
* InnoDB: Creating a table with a full-text index and a
foreign key constraint failed when foreign_key_checks was
disabled. (Bug #22094601, Bug #78955)
References: This issue is a regression of: Bug #16845421.
* InnoDB: The ha_innobase::m_primary_key field was removed.
It was redundant. A boolean predicate,
TABLE_SHARE::is_missing_primary_key(), was added. (Bug
#21928734, Bug #78662)
* InnoDB: A buffer pool load operation that attempted to
load an uninitialized page caused a Valgrind failure.
(Bug #21747906)
* InnoDB: Unused functions introduced by the InnoDB
memcached plugin were removed. (Bug #21625760)
* InnoDB: An internal global variable used by the
innodb_buffer_pool_size configuration option was removed.
(Bug #21512749)
* InnoDB: An InnoDB page cleaner thread asserted during a
buffer pool resize operation. (Bug #21473497)
* InnoDB: Log buffer contention was reduced with the
addition of a second buffer, allowing for concurrent log
buffer writing and flushing. A new mutex was added to
protect log buffer flushing.
Thanks to Zhai Weixiang for the patch. (Bug #21352937,
Bug #77094)
* InnoDB: Unused InnoDB and libsql functions and variables
were removed, and global symbols were converted to static
keywords, where possible. (Bug #21153166, Bug #21141390,
Bug #77146, Bug #21178589)
* InnoDB: The SysTablespace::parse_units() function now
returns the number of pages in a file instead of the
number of megabytes. The SysTablespace::normalize_size()
function was removed. Error messages in
SysTablespace::parse_params() were revised. (Bug
#21040199, Bug #76949)
* InnoDB: For persistent tables, the internal unique
identifier for InnoDB indexes (index_id) now includes a
tablespace identifier (space_id,index_id). This change
makes index identifiers unique at the tablespace level as
well as the InnoDB instance level, and supports future
work related to index identifier allocation. (Bug
#20737524, Bug #76392)
* InnoDB: Code related to innochecksum was cleaned up and
reorganized. Checksum functionality is now located in
buf0checksum.cc. (Bug #20518099)
* InnoDB: __attribute__((nonnull)) was removed from InnoDB
code. The attribute is no longer permitted by InnoDB
coding guidelines. (Bug #20468234)
* InnoDB: A new struct was added to provide a logical
interface for handling and manipulating external BLOB
field references. (Bug #18195972)
* InnoDB: TRUNCATE TABLE is now mapped to DROP TABLE and
CREATE TABLE. This change has the following implications:
+ On systems with a large buffer pool and
innodb_adaptive_hash_index enabled, TRUNCATE TABLE
operations previously caused a temporary drop in
system performance due to an LRU scan that occurred
when removing the table's adaptive hash index
entries. The remapping of TRUNCATE TABLE to DROP
TABLE and CREATE TABLE avoids the problematic LRU
scan.
+ TRUNCATE TABLE is temporarily non-atomic. A server
exit during a TRUNCATE TABLE operation can result in
a dropped table and orphaned foreign key constraints
in the InnoDB SYS_FOREIGN and SYS_FOREIGN_COLS
system tables.
+ The InnoDB memcached plugin flush_all command
invokes DELETE instead of TRUNCATE TABLE. DELETE has
a higher overhead cost than FLUSH TABLE since it
involves undo-logging, delete-marking, and
eventually purging each deleted row.
+ A log checkpoint that occurred for internal truncate
table operations on file-per-table tablespaces was
replaced by a log flush.
(Bug #16834993, Bug #68184, Bug #16207919)
* InnoDB: InnoDB wasted most pages in extents used for
fragment pages. (Bug #16204823, Bug #67963)
* Partitioning: In some cases, an issue with partition
pruning being attempted a second time during optimization
after all partitions had already been pruned at parsing
time led to an assert. (Bug #23194259)
* Replication: In Slave_worker::write_info(), DBUG_ENTER()
had "Master_info::write_info" as its argument instead of
"Slave_worker::write_info". This fix corrects the
argument. Thanks to Stewart Smith for the patch. (Bug
#21658067, Bug #78133)
* The client library failed to build on Solaris using the
Cstd library. (Bug #24353920)
* MySQL now uses readdir() rather than readdir_r(). The
latter has been deprecated since glibc 2.24 and causes
debug builds of MySQL to fail. (Bug #23708395)
* On OS X, stack trace demangling now occurs for builds
compiled using Clang, just as for GCC. (Bug #23606094)
* For segmentation faults on FreeBSD, the server did not
generate a stack trace. (Bug #23575445, Bug #81827)
* CHECKSUM TABLE calculated the checksums for JSON values
using the memory addresses of the values rather than the
values themselves, which made the checksum vary. Now in
such cases the calculation is based on the actual JSON
value, and not on that value's address. (Bug #23535703)
* libevent was built on OS X even when not needed. (Bug
#23228287)
* A function that returns a JSON value could cause a server
exit if called as part of a CASE statement in a stored
procedure. (Bug #23212765)
* Passing NULL to a stored procedure expecting a JSON
parameter led to an assertion failure in debug builds.
(Bug #23209914)
* Previously, different values were reported by SHOW ENGINE
PERFORMANCE_SCHEMA STATUS and SELECT * FROM
performance_schema.memory_summary_global_by_event_name
for total memory used in the Performance Schema. The
memory for scalable buffer pages, instrumented as
memory/performance_schema/scalable_buffer, was missing
from the SHOW ENGINE STATUS output. That statement now
includes the missing memory, displayed as
(pfs_buffer_scalable_container).memory. (Bug #23104498)
* The -fexpensive-optimizations option to GCC caused ARM64
and PowerPC builds to compute floating-point operations
slightly differently from other platforms. This option
was enabled by -O2 and higher optimization levels. The
option now is disabled on platforms negatively affected
by it. (Bug #23046775)
* After a failed administrative operation such as ALTER
TABLE ... OPTIMIZE PARTITION, selecting from the
Performance Schema in lock-tables mode could hang. (Bug
#23044286)
* In builds with AddressSanitizer enabled, CAST(... AS
BINARY) could cause a server exit. (Bug #22900560)
* Some spatial functions were reported using a different
spatial function name in error messages. (Bug #22883056,
Bug #80627)
* Fixed Valgrind warnings with Clang in optimized mode for
the my_strtod_int() function. (Bug #22839888)
* Precision math operations on values with 64 decimals
could produce a 0 result. (Bug #22828692)
* Geometry import functions that took an SRID parameter
cast it to an unsigned 32-bit integer without warning or
error, so negative values or values larger than unsigned
32-bit integer range were silently converted to a number
within the range. Now, all geometry functions that take
the SRID as a parameter check that it is within unsigned
32-bit integer range and produce an ER_DATA_OUT_OF_RANGE
error if not. This also applies to GeoJSON and GeoHash
functions that previously checked that the parameter was
within range but returned a different error code. (Bug
#22819614)
* Parsing of JSON path arguments failed to distinguish
between a NULL path and one that was syntactically
invalid.
This has been changed so that parsing of these paths now
clearly distinguishes between valid non-NULL paths, NULL
paths, and invalid paths. (Bug #22816576)
* ST_GeomFromGeoJSON() could return an error with valid
arguments. (Bug #22804853)
* For debug builds, an assertion could be raised when the
server created a temporary table to hold JSON objects.
(Bug #22782948)
* For debug builds with STRICT_TRANS_TABLES SQL mode
enabled, an assertion could be raised by INSERT or
REPLACE statements that had made changes that could not
be rolled back and that subsequently generated an
ER_NO_DEFAULT_FOR_FIELD error. (Bug #22635253)
* The optimizer contained a memcpy() call that did not
check for overlapping source and destination. (Bug
#22537196)
* For debug builds, a missing error check on the result of
a subquery that accessed a JSON value could raise an
assertion. (Bug #22522073)
* Preparing a CREATE TABLE ... SELECT statement, then
flushing tables (thus closing the table) and executing
the prepared statement could cause a server exit. (Bug
#22393309)
* A prepared statement that used a parameter in the select
list of a derived table that was part of a join could
cause a server exit. (Bug #22392374, Bug #24380263)
* Re-evaluation of a generated column expression could
cause access to previously freed memory and a server
exit. (Bug #22346120)
* HANDLER read statements that searched an index when the
target index value was not stored into the row buffer
successfully could cause a server exit. (Bug #22321965)
* Improper handling of numeric-to-ZEROFILL conversion for
NULL values could lead to a server exit. (Bug #22281205)
* Using a subquery containing a row constructor to set a
variable in a SET statement could cause a server exit.
(Bug #22276843)
* If the SQL mode did not include ALLOW_INVALID_DATES, a
query that contained invalid_date IN (subquery) and was
handled by subquery materialization could cause a server
exit. (Bug #22262843)
* For the embedded server, the code following the check for
invalid arguments was invoked with missing or incorrect
arguments, which could lead to an improper exit. (Bug
#22262706)
* Queries that executed a JSON function that raised an
error could cause a server exit. (Bug #22253965)
* On OS X, vio_io_wait() used select(), limiting the number
of file descriptors to 1024. Now kqueue event
notification is used instead to avoid this limit. FreeBSD
was changed to use kqueue as well. (Bug #22244911)
* On Windows, setting the global log_syslog system variable
in multiple threads could cause a server exit. (Bug
#22180046)
* Memory leaks could result if stored routine loading
involved temporarily changing the default database and
errors occurred restoring the original default database.
(Bug #22179795)
* CMake configuration was adjusted to check for -Wxxx
compiler options instead of -Wno-xxx because the latter
produce false positives for GCC. (Bug #21881753)
* Views could evaluate user-defined or SQL functions before
evaluating restrictions from the view definition. (Bug
#20933307)
* The return value from an fread() call was not checked.
(Bug #20671150)
* With -DENABLE_DTRACE=ON, CMake did not check whether a
working DTrace installation was present. Now it checks
and aborts if DTrace cannot be found. (Bug #20671056)
* If given a relative path name for the --log-error option,
mysqld could sent stdout and stderr to the wrong
location. (Bug #20609063)
* Evaluation of LEAST() and GREATEST() could use too small
a sort buffer for datetime and string literals, causing
an assertion to be raised. (Bug #20565160)
* The range of error numbers for errors that are new in
MySQL 8.0 has been designated to begin with 3500. (Bug
#20538173)
* Debian packaging was updated not to set the sql_mode
system variable in my.cnf. (Bug #20535729)
* Statements such as INSERT and LOAD DATA that use the
REPLACE or IGNORE keyword to handle duplicate records
could affect subsequent operations. (Bug #20017428)
* CREATE TABLE ... SELECT where non-BIT data was selected
from the source table into a BIT column in the
destination table could cause a server exit. (Bug
#19930894)
* Compilation failed on OS X when MySQL was configured with
-DMYSQL_MAINTAINER_MODE=1 and compiled with clang/Xcode
6.0. (Bug #19694515, Bug #74100)
* For CHANGE MASTER TO statements rewritten to filter the
password before being written to the general query log,
any MASTER_AUTO_POSITION clause was lost. (Bug #19622609)
* Use of the VALUES() function in a SELECT clause could
result in a server exit. (Bug #19601973)
* A potential null-pointer dereference and memory leak in
table-rename code were corrected. (Bug #18194270)
* Using MATCH ... AGAINST to compare a character column and
an aggregate function could cause a server exit. (Bug
#17865492)
* Slightly different values for the number of connections
could be reported in various information sources, such as
the Connections status variable, Performance Schema
threads and global_status tables, and SHOW PROCESSLIST
statement. (Bug #17666696)
* A query with a subquery containing a set operation with
an outer reference might cause a server exit. (Bug
#17270896)
* Using GRANT to change a password for an invalid user
produced an error, but also updated the mysql.user system
table. (Bug #17180985)
* The parser for spatial WKT data accepted numbers such as
0.23 but not .23, the equivalent value without the
leading zero. Now both formats are accepted. (Bug
#17167633)
* Previously, if a client attempted to send connection
attribute key/value pairs that in aggregate had a size
larger than the value of the
performance_schema_session_connect_attrs_size system
variable, the Performance Schema truncated the attribute
data. In addition, the Performance Schema wrote this
message to the error log if the log_warnings system
variable was greater than zero:
[Warning] Connection attributes of length N were truncated
This message was not helpful to a DBA attempting to
determine the problematic client, so several changes have
been made to connection attribute handling:
+ Truncation of connection attributes still occurs for
excessive data, but the log message is more
informative. It includes the number of bytes lost,
the connection identifier, and information about the
client user. The additional information should
enable DBAs to more easily identify clients for
which attribute truncation occurred.
+ When truncation occurs, a _truncated attribute is
added to the session attributes with a value
indicating how many bytes were lost, if the
attribute buffer has sufficient space. This enables
the Performance Schema to expose per-connection
truncation information in the connection attribute
tables.
+ A new status variable,
Performance_schema_session_connect_attrs_longest_see
n, indicates the longest connection attribute buffer
smaller than 64KB seen by the server. If this value
is larger than
performance_schema_session_connect_attrs_size,
attribute truncation has occurred, and DBAs may wish
to increase the latter value, or, alternatively,
investigate which clients are sending large amounts
of attribute data.
For more information, see Performance Schema Connection
Attribute Tables
(http://dev.mysql.com/doc/refman/8.0/en/performance-schema-connection-attribute-tables.html).
(Bug #16576959)
* For abnormal server exit on Windows, the server
previously created a minidump file named module_name.dmp,
where module_name is the name of the server executable
file. To prevent earlier minidump files from being
overwritten, minidump file names now include the process
ID and have the form module_name..piddmp; for example,
mysqld.exe.7296.dmp. (Bug #12779463)
* For queries on INFORMATION_SCHEMA tables, comparisons of
schema and table names could be case sensitive or
insensitive, depending on the characteristics of the
underlying file system and the lower_case_table_names
system variable value. Furthermore, it was ineffective to
provide a COLLATE clause to change the comparison
properties because that clause was ignored. This has been
changed so that COLLATE is no longer ignored and can be
used to obtain the desired comparison properties. (Bug
#11748044, Bug #34921)
* FLOOR(CEIL()) truncated large BIGINT UNSIGNED arguments.
(Bug #80873, Bug #23013359)
* Manipulation of a value returned by the JSON_MERGE()
function using JSON_SET() sometimes produced an invalid
result. (Bug #80787, Bug #22961128)
* ST_AsGeoJSON() failed when geometry arguments were
supplied using user-defined variables. (Bug #80697, Bug
#22912800)
* CAST(expr AS BINARY(N) ) unexpectedly returned NULL for
some valid values of N. (Bug #80630, Bug #22885819)
* If rounding occurred while storing a predicate value, the
range optimizer might not return correct results for the
< and <= operators. (Bug #80244, Bug #22661012)
* For the mf_iocache unit test, add a missing va_end(), fix
a memory leak by calling my_end(), and add a target for
the test. Thanks to Daniel Black for the patch on which
these changes are based. (Bug #80085, Bug #22578670)
* SELECT DISTINCT SUBSTR() could incorrectly discard values
as duplicates for large position or length arguments. The
same issue also affected LEFT() and RIGHT(). (Bug #80047,
Bug #22565155)
* SUBSTRING_INDEX(str, delim, count) did not properly
handle count values larger than 32 bits. (Bug #79978, Bug
#22545429)
* For calls to CONVERT(), literal string arguments could be
modified during execution, producing incorrect results.
(Bug #79924, Bug #22531111)
* REPLACE('a', BINARY 'b', NULL) returned 'a' rather than
NULL. (Bug #79912, Bug #22523836)
* Transaction state tracking now avoids a function that is
not 8-bit safe, for enhanced compatibility with
nonstandard character sets. (Bug #79905, Bug #22523383)
* GREATEST() and LEAST() treated all integer input as
signed. (Bug #79902, Bug #22523685)
* Lines in the general query log were missing a tab between
the timestamp and the thread ID. Thanks to Tsubasa Tanaka
for the patch. (Bug #79868, Bug #22508563)
* Some comparisons between unsigned values and negative
upper limits could return incorrect results (for example,
CAST(100 AS UNSIGNED) BETWEEN 1 AND -1). (Bug #79857, Bug
#22501606)
* The REPEAT() function did not properly handle output from
the SUBSTR() function. (Bug #79695, Bug #22391186)
* The JSON_TYPE() function now shows the type of BIT
literals cast to JSON as BLOB, rather than BIT. (Bug
#79308, Bug #22297987)
* Configuring MySQL with the -DWITH_UBSAN=ON CMake option
produced a server that was not fully functional. (Bug
#79238, Bug #22194071)
* sql_common.h, a header file included in MySQL
distributions, included and was therefore dependent on
hash.h, a header file not included in MySQL
distributions. This resulted in compilation failures. To
eliminate this dependency, sql_common.h was modified to
no longer include hash.h. (Bug #79237, Bug #22187997, Bug
#70672, Bug #17633467)
* Timers used for checking maximum statement execution time
were initialized even when the server was started with
the --help option. If --help is given, this is no longer
done. (Bug #79182, Bug #22172389)
* The optimizer failed when trying to optimize away
expressions of the form IF(true, '2015-01-01',
'2015-01-01') IS NOT NULL. (Bug #79114, Bug #22148586)
* Subtraction of an unsigned decimal could return a
negative value, but with metadata type information of
UNSIGNED BINARY. Subtraction for unsigned decimal
subtraction now is handled the same way as for unsigned
integer: Produce an ER_DATA_OUT_OF_RANGE error if the
result is negative, unless the NO_UNSIGNED_SUBTRACTION
SQL mode is enabled. (Bug #78914, Bug #22083757)
* Handling by the HEX() function of numbers larger than
2^64 was improved. (Bug #78828, Bug #22297983)
References: This issue is a regression of: Bug #9854.
* The client-side plugin deinitialization function
signature was changed from int (*deinit)() to int
(*deinit)(void) to avoid warnings when compiling with
-Wstrict-prototypes. (Bug #78177, Bug #21680094, Bug
#81419, Bug #23282498)
* CREATE TABLE reported an incorrect error if a very long
or incorrect path name was specified for the DATA
DIRECTORY or INDEX DIRECTORY table option. Now
ER_PATH_LENGTH or ER_WRONG_VALUE are reported for those
cases. (Bug #76635, Bug #20857556)
* The server now tries to provide more informative messages
for these error codes: ER_CANT_CREATE_DB,
ER_CANT_CREATE_TABLE, ER_DB_DROP_DELETE,
ER_DB_DROP_RMDIR, ER_ERROR_DURING_COMMIT,
ER_ERROR_DURING_ROLLBACK, ER_GET_ERRNO. (Bug #76298, Bug
#20694494)
* For some instances of failure to prepare an XA
transaction, incomplete transaction cleanup could raise
an assertion. (Bug #75809, Bug #20488921)
* mysqld could attempt to close an invalid socket file
descriptor. Thanks to Zhai Weixiang for the patch. (Bug
#75778, Bug #20504513)
* A statement of the following form converted the table
data to latin1, but also changed the table default
character set to latin1 and ignored the utf8 clause:
ALTER TABLE tbl_name CHARACTER SET utf8, CONVERT TO CHARACTER SET lati
n1;
Thanks to Daniel Black for the patch. (Bug #75320, Bug
#20279241)
* In mysqld.cc, the abort_loop variable was quantified with
volatile, which on some platforms could result in changes
not being seen immediately in threads running on
different cores. Thanks to Stewart Smith for the patch.
(Bug #74846, Bug #20134637)
* Calling a procedure which created a view from a trigger,
or creating a function that called a procedure that
executed RENAME TABLE could, under certain circumstances,
raise an assertion. (Bug #74740, Bug #19988193, Bug
#21198646)
* Timestamps for server-side prepared statements could be
written to the binary log up to a second behind
timestamps for the corresponding nonprepared statements.
(Bug #74550, Bug #19894382)
* For dynamic storage engine plugins, DROP TABLE, TRUNCATE
TABLE, and RENAME TABLE did not work due to incorrectly
determining the engine from the .frm file. (Bug #74277,
Bug #19902868)
* Executed prepared statements are logged with ? parameter
markers replaced by data values. Construction of the
logged string was inefficient and has been improved. (Bug
#73056, Bug #20955496)
* Assignment by a plugin to its thread variables of string
type could leak memory. (Bug #71759, Bug #19917521)
* Grouping with a view could produce an
ER_INVALID_GROUP_FUNC_USE error ("Invalid use of group
function") when selecting from the base table did not.
(Bug #70220, Bug #17406425)
* Test cases that were intended to be storage
engine-agnostic but were actually using a specific engine
were corrected.
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/mysql