42 Changes in MySQL 5.1.38 (2009-09-01)

InnoDB Plugin Notes

As of MySQL 5.1.38, the InnoDB Plugin is
included in MySQL 5.1 releases, in addition to the built-in
version of InnoDB that has been included in
previous releases. The version of the InnoDB
Plugin in this release is 1.0.4 and is considered of
Beta quality.

The 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
management, new INFORMATION_SCHEMA tables,
capacity tuning, multiple background I/O threads, and group
commit.

Replication:
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
the log_warnings variable is greater than 0.
(Bug #46265)

The undocumented TRANSACTIONAL and
PAGE_CHECKSUM keywords were removed from the
grammar.
(Bug #45829)

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-lock-tables
(or --skip-opt) option be
given.
(Bug #33762)

Previously, SELECT ...
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
--default-character-set option
if the --tab option was given
(which causes SELECT ...
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 CHARACTER
SET clause to the
SELECT ... INTO
OUTFILE statement used to dump data, so that
--default-character-set is no
longer ignored if --tab is
given.

Partitioning:
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.
(Bug #45816)

Partitioning:
A failed 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
renamed.
(Bug #30102)

Replication:
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
COMMIT or
ROLLBACK is
issued.
(Bug #46129)

References: This bug is a regression of Bug #43929, Bug #11752675.

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:
When using the MIXED logging format, after
creating a temporary table and performing an update that
switched the logging format to ROW, the
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.
(Bug #43046)

References: See also Bug #40013. This bug was introduced by Bug #20499.

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 NO
SQL, READS SQL DATA, or both (that
is, without using DETERMINISTIC) can be
executed.
(Bug #41166)

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
of the max_join_size system
variable. (These were harmless, but might be seen by users as
significant.)
(Bug #46385)

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.
(Bug #46310)

After an error such as a table-full condition,
INSERT IGNORE
could cause an assertion failure for debug builds.
(Bug #46075)

An optimization that moved an item from a subquery to an outer
query could cause a server crash.
(Bug #46051)

For problems reading SSL files during SSL initialization, the
server wrote error messages to stderr rather
than to the error log.
(Bug #45770)

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)

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)

A test for stack growth failed on some platforms, leading to
server crashes.
(Bug #42213)

References: See also Bug #62856.

mysqladmin did not have enough space
allocated for tracking all variables when using
--vertical or
--relative with
extended-status.
(Bug #40395)

Partitioning a log table caused a server crash.
(Bug #40281)

When using quick access methods to search for rows in
UPDATE and DELETE
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
warning.
(Bug #40113)

SHOW PROCESSLIST could access
freed memory of a stored procedure run in a concurrent session.
(Bug #38816)

During installation on Windows, the MySQL Instance Configuration
Wizard window could be opened at a size too small to be usable.
(Bug #38723)

The server crashed when executing a prepared statement
containing a duplicated MATCH() function call
in the select list and ORDER BY clause; for
example, SELECT MATCH(a) AGAINST('test') FROM t1 ORDER
BY MATCH(a) AGAINST('test').
(Bug #37740)

The output of mysqldump --tab for views
included a DROP TABLE statement
without the IF EXISTS qualifier.
(Bug #37377)

mysql_upgrade silently ignored the
--basedir and
--datadir options, which
it accepts for backward compatibility. Now it prints a warning.
(Bug #36558)

mysqlimport was not always compiled correctly
to enable thread support, which is required for the
--use-threads option.
(Bug #32991)

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
correctly.
(Bug #30525)

mysql included extra spaces at the end of
some result set lines.
(Bug #29622)

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 magic-space
function, it became impossible to enter spaces.
(Bug #27439)

If 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.
(Bug #18828)