Functionality added or changed:
The Multi-Range Read access method does not work reliably for
InnoDB and has been disabled for
InnoDB tables.
(Bug#45029)
The deprecated mysql_fix_privilege_tables script has been removed. (Bug#42589)
TRUNCATE
TABLE now is allowed for a table for which a
WRITE lock has been acquired with
LOCK TABLES.
(Bug#20667)
See also Bug#46452.
Most statements that previously caused an implicit commit before
executing now also cause an implicit commit after executing.
Also, the FLUSH statement and
mysql_refresh() C API function
now cause an implicit commit. See
Section 12.4.3, “Statements That Cause an Implicit Commit”.
When the server detects MyISAM table
corruption, it now writes additional information to the error
log, such as the name and line number of the source file, and
the list of threads accessing the table. Example: Got
an error from thread_id=1, mi_dynrec.c:368. This is
useful information to include in bug reports.
Bugs fixed:
Performance:
The InnoDB adaptive hash latch is released
(if held) for several 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 MyISAM
repair on a table used within a transaction.
(Bug#32149)
Security Fix:
The server crashed if an account with the
CREATE ROUTINE privilege but not
the EXECUTE privilege attempted
to create a stored procedure.
(Bug#44798)
Security Fix: The server crashed if an account without the proper privileges attempted to create a stored procedure. (Bug#44658)
Incompatible Change:
CHECK TABLE ... FOR
UPGRADE did not check for collation changes made in
MySQL 6.0.1 and 6.0.5 to latin2_czech_cs
(Bug#25420) or collation changes made in MySQL 6.0.6 to
big5_chinese_ci,
cp866_general_ci,
gb2312_chinese_ci, and
gbk_chinese_ci. This also affects
mysqlcheck and
mysql_upgrade, which cause that statement to
be executed. See
Section 2.12.3, “Checking Whether Tables or Indexes Must Be Rebuilt”.
(Bug#40054)
Incompatible Change:
If a data definition language (DDL) statement occurred for a
table that was being used by another session in an active
transaction, statements could be written to the binary log in
the wrong order. For example, this could happen if DROP
TABLE occurred for a table being used in a
transaction. This is now prevented by deferring release of
metadata locks on tables used within a transaction until the
transaction ends.
This bug fix results in some incompatibilities with previous versions:
A table that is being used by a transaction within one session cannot be used in DDL statements by other sessions until the transaction ends.
FLUSH TABLES WITH
READ LOCK blocks for active transactions that hold
metadata locks until those transactions end. The same is
true for attempts to set the global value of the
read_only system variable.
Partitioning: After attempting to create a duplicate index on a partitioned table (and having the attempt fail as expected), a subsequent attempt to create a new index on the table caused the server to hang. (Bug#40181)
Partitioning: Portions of the partitioning code were refactored in response to potential regression issues uncovered while working on the fix for Bug#31210. (Bug#32115)
See also Bug#40281.
Replication:
When using row-based replication, the incomplete logging of a
group of events involving both transaction and non-transactional
tables could cause STOP SLAVE to
hang.
(Bug#45940)
Replication: Failures while flushing the relay log were not always reported. (Bug#45820)
Replication:
The internal function
get_master_version_and_clock() (defined in
sql/slave.cc) ignored errors and passed
directly when queries failed, or when queries succeeded but the
result retrieved was empty. Now this function tries to reconnect
the master if a query fails due to transient network problems,
and to fail otherwise. The I/O thread now prints a warning if
the same system variables do not exist on master (in the event
the master is a very old version of MySQL, compared to the
slave.)
(Bug#45214)
Replication:
START SLAVE succeeded even if the
I/O thread did not connect to the master.
(Bug#44830)
Replication:
The server failed to start when using the
--log-slave-updates option
without also using the --log-bin
option. Now in such cases, only a warning message is generated.
(Bug#44663)
Replication: An extraneous debug message was written repeatedly to the slave error log, which could eventually lead to premature exhaustion of disk space. (Bug#43647)
Replication:
An error message relating to permissions required for
SHOW SLAVE STATUS was confusing.
(Bug#34227)
A CREATE TABLE attempt for a
table that had been opened with
HANDLER caused an assertion
failure because CREATE TABLE did
not close any open handlers for the table.
(Bug#47107)
For debug builds, an assertion failure could result from concurrent execution of statements involving stored functions or triggers that were using several tables and DDL statements that affected those tables. (Bug#46748)
The server crashed for attempts to drop a trigger for which the subject table was shadowed by a temporary table with the same name. (Bug#46747)
Deadlock could occur when executing transactions containing
data-modifying statements at the same time as
FLUSH TABLES WITH READ
LOCK or
SET
read_only=1 statements.
(Bug#46673)
Selecting from a MERGE table with a corrupted
child MyISAM table could cause a server crash
when the server attempted to automatically repair the child
table.
(Bug#46610)
The server could crash attempting to flush privileges after
receipt of a SIGHUP signal.
(Bug#46495)
When running the test suite with Valgrind the
archive_aio_posix test case took
approximately 60 minutes to complete, causing the test suite to
fail due to timeout.
(Bug#46461)
HANDLER OPEN
followed by TRUNCATE
TABLE could cause a server crash.
(Bug#46452)
See also Bug#20667.
After an error such as a table-full condition,
INSERT IGNORE
could cause an assertion failure for debug builds.
(Bug#46075)
Deadlock could occur for INFORMATION_SCHEMA
queries when execution attempted to open a table or its
.frm file.
(Bug#46044)
Improperly closing tables when INSERT
DELAYED needed to reopen tables could cause an
assertion failure.
(Bug#45949)
An infinite hang and 100% CPU usage occurred after handler tried to open a merge table.
If the command mysqladmin shutdown was executed during the hang, the debug server generated the following assert:
mysqld: table.cc:407: void free_table_share(TABLE_SHARE*): Assertion `share->ref_count == 0' failed. 090610 14:54:04 - mysqld got signal 6 ;
For an IPv6-enabled MySQL server, privileges specified using standard IPv4 addresses for hosts were not matched (only IPv4-mapped addresses were handled correctly).
As part of the fix for this bug, a new build option
--disable-ipv6 has been introduced. Compiling
MySQL with this option causes all IPv6-specific code in the
server to be ignored.
If the server has been compiled using
--disable-ipv6, it is not able to resolve
hostnames correctly when run in an IPv6 environment.
The hostname cache failed to work correctly. (Bug#45584)
A Windows Installation using the GUI installer would fail with:
MySQL Server 5.1 Setup Wizard ended prematurely The wizard was interrupted before MySQL Server 5.1. could be completely installed. Your system has not been modified. To complete installation at another time, please run setup again. Click Finish to exit the wizard
This was due to an step in the MSI installer that could fail to execute correctly on some environments. (Bug#45418)
NULL values were not grouped properly for
some joins containing GROUP BY.
(Bug#45267)
Killing a delayed-insert thread could cause a server crash. (Bug#45067)
Execution of FLUSH
TABLES or FLUSH
TABLES WITH READ LOCK concurrently with
LOCK TABLES resulted in deadlock.
(Bug#45066)
ALTER TABLE ... ADD
COLUMN for a table with multiple foreign keys caused a
server crash.
(Bug#45052)
If a session had a table locked with LOCK
TABLES for both READ and
WRITE, ALTER
TABLE could fail.
(Bug#45035)
The mysql_real_connect() C API
function only attempted to connect to the first IP address
returned for a hostname. This could be a problem if a hostname
mapped to multiple IP address and the server was not bound to
the first one returned. Now
mysql_real_connect() attempts to
connect to all IPv4 or IPv6 addresses that a domain name maps
to.
(Bug#45017)
See also Bug#47757.
mysqld_safe could fail to find the logger program. (Bug#44736)
Some Perl scripts in AIX packages contained an incorrect path to the perl executable. (Bug#44643)
A natural join of INFORMATION_SCHEMA tables
could cause an assertion failure.
(Bug#43834)
Queries executed using index condition pushdown could return incorrect results because the condition could evaluate to an unexpected result. (Bug#43600)
The server crashed if invoked with the
--verbose and
--help options.
(Bug#43533)
HANDLER statements are now
disallowed if a table lock has been acquired with
LOCK TABLES.
(Bug#43272)
The IPv6 loopback address ::1 was interpeted
as a hostname rather than a numeric IP address.
In addition, the IPv6-enabled server on Windows interpeted the
hostname localhost as ::1
only, which failed to match the default
root@127.0.0.1 entry in the
mysql.user privilege table.
(Bug#43006)
The server could crash if an attempt to open a
MERGE table child MyISAM
table failed.
(Bug#42862)
The named_pipe system variable
was not properly defined in Windows. For example,
SHOW VARIABLES did not display
the variable.
(Bug#42173)
Premature metadata lock downgrade for
CREATE TABLE ...
SELECT could result in an inconsistent binary log or
failure with an ER_CANT_LOCK
error.
(Bug#41425)
Plugin shutdown could lead to an assertion failure caused by using an already destroyed mutex in the metadata locking subsystem. (Bug#39674)
Concurrent connections executing
FLUSH TABLES
and at least two statements using the same table could cause all
three connections to stall with 100% CPU utilization.
(Bug#38661)
Valgrind warnings that occurred for SHOW
TABLE STATUS with InnoDB tables
were silenced.
(Bug#38479)
Use of GET_LOCK() within an Event
Manager event could cause a server crash.
(Bug#37774)
Valgrind warnings that occurred when reading spatial indexes were silenced. (Bug#37066)
Previously, the server handled character data types for a stored
routine parameter, local routine variable created with
DECLARE, or stored function
return value as follows: If the CHARACTER SET
attribute was present, the COLLATE attribute
was not supported, so the character set's default collation was
used. (This includes use of BINARY, which in
this context specifies the binary collation of the character
set.) If there was no CHARACTER SET
attribute, the database character set and its default collation
were used.
Now for character data types, if there is a CHARACTER
SET attribute in the declaration, the specified
character set and its default collation is used. If the
COLLATE is also present, that collation is
used rather than the default collation. If there is no
CHARACTER SET attribute, the database
character set and collation in effect at routine creation time
are used. (The database character set and collation are given by
the value of the
character_set_database and
collation_database system
variables.)
(Bug#24690)
A statement that caused a circular wait among statements did not
return a deadlock error. Now the server detects deadlock and
returns ER_LOCK_DEADLOCK.
(Bug#22876)
Renaming a column that appeared in a foreign key definition did not update the foreign key definition with the new column name. (Bug#21704)
For INSERT DELAYED statements
issued for a table while an ALTER
TABLE operation on the table was in progress, the
server could return a spurious Server shutdown in
progress error.
(Bug#18484)
The character set was not being properly initialized for
CAST() with a type such as
CHAR(2) BINARY, which resulted in
incorrect results or a server crash.
(Bug#17903)
If a connection was waiting for a
GET_LOCK() lock or a
SLEEP() call, and the connection
aborted, the server did not detect this and thus did not close
the connection. This caused a waste of system resources
allocated to dead connections. Now the server checks such a
connection every five seconds to see whether it has been
aborted. If so, the connection is killed (and any lock request
is aborted).
(Bug#10374)


User Comments
Add your own comment.