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. 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 group
commit.
For information about these features, see the InnoDB
Plugin
Manual at
http://www.innodb.com/products/innodb_plugin/plugin-documentation.
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:
[mysqld] ignore-builtin-innodb plugin-load=innodb=ha_innodb_plugin.so
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 my.cnf
file:
[mysqld] ignore-builtin-innodb plugin-load=innodb=ha_innodb_plugin.so plugin_dir=/usr/local/mysql/lib/mysql/plugin
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
http://www.innodb.com/doc/innodb_plugin-1.0/innodb-information-schema.html.)
To enable these tables, include additional
pairs in the value of the
name
=library
plugin-load
option:
[mysqld] ignore-builtin-innodb plugin-load=innodb=ha_innodb_plugin.so ;innodb_trx=ha_innodb_plugin.so ;innodb_locks=ha_innodb_plugin.so ;innodb_cmp=ha_innodb_plugin.so ;innodb_cmp_reset=ha_innodb_plugin.so ;innodb_cmpmem=ha_innodb_plugin.so ;innodb_cmpmem_reset=ha_innodb_plugin.so
The plugin-load
option value as
shown 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.
If you use gcc, InnoDB
Plugin
cannot be compiled with gcc
3.x; you must use gcc 4.x instead.
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.
(Bug#46265)
The undocumented TRANSACTIONAL
and
PAGE_CHECKSUM
keywords were removed from the
grammar.
(Bug#45829)
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.
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.
(Bug#30946)
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.
Bugs fixed:
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) );
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 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)
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)
See also Bug#40013.
This regression was introduced by Bug#20499.
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
ER_BINLOG_UNSAFE_ROUTINE).
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.
(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)
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)
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.
(Bug#45998)
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 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)
Invalid memory reads could occur using the compressed client/server protocol. (Bug#45031)
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.
(Bug#45017)
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)
Using mysql_stmt_execute()
to
call a stored procedure could cause a server crash.
(Bug#44495)
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)
mysqlslap ignored the
--csv
option if it was given
without an argument.
(Bug#44412)
Enabling the event scheduler from within the file specified by
--init-file
caused a server
crash.
(Bug#43587)
The server did not always check the return value of calls to the
hash_init()
function.
(Bug#43572)
The table cache lock (LOCK_open
) is now an
adaptive mutex, which should improve performance in workloads
where this lock is heavily contended.
(Bug#43435)
mysqladmin --count=X
--sleep=Y
incorrectly
delayed Y
seconds after the last
iteration before exiting.
(Bug#42639)
A test for stack growth failed on some platforms, leading to server crashes. (Bug#42213)
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)
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
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)
mysqlcheck failed to fix table names when the
--fix-table-names
and
--all-in-1
options were both
specified.
(Bug#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. (Bug#31785)
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.
(Bug#30525)
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 quotes around command-line configuration parameters could cause the quotes to 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)
User Comments
Add your own comment.