If you intend to use the plugin version of
InnoDB, we recommend that you use
MySQL 5.1.48 or later instead of 5.1.46sp1. This is because
5.1.46 contains the first production-ready version and the
later version has fixes for some of the bugs found during more
widespread production use.
InnoDB Plugin Notes
InnoDB Plugin has been upgraded to version
1.0.7. This version is considered of General Availability (GA)
quality. InnoDB Plugin Change History, may contain
information in addition to those changes reported here.
In this release, the InnoDB Plugin is
included in source and binary distributions, except RHEL3,
RHEL4, SuSE 9 (x86, x86_64, ia64), and generic Linux RPM
packages. It also does not work for FreeBSD 6 and HP-UX or for
Linux on generic ia64.
Functionality Added or Changed
A new system variable,
skip_name_resolve, is set from
the value of the
--skip-name-resolve server
option. This provides a way to determine at runtime whether the
server uses name resolution for client connections.
(Bug #37168)
Bugs Fixed
Security Fix:
Privilege checking for UNINSTALL
PLUGIN was incorrect.
(Bug #51770, CVE-2010-1621)
Performance: InnoDB:
The redo scan during InnoDB recovery used
excessive CPU. The efficiency of this scan was improved for
InnoDB Plugin, significantly speeding up
crash recovery.
(Bug #49535, Bug #29847)
Performance: InnoDB:
InnoDB Plugin page-freeing operations were
made faster for compressed blocks, speeding up
ALTER TABLE,
DROP TABLE, and other operations
on compressed tables that free compressed blocks. One symptom of
the older behavior could be 100% CPU use during these
operations.
(Bug #35077)
Performance:
While looking for the shortest index for a covering index scan,
the optimizer did not consider the full row length for a
clustered primary key, as in
InnoDB. Secondary covering indexes
are now preferred, making full table scans less likely.
(Bug #39653)
References: See also Bug #55656.
Important Change:
When using fast ALTER TABLE,
different internal ordering of indexes in the MySQL optimizer
and the InnoDB storage engine could
cause error messages about possibly mixed up
.frm files and incorrect index use.
(Bug #47622)
InnoDB: Replication:
TRUNCATE TABLE performed on a
temporary table using the InnoDB
storage engine was logged even when using row-based mode.
(Bug #51251)
InnoDB: Replication:
Column length information generated by
InnoDB did not match that generated
by MyISAM, which caused invalid
metadata to be written to the binary log when trying to
replicate BIT columns.
(Bug #49618)
InnoDB: Fixed a performance issue on Windows systems that affected the InnoDB Plugin, by turning off atomic instructions. (Bug #52102)
InnoDB:
For InnoDB Plugin, bit fields were causing
problems with concurrency on SMP systems because of word-packing
issues.
(Bug #52360)
InnoDB:
The AIX implementation of readdir_r() caused
InnoDB errors.
(Bug #50691)
Partitioning:
Partition pruning on RANGE partitioned tables
did not always work correctly; the last partition was not
excluded if the range was beyond it (when not using
MAXVALUE). Now the last partition is not
included if the partitioning function value is not within the
range.
(Bug #51830)
Partitioning:
The insert_id server system
variable was not reset following an insert that failed on a
partitioned MyISAM table having an
AUTO_INCREMENT column.
(Bug #50392)
Partitioning:
Foreign keys are not supported on partitioned tables. However,
it was possible using an ALTER
TABLE statement to set a foreign key on a partitioned
table; it was also possible to partition a table with a single
foreign key.
(Bug #50104)
Partitioning:
GROUP BY queries performed poorly for some
partitioned tables. This was due to the block size not being set
for partitioned tables, thus the keys per block was not correct,
which could cause such queries to be optimized incorrectly.
(Bug #48229)
References: See also Bug #37252.
Partitioning:
REPAIR TABLE failed for
partitioned ARCHIVE tables.
(Bug #46565)
Replication:
When run with the --database
option, mysqlbinlog printed
ROLLBACK
statements but did not print any corresponding
SAVEPOINT statements.
(Bug #50407)
Replication:
When a CREATE EVENT statement was
followed by an additional statement and the statements were
executed together as a single statement, the
CREATE EVENT statement was padded
with “garbage” characters when written to the
binary log. This led to a syntax error when the event was read
from the log.
(Bug #50095)
Replication: When using temporary tables, the binary log needs to insert a pseudo-thread ID for threads that are using temporary tables, each time a switch happens between two threads, both of which are using temporary tables. However, if a thread issued a failing statement before exit, its ID was not recorded in the binary log, and this in turn caused the ID for the next thread that tried to do something with a temporary table not to be logged as well. Subsequent replays of the binary log failed with the error Table ... doesn't exist. (Bug #51226)
References: This bug is a regression of Bug #35583.
Replication:
If the master was using
sql_mode='TRADITIONAL',
duplicate key errors were not sent to the slave, which received
0 rather than the expected error code. This
caused replication to fail even when such an error was expected.
(Bug #51055)
Replication:
The value of Slave_IO_running in the output
of SHOW SLAVE STATUS did not
distinguish between all 3 possible states of the slave I/O
thread (not running; running but not connected; connected). Now
the value Connecting (rather than
No) is shown when the slave I/O thread is
running but the slave is not connected to a replication master.
The server system variable Slave_running also
reflects this change, and is now consistent with what is shown
for Slave_IO_running.
(Bug #30703, Bug #41613, Bug #51089)
A problem with equality propagation optimization for prepared statements and stored procedures caused a server crash upon re-execution of the prepared statement or stored procedure. (Bug #51650)
References: See also Bug #8115, Bug #8849.
InnoDB did not reset table
AUTO_INCREMENT values to the last used values
after a server restart.
(Bug #49032)
A query that read from a derived table (of the form
SELECT ... FROM (SELECT ...)) produced
incorrect results when the following conditions were present:
The table subquery contained a derived query
((SELECT ...) AS
).
column
The derived query could potentially produce zero rows or a
single NULL (that is, no rows matched, or
the query used an aggregate function such as
SUM() running over zero
rows).
The table subquery joined at least two tables.
The join condition involved an index.
(Bug #47904)
A HAVING clause on a joined table in some
cases failed to eliminate rows which should have been excluded
from the result set.
(Bug #51242)
Performing a single in-place ALTER
TABLE containing ADD INDEX and
DROP INDEX options that used the same index
name could result in a corrupt table definition file. Now such
ALTER TABLE statements are no
longer performed in place.
(Bug #49838)
The type inference used for view columns caused some columns in
views to be handled as the wrong type, as compared to the same
columns in base tables. DATE
columns in base tables were treated as
TIME columns in views, and base
table TIME columns as view
DATETIME columns.
(Bug #50918)
The MERGE engine failed to open a
child table from a different database if the child table or
database name contained characters that were subject to table
name to file name encoding.
Further, the MERGE engine did not
properly open a child table from the same database if the child
table name contained characters such as '/',
or '#'.
(Bug #48265)
If a stored function contained a
RETURN statement with an
ENUM value in the ucs2
character set, SHOW CREATE
FUNCTION and SELECT DTD_IDENTIFIER FROM
INFORMATION_SCHEMA.ROUTINES returned incorrect values.
(Bug #48766)
CHECKSUM TABLE could compute the
checksum for BIT columns incorrectly.
(Bug #51304)
mysql_upgrade did not detect when
CSV log tables incorrectly
contained columns that could be NULL. Now
these columns are altered to be NOT NULL.
(Bug #49823)
The query shown by EXPLAIN
EXTENDED plus SHOW
WARNINGS could produce results different from the
original query.
(Bug #47669)
For LDML-defined collations, some data structures were not
initialized properly to enable
UPPER() and
LOWER() to work correctly.
(Bug #51976)
Invalid memory reads occurred for
HANDLER ... READ
NEXT after a failed
HANDLER ... READ
FIRST.
(Bug #51877)
The YEAR values
2000 and 0000 could be
treated as equal.
(Bug #49910)
The optimizer performed an incorrect join type when
COALESCE() appeared within an
IN() operation.
(Bug #51598)
Following a bulk insert into a
MyISAM table, if
MyISAM failed to build indexes
using repair by sort, data file corruption could occur.
(Bug #51307)
With an XA transaction active,
SET autocommit =
1 could cause side effects such as memory corruption
or a server crash.
(Bug #51342)
The optimization to read MIN() or
MAX() values from an index did
not properly handle comparisons with NULL
values. This could produce incorrect results for
MIN() or
MAX()when the
WHERE clause tested a NOT
NULL column for NULL.
(Bug #47762)
Killing a query during the optimization phase of a subquery could cause a server crash. (Bug #47761)
Renaming a column of an InnoDB
table caused the server to go out of sync with the
InnoDB data dictionary. To avoid
this issue, renaming a column uses the older technique of
copying all the table data rather than updating the table
in-place.
(Bug #47621)
Setting myisam_repair_threads
larger than 1 could result in the cardinality for all indexes of
a MyISAM table being set to 1 after
parallel index repair.
(Bug #47444)
In LOAD DATA
INFILE, using a SET clause to set a
column equal to itself caused a server crash.
(Bug #51850)
Use of HANDLER statements with
tables that had spatial indexes caused a server crash.
(Bug #51357)
The server crashed when it could not determine the best
execution plan for queries involving outer joins with
nondeterministic ON clauses such as the ones
containing the RAND() function, a
user-defined function, or a NOT DETERMINISTIC
stored function.
(Bug #48483)
On Windows, LOAD_FILE() could
cause a crash for some pathnames.
(Bug #51893)
If myisam_sort_buffer_size was
set to a small value, table repair for
MyISAM tables with
FULLTEXT indexes could crash the server.
(Bug #51866)
EXPLAIN EXTENDED crashed trying
to resolve references to freed temporary table columns for
GROUP_CONCAT() ORDER
BY arguments.
(Bug #52397)
In debug builds, if the listed columns in the view definition of
the table used in an
INSERT ...
SELECT statement mismatched, an assertion was raised
in the query cache invalidation code following the failing
statement.
(Bug #46615)
The optimizer could attempt to evaluate the
WHERE clause before any rows had been read,
resulting in a server crash.
(Bug #52177)
MyISAM could write uninitialized
data to new index pages. Now zeros are written to unused bytes
in the pages.
(Bug #47598)
The server crashed when the optimizer attempted to determine constant tables but a table storage engine did not support exact record count. (Bug #51494)
The server could crash populating the
INFORMATION_SCHEMA.PROCESSLIST
table due to lack of mutex protection.
(Bug #51377)
After TRUNCATE TABLE of a
MyISAM table, subsequent queries
could crash the server if
myisam_use_mmap was enabled.
(Bug #51868)
A trigger could change the behavior of assigning
NULL to a NOT NULL column.
(Bug #48525)
A unique index on a column prefix could not be upgraded to a primary index even if there was no primary index already defined. (Bug #51378)
InnoDB returned an error when
inserting a negative value into an auto-increment column.
(Bug #49497)
mysqlbinlog option-processing code had a memory leak. (Bug #38468)
SHOW CREATE VIEW returned invalid
SQL if the definition contained a
SELECT
' statement
where the string'string was longer than the
maximum length of a column name, due to the fact that this text
was also used as an alias (in the AS clause).
Because not all names retrieved from arbitrary
SELECT statements can be used as
view column names due to length and format restrictions, the
server now checks the conformity of automatically generated
column names and rewrites according to a predefined format any
names that are not acceptable as view column names before
storing the final view definition on disk.
In such cases, the name is now rewritten as
Name_exp_,
where pospos is the position of the
column. To avoid this conversion scheme, define explicit, valid
names for view columns using the
column_list clause of the
CREATE VIEW statement.
As part of this fix, aliases are now generated only for top-level statements. (Bug #40277)
mysql_upgrade did not create temporary files properly. (Bug #41057)
It was possible for DROP TABLE of
one MyISAM table to remove the data
and index files of a different
MyISAM table.
(Bug #40980)
If the arguments to a CONCAT()
call included a local routine variable, selecting the return
value into a user variable could produce an incorrect result.
(Bug #40625)
For a query that selected from a view and used an alias for the
view, the metadata used the alias name rather than the view name
in the MYSQL_FIELD.table member.
(Bug #41788)
A query on a FEDERATED table in which the
data was ordered by a TEXT column returned
incorrect results. For example, a query such as the following
produced incorrect results if column column1
was a TEXT column:
SELECT * FROM table1 ORDER BY column1;
(Bug #32426)
The test for readline during configuration
failed when trying to build MySQL in a directory other than the
source tree root.
(Bug #35250)

User Comments
Add your own comment.