As of MySQL 5.1.38, the
InnoDB Plugin is
included in MySQL 5.1 releases, in addition to the built-in
InnoDB that has been included in
previous releases. The version of the
Plugin in this release is 1.0.4 and is considered of
InnoDB Plugin offers new features,
improved performance and scalability, enhanced reliability and
new capabilities for flexibility and ease of use. Among the
features of the
InnoDB Plugin are “Fast
index creation,” table and index compression, file format
capacity tuning, multiple background I/O threads, and group
InnoDB Plugin is included in source and
binary distributions, except RHEL3, RHEL4, SuSE 9 (x86, x86_64,
ia64), and generic Linux RPM packages.
For instructions on replacing the built-in version of
see Using InnoDB Plugin Instead of the Built-In InnoDB.
With statement-based logging (SBL), repeatedly calling
statements that are unsafe for SBL caused a warning message to
be written to the error log for each statement, and there was no
way to disable this behavior. Now the server logs messages about
statements that are unsafe for statement-based logging only if
log_warnings variable is greater than 0.
PAGE_CHECKSUM keywords were removed from the
Previously, mysqldump would not dump the
INFORMATION_SCHEMA database and ignored it if
it was named on the command line. Now,
mysqldump will dump
INFORMATION_SCHEMA if it is named on the
command line. Currently, this requires that the
--skip-opt) option be
INTO OUTFILE dumped column values without character
set conversion, which could produce data files that cannot be
imported without error if different columns used different
character sets. A consequence of this is that
mysqldump ignored the
--tab option was given
INTO OUTFILE to be used to dump data.)
INTO OUTFILE now can be followed by a
CHARACTER SET clause indicating the character
set to which dumped values should be converted. Also,
mysqldump adds a
SET clause to the
SELECT ... INTO
OUTFILE statement used to dump data, so that
--default-character-set is no
longer ignored if
Other changes are that
SELECT ... INTO
OUTFILE enforces that
ESCAPED BY arguments must be a single
... INTO OUTFILE and
INFILE produce warnings if non-ASCII field or line
separators are specified.
euckr character set now can store
extended codes [81...FE][41..5A,61..7A,81..FE], which makes
euckr compatible with the Microsoft
cp949 character set.
Pluggable storage engines now can be built for Windows.
The table cache lock (
LOCK_open) is now an
adaptive mutex, which should improve performance in workloads
where this lock is heavily contended.
Partitioning: Attempting to create a table using an invalid or inconsistent subpartition definition caused the server to crash. An example of such a statement is shown here:
CREATE TABLE t2 (s1 INT, s2 INT) PARTITION BY LIST (s1) SUBPARTITION BY HASH (s2) SUBPARTITIONS 1 ( PARTITION p1 VALUES IN (1), PARTITION p2 VALUES IN (2) (SUBPARTITION p3) );
When using a debug build of MySQL, if a query against a
partitioned table having an index on one or more
DOUBLE columns used that index,
the server failed with an assertion.
RENAME TABLE operation
on a table with user-defined partitioning left the table in an
unusable state, due to only some of the table files having been
When a statement that changes a nontransactional table failed,
the transactional cache was flushed, causing a mismatch between
the execution and logging histories. Now we avoid flushing the
transactional cache unless a
References: This bug is a regression of Bug #43929, Bug #11752675.
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
When using the
MIXED logging format, after
creating a temporary table and performing an update that
switched the logging format to
format switch persisted following the update. This prevented any
subsequent DDL statements on temporary tables from being written
to the binary log until the temporary table was dropped.
References: See also Bug #40013. This bug was introduced by Bug #20499.
option is not enabled,
FUNCTION requires one of the modifiers
NO SQL, or
READS SQL DATA. When using statement-based
mode, the execution of a stored function should follow the same
rules; however, only functions defined with
DETERMINISTIC could actually be executed. In
addition, the wrong error was generated
Now execution of stored functions is compatible with creation in
this regard; when a stored function without one of the modifiers
above is executed in
STATEMENT mode, the
correct error is raised, and functions defined using
READS SQL DATA, or both (that
is, without using
DETERMINISTIC) can be
The test suite was missing from RPM packages. (Bug #46834)
Incorrect index optimization could lead to incorrect results or server crashes. (Bug #46454)
The server printed warnings at startup about adjusting the value
variable. (These were harmless, but might be seen by users as
mysql did not handle backspace properly for
multibyte characters. This has been fixed now if
mysql is linked with the
readline library. It is not fixed if
mysql is linked with
libedit, which does not contain the necessary
support for multibyte character sets.
After an error such as a table-full condition,
could cause an assertion failure for debug builds.
An optimization that moved an item from a subquery to an outer query could cause a server crash. (Bug #46051)
Several Valgrind warnings were corrected. (Bug #46003, Bug #46034, Bug #46042)
CREATE TABLE ...
SELECT could cause a server crash if no default
database was selected.
The MySQL Server crashed when performing a
REPLACE into a
if there was a duplicate.
An infinite hang and 100% CPU usage occurred after a 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 problems reading SSL files during SSL initialization, the
server wrote error messages to
than to the error log.
The vendor name change from MySQL AB to Sun Microsystems, Inc. in RPM packages was not handled gracefully when upgrading MySQL using an RPM package. (Bug #45534)
A Windows Installation using the GUI installer failed 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 a step in the MSI installer that could fail to execute correctly on some environments. (Bug #45418)
Invalid memory reads could occur using the compressed client/server protocol. (Bug #45031)
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
References: See also Bug #47757.
Invalid input could cause invalid memory reads by the parser. (Bug #45010)
Some files in an AIX tar file distribution unpacked with incorrect permissions. (Bug #44647)
For debug builds, executing a stored procedure as a prepared statement could sometimes cause an assertion failure. (Bug #44521)
call a stored procedure could cause a server crash.
Creating a new instance after previously removing an instance failed to complete the installation properly because the security settings could not be applied correctly. (Bug #44428)
mysqlslap ignored the
--csv option if it was given
without an argument.
Enabling the event scheduler from within the file specified by
--init-file caused a server
The server did not always check the return value of calls to the
Y seconds after the last
iteration before exiting.
A test for stack growth failed on some platforms, leading to server crashes. (Bug #42213)
References: See also Bug #62856.
Partitioning a log table caused a server crash. (Bug #40281)
When using quick access methods to search for rows in
statements, there was no check whether a fatal error had already
been sent to the client while evaluating the quick condition.
Consequently, a false OK (following the error) was sent to the
client, causing the error to be incorrectly transformed into a
SHOW PROCESSLIST could access
freed memory of a stored procedure run in a concurrent session.
During installation on Windows, the MySQL Instance Configuration Wizard window could be opened at a size too small to be usable. (Bug #38723)
make_binary_distribution did not always generate correct distribution names. (Bug #37808)
The server crashed when executing a prepared statement
containing a duplicated
MATCH() function call
in the select list and
ORDER BY clause; for
SELECT MATCH(a) AGAINST('test') FROM t1 ORDER
BY MATCH(a) AGAINST('test').
The output of mysqldump --tab for views
DROP TABLE statement
IF EXISTS qualifier.
mysqlimport was not always compiled correctly
to enable thread support, which is required for the
If the MySQL server was killed without the PID file being removed, attempts to stop the server with mysql.server stop waited 900 seconds before giving up. (Bug #31785)
When performing an installation on Windows using the GUI
installer, the installer failed to wait long enough during
installation for the MySQL service to be installed, which would
cause the installation to fail and may cause security settings,
such as the
root password to not be applied
mysql included extra spaces at the end of some result set lines. (Bug #29622)
The mysql client inconsistently handled NUL bytes in column data in various output formats. (Bug #28203)
mysqlimport did not correctly quote and escape table identifiers and file names. (Bug #28071)
When installing the Windows service, using quotation marks around command-line configuration parameters could cause the quotation marks to be incorrectly placed around the entire command-line option, and not just the value. (Bug #27535)
If the mysql client was built with the
readline library and the
.inputrc file mapped
Space to the
function, it became impossible to enter spaces.
InnoDB reached its limit on the number of
concurrent transactions (1023), it wrote a descriptive message
to the error log but returned a misleading error message to the
client, or an assertion failure occurred.
References: See also Bug #46672.