|| ||Jonathan Perkin <jperkin-AT-sun.com> |
|| ||announce-AT-lists.mysql.com, mysql-AT-lists.mysql.com, packagers-AT-lists.mysql.com |
|| ||MySQL Community Server 5.1.38 has been released |
|| ||Thu, 03 Sep 2009 16:59:47 +0100|
|| ||Article, Thread
Dear MySQL users,
MySQL Community Server 5.1.38, a new version of the popular Open
Source Database Management System, has been released. MySQL 5.1.38 is
recommended for use on production systems.
For an overview of what's new in MySQL 5.1, please see
For information on installing MySQL 5.1.38 on new servers or upgrading
to MySQL 5.1.38 from previous MySQL releases, please see
MySQL Server is available in source and binary form for a number of
platforms from our download pages at
Not all mirror sites may be up to date at this point in time, so if
you can't find this version on some mirror, please try again later or
choose another download site.
We welcome and appreciate your feedback, bug reports, bug fixes,
For information on open issues in MySQL 5.1, please see the errata
The following section lists the changes in the MySQL source code since
the previous released version of MySQL 5.1. It may also be viewed
C.1.1. Changes in MySQL 5.1.38
As of MySQL 5.1.38, the InnoDB Plugin is included in MySQL
releases, in addition to the built-in version of InnoDB that
has been included in previous releases. This version of the
InnoDB Plugin 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
For information about these features, see the InnoDB Plugin
For general information about using InnoDB in MySQL,
see Section 13.6, "The InnoDB Storage Engine."
The InnoDB Plugin is included in source and binary
distributions, except RHEL3, RHEL4, SuSE 9 (x86, x86_64,
ia64), and generic Linux RPM packages.
To use the InnoDB Plugin, you must disable the built-in
version of InnoDB that is also included and instruct the
server to use InnoDB Plugin instead. To accomplish this, use
the following lines in your my.cnf file:
For the plugin-load option, innodb is the name to associate
with the plugin and ha_innodb_plugin.so is the name of the
shared object library that contains the plugin code. The
extension of .so applies for Unix (and similar) systems. For
HP-UX on HPPA (11.11) or Windows, the extension should be .sl
or .dll, respectively, rather than .so.
If the server has problems finding the plugin when it starts
up, specify the pathname to the plugin directory. For
example, if plugins are located in the lib/mysql/plugin
directory under the MySQL installation directory and you have
installed MySQL at /usr/local/mysql, use these lines in your
The previous examples show how to activate the storage engine
part of InnoDB Plugin, but the plugin also implements several
InnoDB-related INFORMATION_SCHEMA tables. (For information
about these tables, see
To enable these tables, include additional name=library
pairs to the plugin-load option:
The plugin-load option here is formatted on multiple lines
for display purposes but should be written in my.cnf using a
single line without spaces in the option value. On Windows,
substitute .dll for each instance of the .so extension.
After the server starts up, verify that InnoDB Plugin has
been loaded by using the SHOW PLUGINS statement. For example,
if you have loaded the storage engine and the
INFORMATION_SCHEMA tables, the output should include lines
similar to these:
mysql> SHOW PLUGINS;
| Name | Status | Type | Library ...
| InnoDB | ACTIVE | STORAGE ENGINE | ha_innodb_plugin.so ...
| INNODB_TRX | ACTIVE | INFORMATION SCHEMA | ha_innodb_plugin.so ...
| INNODB_LOCKS | ACTIVE | INFORMATION SCHEMA | ha_innodb_plugin.so ...
| INNODB_CMP | ACTIVE | INFORMATION SCHEMA | ha_innodb_plugin.so ...
| INNODB_CMP_RESET | ACTIVE | INFORMATION SCHEMA | ha_innodb_plugin.so ...
| INNODB_CMPMEM | ACTIVE | INFORMATION SCHEMA | ha_innodb_plugin.so ...
| INNODB_CMPMEM_RESET | ACTIVE | INFORMATION SCHEMA | ha_innodb_plugin.so ...
If you build MySQL from a source distribution, InnoDB Plugin
is one of the storage engines that is built by default. Build
MySQL the way you normally do; for example, by using the
instructions at Section 2.10, "MySQL Installation Using a
Source Distribution." After the build completes, you should
find the plugin shared object file under the
storage/innodb_plugin directory, and make install should
install it in the plugin directory. Configure MySQL to use
InnoDB Plugin as described earlier for binary distributions.
Functionality added or changed:
* 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.
* The undocumented TRANSACTIONAL and PAGE_CHECKSUM keywords
were removed from the grammar.
* 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
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
Other changes are that SELECT ... INTO OUTFILE enforces
that ENCLOSED BY and ESCAPED BY arguments must be a
single character, and SELECT ... INTO OUTFILE and LOAD
DATA INFILE produce warnings if non-ASCII field or line
separators are specified.
* The MySQL 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.
* 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
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)
* 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.
* 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.
* Replication: When a statement that changes a
non-transactional 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: http://bugs.mysql.com/46129)
* 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 some system variables do not exist on master (in the
event the master is a very old version of MySQQL,
compared to the slave.)
* 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: http://bugs.mysql.com/43046)
See also Bug#40013: http://bugs.mysql.com/40013.
This regression was introduced by
* Replication: If the --log-bin-trust-function-creators
option is not enabled, CREATE FUNCTION requires one of
the modifiers DETERMINISTIC, 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 DETERMINSTIC could actually
be executed. In addition, the wrong error was generated
(ER_BINLOG_ROW_RBR_TO_SBR instead of
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
DETERMINSTIC) can be excuted.
* The test suite was missing from RPM packages.
* Incorrect index optimization could lead to incorrect
results or server crashes.
* 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: http://bugs.mysql.com/46385)
* After an error such as a table-full condition, INSERT
IGNORE 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.
* Several Valgrind warnings were corrected.
* CREATE TABLE ... SELECT could cause a server crash if no
default database was selected.
* For problems reading SSL files during SSL initialization,
the server wrote error messages to stderr rather than to
the error log. (Bug#45770: http://bugs.mysql.com/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.
* A Windows Installation using the GUI installer would fail
MySQL Server 5.1 Setup Wizard ended prematurely
The wizard was interrupted before MySQL Server 5.1. could be
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.
* Invalid memory reads could occur using the compressed
* 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/6 addresses that a domain name maps to.
* Invalid input could cause invalid memory reads by the
parser. (Bug#45010: http://bugs.mysql.com/45010)
* Some files in an AIX tar file distribution unpacked with
* For debug builds, executing a stored procedure as a
prepared statement could sometimes cause an assertion
failure. (Bug#44521: http://bugs.mysql.com/44521)
* Using mysql_stmt_execute() to call a stored procedure
could cause a server crash.
* Creating a new instance after previously removing an
instance would fail to complete the installation properly
because the security settings could not be applied
correctly. (Bug#44428: http://bugs.mysql.com/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 crash.
* The server did not always check the return value of calls
to the hash_init() function.
* The table cache lock (LOCK_open) is now an adaptive
mutex, which should improve performance in workloads
where this lock is heavily contended.
* mysqladmin --count=X --sleep=Y incorrectly delayed Y
seconds after the last iteration before exiting.
* A test for stack growth failed on some platforms, leading
to server crashes.
* mysqladmin did not have enough space allocated for
tracking all variables when using --vertical or
--relative with extended-status.
* Partitioning a log table caused a server crash.
* 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.
* 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.
* make_binary_distribution did not always generate correct
* 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: http://bugs.mysql.com/37740)
* The output of mysqldump --tab for views included a DROP
TABLE statement without the IF EXISTS qualifier.
* mysql_upgrade silently ignored the --basedir and
--datadir options, which it accepts for backward
compatibility. Now it prints a warning.
* mysqlimport was not always compiled correctly to enable
thread support, which is required for the --use-threads
option. (Bug#32991: http://bugs.mysql.com/32991)
* mysqlcheck failed to fix table names when the
--fix-table-names and --all-in-1 options were both
specified. (Bug#31821: http://bugs.mysql.com/31821)
* 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.
* When performing an installation on Windows using the GUI
installer, the installer would fail 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.
* mysql included extra spaces at the end of some result set
lines. (Bug#29622: http://bugs.mysql.com/29622)
* The mysql client inconsistently handled NUL bytes in
column data in various output formats.
* mysqlimport did not correctly quote and escape table
identifiers and file names.
* When installing the Windows service, using quotes around
command-line configuration parameters could cause the
quotes to incorrectly placed around the entire
command-line option, and not just the value.
* 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.
* 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.
Jonathan Perkin, Release Engineering, MySQL
Database Technology Group, Sun Microsystems
to post comments)