Functionality added or changed:
Important Change: Replication: Previously, incident log events were represented as comments in the output from mysqlbinlog, making them effectively silent when playing back the binlog.
(An incident log event represents an incident that could cause the contents of the database to change without that event being recorded in the binary log.)
This meant that, if the SQL were applied to a server, it could potentially lead to the master and the slave having different data. To make it possible to handle incident log events without breaking applications that expect the previous behavior, the nonsense statement RELOAD DATABASE is added to the SQL output for that incident log event, which causes an error.
To use this functionality currently requires hand editing of the dump file and handling of each case on an individual basis by a database administrator before applying the output to a server. (Bug#44442)
The mysqltest program now has a
move_file command for renaming files. This
should be used in test cases rather than invoking an external
command that might be platform specific.
The maximum value for
has been increased from 232 – 1
to 264 – 1 (even on 32-bit
platforms), which enables transactions 4GB and larger to be
performed when binary logging is enabled.
InnoDB adaptive hash latch is released
(if held) for serveral potentially long-running operations. This
improves throughput for other queries if the current query is
removing a temporary table, changing a temporary table from
memory to disk, using
CREATE TABLE ...
SELECT, or performing a
repair on a table used within a transaction.
Security Fix: The server crashed if an account without the proper privileges attempted to create a stored procedure. (Bug#44658)
Security Fix: Four potential format string vulnerabilities were fixed (discovered by the Veracode code analysis). (Bug#44166)
The server can load plugins under the control of startup
options. For example, many storage engines can be built in
pluggable form and loaded when the server starts. In the
stands for a plugin name such as
Previously, plugin options were handled like other boolean options (see Section 22.214.171.124, “Program Option Modifiers”). That is, any of these options enabled the plugin:
And these options disabled the plugin:
However, use of a boolean option for plugin loading did not
provide control over what to do if the plugin failed to start
properly: Should the server exit, or start with the plugin
disabled? The actual behavior has been that the server starts
with the plugin disabled, which can be problematic. For example,
InnoDB fails to start, existing
InnoDB tables become inaccessible, and
attempts to create new
InnoDB tables result
in tables that use the default storage engine unless the
mode has been enabled to cause an error to occur instead.
Now, there is a change in the options used to control plugin loading, such that they have a tristate format:
Do not enable the plugin.
Enable the plugin. If plugin initialization fails, start the
server anyway, but with the plugin disabled. Specifying the
without a value also enables the plugin.
Enable the plugin. If plugin initialization fails, do not start the server. In other words, force the server to run with the plugin or not at all.
FORCE are not case sensitive.
InnoDB have been built as pluggable storage
engines and that you want the server to load them at startup,
subject to these conditions: The server is allowed to run if
CSV initialization fails, but must require
InnoDB initialization succeed. To
accomplish that, use these lines in an option file:
[mysqld] csv=ON innodb=FORCE
This change is incompatible with the previous implementation if
you used options of the form
which should be changed to
is still supported and is the same as
are still supported and are the same as
See also Bug#45336.
DISTINCT on multiple columns or
GROUP BY on multiple columns did not return
correct results with partitioned tables.
See also Bug#41136.
Replication: When using row-based logging, the length of an event for which the field metadata exceeded 255 bytes in size was incorrectly calculated. This could lead to corruption of the binary log, or cause the server to hang. (Bug#42749)
Replication: The warning Statement is not safe to log in statement format, issued in situations when it cannot be determined that a statement or other database event can be written reliably to the binary log using the statement-based format, has been changed to Statement may not be safe to log in statement format. (Bug#42415)
Query_log_event used by replication to
transfer a query to the slave has been refactored.
Query_log_event also stores and sends the
error code resulting from the execution since it, in some cases,
is necessary to execute the statement on the slave as well,
which should result in the same error code. The
Query_log_event constructor previously worked
out for itself the error code using a complex routine, the
result of which was often set aside within the constructor
itself. This was also involved with at least 2 known bugs
relating to invalid errors, and taken as a clear sign that the
constructor was not well-designed and needed to be re-written.
See also Bug#37145.
When stopping and restarting the slave while it was replicating
temporary tables, the slave server could crash or raise an
assertion failure. This was due to the fact that, although
temporary tables were saved between slave thread restarts, the
reference to the thread being used
table->in_use) was not being properly
updated when restarting, continuing to reference the old thread
instead of the new one. This issue affected statement-based
Linker failures with
libmysqld on VC++ 2008
Compiler warnings on Mac OS X were fixed. (Bug#45286)
SELECT query over an
IBMDB2I table using the
cp1250 character set would produce an error
ibmdb2i error 2027: Error converting single-byte sort sequence to UCS-2
GROUP BY on a
InnoDB table joined to other
tables caused a server crash.
When using partitioning with the
storage engine, the engine could report that a valid character
set was not supported.
Running queries on tables with the
storage engine using the
utf8 character would
fail when using the 64-bit version of MySQL.
See also Bug#40974.
Code that optimized a read-only XA transaction failed to reset the XID once the transaction was no longer active. (Bug#44672)
A Valgrind warning related to transaction processing was silenced. (Bug#44664)
Some Perl scripts in AIX packages contained an incorrect path to the perl executable. (Bug#44643)
When creating tables using the
storage engine, the
RCDFMT (record format)
that would be applied to the corresponding files within the IBM
i would be set according to the table name. During whole table
operations, the name could get modified to a value inconsistent
with the table name. In addition, the record format would be
inconsistent compared to the file content. The
IBMDB2I storage engine now adds an explicit
RCDFMT clause to the
TABLE statement passed down to the DB2 storage engine
GROUP BY expressions could lead to
mismatches between compile-time and runtime calculations and
cause a server crash.
Lettercase conversion in multibyte
sjis character sequences could produce
InnoDB was missing
DB_ROLL_PTR information in Table Monitor
Trying to use an unsupported character set on an
IBMDB2I table would produce DB2 error 2501 or
2511. The error has been updated to produce Error 2504
(Character set is unsupported).
utf8 collations, attempts to
store values too long for a column could cause a server crash.
Invalidation of query cache entries due to table modifications could cause threads to hang inside the query cache with state “freeing items”. (Bug#43758)
Multiple-table updates for
could produce unexpected results.
If the client lost the connection to the MySQL server after
mysql_stmt_prepare(), the first
returned an error (as expected) but consecutive calls to
mysql_stmt_close() crashed the
DELETE statements with
var was a global system variable with
NULL value, the server could crash.
Builds linked against OpenSSL had a memory leak in association with use of X509 certificates. (Bug#42158)
There was a race condition when changing
runtime from zero to nonzero or from nonzero to zero. Now this
variable cannot be changed at runtime from zero to nonzero or
vice versa. The value can still be changed from one nonzero
value to another.
See also Bug#45749.
A crash occurred due to a race condition between the merge table
00000001403C452F mysqld.exe!memcpy()[memcpy.asm:151] 00000001402A275F mysqld.exe!ha_myisammrg::info()[ha_myisammrg.cc:854] 00000001402A2471 mysqld.exe!ha_myisammrg::attach_children()[ha_myisammrg.cc:488] 00000001402A2788 mysqld.exe!ha_myisammrg::extra()[ha_myisammrg.cc:863] 000000014015FC5D mysqld.exe!attach_merge_children()[sql_base.cc:4135] 000000014016A4C1 mysqld.exe!open_tables()[sql_base.cc:4697] 000000014016A898 mysqld.exe!open_and_lock_tables_derived()[sql_base.cc:4956] 000000014018BB54 mysqld.exe!mysql_insert()[sql_insert.cc:613] 000000014019EDD3 mysqld.exe!mysql_execute_command()[sql_parse.cc:3066] 00000001401A2F06 mysqld.exe!mysql_parse()[sql_parse.cc:5791] 00000001401A3C1A mysqld.exe!dispatch_command()[sql_parse.cc:1202] 00000001401A4CD7 mysqld.exe!do_command()[sql_parse.cc:857] 0000000140246327 mysqld.exe!handle_one_connection()[sql_connect.cc:1115] 00000001402B82C5 mysqld.exe!pthread_start()[my_winthread.c:85] 00000001403CAC37 mysqld.exe!_callthreadstart()[thread.c:295] 00000001403CAD05 mysqld.exe!_threadstart()[thread.c:275] 0000000077D6B69A kernel32.dll!BaseThreadStart() Trying to get some variables. Some pointers may be invalid and cause the dump to abort...
For views created with a column list clause, column aliases were
not substituted when selecting through the view using a
InnoDB table with a comment
'#' character caused foreign key
constraints to be omitted.
ALTER TABLE neglected to preserve
ROW_FORMAT information from the original
table, which could cause subsequent
TABLE statements to lose the row format for