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
      name=libraryplugin-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.