AIX Notes
Support Ending for AIX 5.2: Per the http://www.mysql.com/about/legal/lifecycle/ regarding ending support for OS versions that have reached vendor end of life, we plan to discontinue building or supporting MySQL binaries for AIX 5.2 as of April 30, 2009. The next release of MySQL 5.1 (5.1.34) will be the last MySQL 5.1 release with support for AIX 5.2. For more information, see the March 24, 2009 note at MySQL Product Support EOL Announcements.
Functionality Added or Changed
Performance:
The query cache now checks whether a
SELECT statement begins with
SQL_NO_CACHE to determine whether it can skip
checking for the query result in the query cache. This is not
supported when SQL_NO_CACHE occurs within a
comment.
(Bug #37416)
The MD5 algorithm now uses the Xfree implementation. (Bug #42434)
mysql-test-run.pl now supports an
--experimental=
option. It enables you to specify a file that contains a list of
test cases that should be displayed with the file_name[ exp-fail
] code rather than [ fail ] if they
fail.
(Bug #42888)
Bugs Fixed
Partitioning: Several error messages relating to partitioned tables were incorrect or missing. (Bug #36001)
Partitioning: A duplicate key error raised when inserting into a partitioned table using a different error code from that returned by such an error raised when inserting into a table that was not partitioned. (Bug #38719)
References: See also Bug #28842.
Replication:
When binlog_format was set to
STATEMENT, a statement unsafe for
statement-based logging caused an error or warning to be issued
even if sql_log_bin was set to
0.
(Bug #41980)
Replication:
When using MIXED replication format and
temporary tables were created in statement-based mode, but a
later operation in the same session caused a switch to row-based
mode, the temporary tables were not dropped on the slave at the
end of the session.
(Bug #40013)
References: See also Bug #43046. This bug was introduced by Bug #20499.
Replication:
If --secure-file-priv was set on
the slave, it was unable to execute
LOAD DATA
INFILE statements sent from the master when using
mixed-format or statement-based replication.
As a result of this fix, this security restriction is now
ignored on the slave in such cases; instead the slave checks
whether the files were created and should be read by the slave
in its --slave-load-tmpdir.
(Bug #38174)
Replication:
The server SQL mode in effect when a stored procedure was
created was not retained in the binary log. This could cause a
CREATE PROCEDURE statement that
succeeded on the master to fail on the slave.
This issue was first noticed when a stored procedure was created
when ANSI_QUOTES was in effect
on the master, but could possibly cause failed
CREATE PROCEDURE statements and
other problems on the slave when using other server SQL modes as
well.
(Bug #39526)
Replication:
When using the MIXED replication format,
UPDATE and
DELETE statements that searched
for rows where part of the key had nullable
BIT columns failed. This occurred
because operations that inserted the data were replicated as
statements, but UPDATE and
DELETE statements affecting the
same data were replicated using row-based format.
This issue did not occur when using statement-based replication (only) or row-based replication (only). (Bug #39753)
References: See also Bug #39648.
Replication: Server IDs greater than 2147483647 (232 – 1) were represented by negative numbers in the binary log. (Bug #37313)
Replication:
When its disk becomes full, a replication slave may wait while
writing the binary log, relay log or
MyISAM tables, continuing after
space has been made available. The error message provided in
such cases was not clear about the frequency with which checking
for free space is done (once every 60 seconds), and how long the
server waits after space has been freed before continuing (also
60 seconds); this caused users to think that the server had
hung.
These issues have been addressed by making the error message clearer, and dividing it into two separate messages:
The error message Disk is full writing
'filename' (Errcode:
error_code). Waiting for someone
to free space... (Expect up to 60 secs delay for server to
continue after freeing disk space) is printed
only once.
The warning Retry in 60 secs, Message reprinted in 600 secs is printed once every for every 10 times that the check for free space is made; that is, the check is performed once each 60 seconds, but the reminder that space needs to be freed is printed only once every 10 minutes (600 seconds).
(Bug #22082)
Replication:
The statements
DROP PROCEDURE
IF EXISTS and
DROP FUNCTION IF
EXISTS were not written to the binary log if the
procedure or function to be dropped did not exist.
(Bug #13684)
References: See also Bug #25705.
The IBM DB2i storage engine has been added to this release for
the IBM i Series platform. For more information, see
The IBMDB2I Storage Engine.
(Bug #44217)
MySQL 5.1 crashed with index merge algorithm and merge tables.
A query in the MyISAM merge table caused a crash if the index merge algorithm was being used. (Bug #40675)
An earlier bug fix resulted in the problem that the
InnoDB plugin could not be used with a server
that was compiled with the built-in InnoDB.
To handle this two changes were made:
The server now supports an
--ignore-builtin-innodb
option that causes the server to behave as if the built-in
InnoDB is not present. This option causes
other InnoDB options not to be
recognized.
For the INSTALL PLUGIN
statement, the server reads option
(my.cnf) files just as during server
startup. This enables the plugin to pick up any relevant
options from those files. Consequently, a plugin no longer
is started with each option set to its default value.
Because of this change, it is possible to add plugin options
to an option file even before loading a plugin (if the
loose prefix is used). It is also
possible to uninstall a plugin, edit
my.cnf, and install the plugin again.
Restarting the plugin this way enables it to the new option
values without a server restart.
InnoDB Plugin versions 1.0.4 and higher
will take advantage of this bug fix. Although the
InnoDB Plugin is source code compatible
with multiple MySQL releases, a given binary
InnoDB Plugin can be used only with a
specific MySQL release. When InnoDB Plugin
1.0.4 is released, it is expected to be compiled for MySQL
5.1.34. For 5.1.33, you can use InnoDB
Plugin 1.0.3, but you must build from source.
(Bug #42610)
References: This bug was introduced by Bug #29263.
The innodb_log_arch_dir system variable is no
longer available but was present in some of the sample option
files included with MySQL distributions (such as
my-huge.cnf). The line was present as a
comment but uncommenting it would cause server startup failure
so the line has been removed.
(Bug #38249)
On Windows, the _PC macro in
my_global.h was causing problems for modern
compilers. It has been removed because it is no longer used.
(Bug #34309)
On Windows, starting the server with an invalid value for
innodb_flush_method caused a
crash.
(Bug #40757)
For DROP FUNCTION with names that
were qualified with a database name, the database name was
handled in case-sensitive fashion even with
lower_case_table_names set to
1.
(Bug #33813)
Parsing of the optional microsecond component of
DATETIME values did not fail
gracefully when that component width was larger than the
permitted six places.
(Bug #42146)
An argument to the MATCH()
function that was an alias for an expression other than a column
name caused a server crash.
(Bug #36737)
mysqldumpslow parsed the
--debug and
--verbose options
incorrectly.
(Bug #42027)
Tables could enter open table cache for a thread without being properly cleaned up, leading to a server crash. (Bug #42419)
On 32-bit Windows, mysqld could not use large buffers due to a 2GB user mode address limit. (Bug #43082)
Queries that used the loose index scan access method could return no rows. (Bug #41610)
Use of SELECT * permitted users with rights
to only some columns of a view to access all columns.
(Bug #41354)
The server did not robustly handle problems hang if a table
opened with HANDLER needed to be
re-opened because it had been altered to use a different storage
engine that does not support
HANDLER. The server also failed
to set an error if the re-open attempt failed. These problems
could cause the server to crash or hang.
(Bug #41110, Bug #41112)
mysqldump --compatible=mysql40 emitted
statements referring to the
character_set_client system
variable, which is unknown before MySQL 4.1. Now the statements
are enclosed in version-specific comments.
(Bug #33550)
For a view that references a table in another database, mysqldump wrote the view name qualified with the current database name. This makes it impossible to reload the dump file into a different database. (Bug #40345)
perror did not produce correct output for error codes 153 to 163. (Bug #39370)
Comparisons between row constructors, such as (a, b) =
(c, d) resulted in unnecessary Illegal mix of
collations errors for string columns.
(Bug #37601)
For prepared statements, multi-byte character sets were not
taking into account when calculating
max_length for string values and
mysql_stmt_fetch() could return
truncated strings.
(Bug #41078)
Use of USE INDEX hints could cause
EXPLAIN EXTENDED to crash.
(Bug #43354)
For InnoDB tables, overflow in an
AUTO_INCREMENT column could cause a server
crash.
(Bug #43203)
stderr should be unbuffered, but when the
server redirected stderr to a file, it became
buffered.
(Bug #42790)
For InnoDB tables, spurious duplicate-key
errors could occur when inserting into an
AUTO_INCREMENT column.
(Bug #42714)
For InnoDB tables, inserting into
floating-point AUTO_INCREMENT columns failed.
(Bug #42400)
The InnoDB
btr_search_drop_page_hash_when_freed()
function had a race condition.
(Bug #42279)
The DATA_TYPE column of the
INFORMATION_SCHEMA.COLUMNS table
displayed the UNSIGNED attribute for
floating-point data types. (The column should contain only the
data type name.)
(Bug #42758)
mysqldump included views that were excluded
with the --ignore-table
option.
(Bug #42635)
With the ONLY_FULL_GROUP_BY
SQL mode enabled, some legal queries failed.
(Bug #42567)
The error message for a too-long column comment was
Unknown error rather than a more appropriate
message.
(Bug #41465)
SELECT statements executed
concurrently with INSERT
statements for a MyISAM table could cause
incorrect results to be returned from the query cache.
(Bug #41098)
Deprecation warnings that referred to MySQL 5.2 were changed to refer to MySQL 6.0. (Bug #41077)
--help output for
myisamchk did not list the
--HELP option.
(Bug #38103)
The event, general_log,
and slow_log tables in the
mysql database store
server_id values, but did not
use an UNSIGNED column and thus were not able
to store the full range of ID values.
(Bug #36540)
For user-defined variables in a query result, incorrect length values were returned in the result metadata. (Bug #41030)
Several functions in libmysqld called
exit() when an error occurred rather than
returning an error to the caller.
(Bug #39289)
On platforms where long and pointer variables have different
sizes, MyISAM could copy key statistics
incorrectly, resulting in a server crash or incorrect
cardinality values.
(Bug #40321)
If a user created a view that referenced tables for which the user had disjoint privileges, an assertion failure occurred. (Bug #37191)
DELETE tried to acquire write
(not read) locks for tables accessed within a subquery of the
WHERE clause.
(Bug #39843)
Table temporary scans were slower than necessary due to use of
mmap rather than caching, even with the
myisam_use_mmap system variable
disabled.
(Bug #40634)
With strict SQL mode enabled, setting a system variable to an out-of-bounds value caused an assertion failure. (Bug #40657)
On 64-bit debug builds, code in safemalloc
resulted in errors due to use of a 32-bit value for 64-bit
allocations.
(Bug #43885)
For InnoDB tables, there was a race condition
for ALTER TABLE,
OPTIMIZE TABLE,
CREATE INDEX, and
DROP INDEX operations when
periodically checking whether table copying can be committed.
(Bug #42152)
In InnoDB recovery after a server crash,
table lookup could fail and corrupt the data dictionary cache.
(Bug #42075)
In InnoDB recovery after a server crash,
rollback of a transaction that updated a column from
NULL to NULL could cause
another crash.
(Bug #41571)
Setting a savepoint with the same name as an existing savepoint
incorrectly deleted any other savepoints that had been set in
the meantime. For example, setting savepoints named
a, b,
c, b resulted in
savepoints a, b, rather
than the correct savepoints a,
c, b.
(Bug #38187)
make distcheck failed to properly handle
subdirectories of storage/ndb.
(Bug #43614)
If the tables underlying a MERGE
table had a primary key but the
MERGE table itself did not,
inserting a duplicate row into the
MERGE table caused a server crash.
(Bug #41305)
mysqld --help did not work as
root.
(Bug #30261)
Allocation of stack space for error messages could be too small on HP-UX, leading to stack overflow crashes. (Bug #21476)
SHOW TABLE STATUS could fail to
produce output for tables with non-ASCII characters in their
name.
(Bug #25830)
ROUND() sometimes returned
different results on different platforms.
(Bug #15936)
SHOW PRIVILEGES listed the
CREATE ROUTINE privilege as
having a context of Functions,Procedures, but
it is a database-level privilege.
(Bug #30305)
Floating-point numbers could be handled with different numbers of digits depending on whether the text or prepared-statement protocol was used. (Bug #21205)
The mysql client mishandled input parsing if
a delimiter command was not first on the
line.
(Bug #31060)
Use of MBR spatial functions such as
MBRTouches() with columns of
InnoDB tables caused a server crash rather
than an error.
(Bug #31435)
CHECK TABLE,
REPAIR TABLE,
ANALYZE TABLE, and
OPTIMIZE TABLE erroneously
reported a table to be corrupt if the table did not exist or the
statement was terminated with
KILL.
(Bug #29458)
Detection by configure of several functions
such as setsockopt(),
bind(), sched_yield(), and
gtty() could fail.
(Bug #31506)
Incorrect length metadata could be returned for LONG
TEXT columns when a multi-byte server character set
was used.
(Bug #19829)
