End of Product Lifecycle. Active development and support for MySQL database server versions 3.23, 4.0, and 4.1 has ended. However, for MySQL 4.0 and 4.1, there is still extended support available. For details, see http://www.mysql.com/company/legal/lifecycle/#calendar. According to the MySQL Lifecycle Policy (see http://www.mysql.com/company/legal/lifecycle/#policy), only Security and Severity Level 1 issues will still be fixed for MySQL 4.0 and 4.1. Please consider upgrading to a recent version (MySQL 5.0 or 5.1).
This is a bugfix release for the current production release family. This version was released as MySQL Classic 5.0.25 to commercial customers only.
This section documents all changes and bug fixes that have been applied since the last official MySQL release. If you would like to receive more fine-grained and personalized update alerts about fixes that are relevant to the version and features you use, please consider subscribing to MySQL Enterprise (a commercial MySQL offering). For more details please see http://www.mysql.com/products/enterprise.
Functionality added or changed:
MySQL now can do stack dumps on x86_64 and
i386/NPTL systems.
(Bug#21250)
The mysqld and mysqlmanager manpages have been reclassified from volume 1 to volume 8. (Bug#21220)
InnoDB now honors IGNORE
INDEX. Perviously using IGNORE
INDEX in cases where an index sort would be slower
than a filesort had no effect when used with
InnoDB tables.
This fix was reverted in MySQL 5.0.26, and a new fix made in MySQL 5.0.40.
TIMESTAMP columns that are NOT
NULL now are reported that way by SHOW
COLUMNS and INFORMATION_SCHEMA.
(Bug#20910)
The MySQL distribution now compiles on UnixWare 7.13. (Bug#20190)
configure now defines the symbol
DBUG_ON in config.h to
indicate whether the source tree is configured to be compiled
with debugging support.
(Bug#19517)
mysql_upgrade no longer reads the
[client] option file group because it is not
a client and did not understand client options such as
host. Now it reads only the
[mysql_upgrade] group.
(Bug#19452)
For mysqlshow, if a database name argument
contains wildcard characters (such as “
_ ”) but matches a single database
name exactly, treat the name as a literal name. This allows a
command such as mysqlshow information_schema
work without having to escape the wildcard character.
(Bug#19147)
On Windows, typing Control-C while a query was running caused the mysql client to crash. Now it causes mysql to attempt to kill the current statement. If this cannot be done, or Control-C is typed again before the statement is killed, mysql exits. (In other words, mysql's behavior with regard to Control-C is now the same as it is on Unix platforms.) (Bug#17926)
See also Bug#1989
The VIEW_DEFINITION column of the
INFORMATION_SCHEMA VIEWS
table now contains information about the view algorithm.
(Bug#16832)
The bundled yaSSL library licensing has added a FLOSS exception
similar to MySQL to resolve licensing incompatibilities with
MySQL. (See the
extra/yassl/FLOSS-EXCEPTIONS file in a
MySQL source distribution for details.)
(Bug#16755)
Table comments longer than 60 characters and column comments longer than 255 characters were truncated silently. Now a warning is issued, or an error in strict mode. (Bug#13934)
The mysql client used the default character
set if it automatically reconnected to the server, which is
incorrect if the character set had been changed. To enable the
character set to remain synchronized on the client and server,
the mysql command charset
(or \C) that changes the default character
set and now also issues a SET NAMES
statement. The changed character set is used for reconnects.
(Bug#11972)
If a DROP VIEW statement named multiple
views, it stopped with an error if a non-existent view was named
and did not drop the remaining views. Now it continues on and
reports an error at the end, similar to DROP
TABLE.
(Bug#11551)
The server now issues a warning if it removes leading spaces from an alias. (Bug#10977)
For a successful dump, mysqldump now writes a SQL comment to the end of the dump file in the following format:
-- Dump completed on YYYY-MM-DD hh:mm:ss
For spatial data types, the server formerly returned these as
VARSTRING values with a binary collation. Now
the server returns spatial values as BLOB
values.
(Bug#10166)
A new system variable, lc_time_names,
specifies the locale that controls the language used to display
day and month names and abbreviations. This variable affects the
output from the DATE_FORMAT(),
DAYNAME() and
MONTHNAME() functions. See
Section 9.7, “MySQL Server Locale Support”.
Using --with-debug to configure MySQL with
debugging support enables you to use the
--debug="d,parser_debug" option when
you start the server. This causes the Bison parser that is used
to process SQL statements to dump a parser trace to the server's
standard error output. Typically, this output is written to the
error log.
The bundled yaSSL library was upgraded to version 1.3.7.
Bugs fixed:
Security Fix:
A stored routine created by one user and then made accessible to
a different user using GRANT EXECUTE could be
executed by that user with the privileges of the routine's
definer.
(Bug#18630, CVE-2006-4227)
Security Fix: On Linux, and possibly other platforms using case-sensitive filesystems, it was possible for a user granted rights on a database to create or access a database whose name differed only from that of the first by the case of one or more letters. (Bug#17647, CVE-2006-4226)
MySQL Cluster: Packaging:
The ndb_mgm program was included in both the
MySQL-ndb-tools and
MySQL-ndb-management RPM packages, resulting
in a conflict if both were installed. Now
ndb_mgm is included only in
MySQL-ndb-tools.
(Bug#21058)
MySQL Cluster:
Setting TransactionDeadlockDetectionTimeout
to a value greater than 12000 would cause scans to deadlock,
time out, fail to release scan records, until the cluster ran
out of scan records and stopped processing.
(Bug#21800)
MySQL Cluster: A memory leak occurred when running ndb_mgm -e "SHOW". (Bug#21670)
MySQL Cluster: The server provided a non-descriptive error message when encountering a fatally corrupted REDO log. (Bug#21615)
MySQL Cluster: A partial rollback could lead to node restart failures. (Bug#21536)
MySQL Cluster: The failure of a unique index read due to an invalid schema version could be handled incorrectly in some cases, leading to unpredictable results. (Bug#21384)
MySQL Cluster: In a cluster with more than 2 replicas, a manual restart of one of the data nodes could fail and cause the other nodes in the same node group to shut down. (Bug#21213)
MySQL Cluster:
Some queries involving joins on very large
NDB tables could crash the MySQL server.
(Bug#21059)
MySQL Cluster: Restarting a data node while DDL operations were in progress on the cluster could cause other data nodes to fail. This could also lead to mysqld hanging or crashing under some circumstances. (Bug#21017, Bug#21050)
MySQL Cluster: In some situations with a high disk-load, writing of the redo log could hang, causing a crash with the error message GCP STOP detected. (Bug#20904)
MySQL Cluster:
When the redo buffer ran out of space, a Pointer too
large error was raised and the cluster could become
unusable until restarted with --initial.
(Bug#20892)
MySQL Cluster: A vague error message was returned when reading both schema files during a restart of the cluster. (Bug#20860)
MySQL Cluster:
Incorrect values were inserted into
AUTO_INCREMENT columns of tables restored
from a cluster backup.
(Bug#20820)
MySQL Cluster: When attempting to restart the cluster following a data import, the cluster failed during Phase 4 of the restart with Error 2334: Job buffer congestion. (Bug#20774)
MySQL Cluster:
REPLACE statements did not work correctly on
an NDB table having both a primary key and a
unique key. In such cases, proper values were not set for
columns which were not explicitly referenced in the statement.
(Bug#20728)
MySQL Cluster:
The server did not honor the value set for
ndb_cache_check_time in the
my.cnf file.
(Bug#20708)
MySQL Cluster: ndb_size.pl and ndb_error_reporter were missing from RPM packages. (Bug#20426)
MySQL Cluster:
Running ndbd
--nowait-nodes=
where id id was the node ID of a node
that was already running would fail with an invalid error
message.
(Bug#20419)
MySQL Cluster:
(Direct APIs): NdbScanOperation::readTuples()
and NdbIndexScanOperation::readTuples()
ignored the batch parameter.
(Bug#20252)
MySQL Cluster: A node failure during a scan could sometime cause the node to crash when restarting too quickly following the failure. (Bug#20197)
MySQL Cluster:
It was possible to use port numbers greater than 65535 for
ServerPort in the
config.ini file.
(Bug#19164)
MySQL Cluster: Under certain circumstances, a node that was shut down then restarted could hang during the restart. (Bug#18863)
MySQL Cluster: Trying to create or drop a table while a node was restarting caused the node to crash. This is now handled by raising an error. (Bug#18781)
MySQL Cluster: The server failed with a non-descriptive error message when out of data memory. (Bug#18475)
MySQL Cluster:
For NDB and possibly
InnoDB tables, a BEFORE
UPDATE trigger could insert incorrect values.
(Bug#18437)
MySQL Cluster:
SELECT ... FOR UPDATE failed to lock the
selected rows.
(Bug#18184)
MySQL Cluster:
perror did not properly report
NDB error codes.
(Bug#16561)
MySQL Cluster:
A Cluster whose storage nodes were installed from the
MySQL-ndb-storage- RPMs could not perform *
CREATE or
ALTER operations that made use of non-default
character sets or collations.
(Bug#14918)
MySQL Cluster:
The management client ALL STATUS command
could sometimes report the status of some data nodes
incorrectly.
(Bug#13985)
MySQL Cluster: An issue that arose from a patch for Bug#19852 made in MySQL 5.0.23 was corrected. (See Section E.1.6, “Changes in MySQL 5.0.23 (Not released)”.)
Cluster Replication:
In some cases, a large number of MySQL servers sending requests
to the cluster simultaneously could cause the cluster to crash.
This could also be triggered by many NDB API
clients making simultaneous event subscriptions or
unsubscriptions.
(Bug#20683)
Cluster API:
Invoking the MGM API function
ndb_mgm_listen_event() caused a memory leak.
(Bug#21671)
Cluster API:
The MGM API function ndb_logevent_get_fd()
was not implemented.
(Bug#21129)
Some Linux-x86_64-icc packages (of previous releases) mistakenly contained 32-bit binaries. Only ICC builds are affected, not gcc builds. Solaris and FreeBSD x86_64 builds are not affected. (Bug#22238)
Running SHOW MASTER LOGS at the same time as
binary log files were being switched would cause
mysqld to hang.
(Bug#21965)
libmysqlclient defined a symbol
BN_bin2bn which belongs to OpenSSL. This
could break applications that also linked against OpenSSL's
libcrypto library. The fix required
correcting an error in a build script that was failing to add
rename macros for some functions.
(Bug#21930)
character_set_results can be
NULL to signify “no conversion,”
but some code did not check for NULL,
resulting in a server crash.
(Bug#21913)
A NUL byte within a prepared statement string
caused the rest of the string not to be written to the query
log, allowing logging to be bypassed.
(Bug#21813)
COUNT(*) queries with
ORDER BY and LIMIT could
return the wrong result.
This problem was introduced by the fix for Bug#9676, which
limited the rows stored in a temporary table to the
LIMIT clause. This optimization is not
applicable to non-group queries with aggregate functions. The
current fix disables the optimization in such cases.
INSERT ... SELECT sometimes generated a
spurious Column count doesn't match value
count error.
(Bug#21774)
EXPORT_SET() did not accept
arguments with coercible character sets.
(Bug#21531)
mysqldump incorrectly tried to use
LOCK TABLES for tables in the
INFORMATION_SCHEMA database.
(Bug#21527)
Memory overruns could occur for certain kinds of subqueries. (Bug#21477)
A DATE can be represented as an integer (such
as 20060101) or as a string (such as
'2006.01.01'). When a DATE
(or TIME) column is compared in one
SELECT against both representations, constant
propagation by the optimizer led to comparison of
DATE as a string against
DATE as an integer. This could result in
integer comparisons such as 2006 against
20060101, erroneously producing a false
result.
(Bug#21475)
Adding ORDER BY to a SELECT
DISTINCT( query could
produce incorrect results.
(Bug#21456)expr)
Database and table names have a maximum length of 64 characters (even if they contain multi-byte characters), but were truncated to 64 bytes.
This fix was reverted in MySQL 5.0.26.
With max_sp_recursion set to 0, a stored
procedure that executed a SHOW CREATE
PROCEDURE statement for itself triggered a recursion
limit exceeded error, though the statement involves no
recursion.
(Bug#21416)
On 64-bit Windows, a missing table generated error 1017, not the correct value of 1146. (Bug#21396)
The optimizer sometimes produced an incorrect row-count estimate
after elimination of const tables. This
resulted in choosing extremely inefficient execution plans in
same cases when distribution of data in joins were skewed.
(Bug#21390)
A query result could be sorted improperly when using
ORDER BY for the second table in a join.
(Bug#21302)
Query results could be incorrect if the WHERE
clause contained t., where
key_part
NOT IN (val_list)val_list is a list of more than 1000
constants.
(Bug#21282)
For user-defined functions created with CREATE
FUNCTION, the DEFINER clause is not
legal, but no error was generated.
(Bug#21269)
The SELECT privilege was required for an
insert on a view, instead of the INSERT
privilege.
(Bug#21261)
This regression was introduced by Bug#20989
Subqueries on INFORMATION_SCHEMA tables could
erroneously return an empty result.
(Bug#21231)
mysql_upgrade created temporary files in a possibly insecure way. (Bug#21224)
When DROP DATABASE or SHOW OPEN
TABLES was issued while concurrently in another
connection issuing DROP TABLE,
RENAME TABLE, CREATE TABLE
LIKE or any other statement that required a name lock,
the server crashed.
(Bug#21216, Bug#19403)
The --master-data option for
mysqldump requires certain privileges, but
mysqldump generated a truncated dump file
without producing an appropriate error message or exit status if
the invoking user did not have those privileges.
(Bug#21215)
Some prepared statements caused a server crash when executed a second time. (Bug#21166)
The optimizer assumed that if (a=x AND b=x)
is true, (a=x AND b=x) AND a=b is also true.
But that is not always so if a and
b have different data types.
(Bug#21159)
SHOW INNODB STATUS contained some duplicate
output.
(Bug#21113)
InnoDB was slow with more than 100,000
.idb files.
(Bug#21112)
Performing an INSERT on a view that was
defined using a SELECT that specified a
collation and a column alias caused the server to crash .
(Bug#21086)
ALTER VIEW did not retain existing values of
attributes that had been originally specified but were not
changed in the ALTER VIEW statement.
(Bug#21080)
For InnoDB tables, the server could crash
when executing NOT IN(...) subqueries.
(Bug#21077)
The myisam_stats_method variable was
mishandled when set from an option file or on the command line.
(Bug#21054)
With query_cache_type set to 0,
RESET QUERY CACHE was very slow and other
threads were blocked during the operation. Now a cache reset is
faster and non-blocking.
(Bug#21051)
mysql crashed for very long arguments to the
connect command.
(Bug#21042)
A query using WHERE did not
return consistent results on successive invocations. The
column =
constant OR
column IS NULLcolumn in each part of the
WHERE clause could be either the same column,
or two different columns, for the effect to be observed.
(Bug#21019)
Performance during an import on a table with a trigger that called a stored procedure was severely degraded. This issue first arose in MySQL 5.0.18. (Bug#21013)
A query of the form shown here caused the server to crash:
SELECT * FROM t1 NATURAL JOIN (
t2 JOIN (
t3 NATURAL JOIN t4,
t5 NATURAL JOIN t6
)
ON (t3.id3 = t2.id3 AND t5.id5 = t2.id5)
);
STR_TO_DATE() sometimes would
return NULL if the %D
format specifier was not the last specifier in the format
string.
(Bug#20987)
A query using WHERE NOT
( yielded a
different result from the same query using the same
column < ANY
(subquery))column and
subquery with WHERE
(.
(Bug#20975)column > ANY
(subquery))
In debugging mode, mysqld printed
server_init rather than
network_init during network initialization.
(Bug#20968)
Under certain circumstances,
AVG(
returned a value but
key_val)MAX(
returned an empty set due to incorrect application of
key_val)MIN()/MAX() optimization.
(Bug#20954)
On Windows, mysql_upgrade.exe could not find mysqlcheck.exe. (Bug#20950)
Use of zero-length variable names caused a server crash. (Bug#20908)
The server crashed when using the range access method to execut
a subquery with a ORDER BY DESC clause.
(Bug#20869)
For certain queries, the server incorrectly resolved a reference to an aggregate function and crashed. (Bug#20868)
Using aggregate functions in subqueries yielded incorrect
results under certain circumstances due to incorrect application
of
MIN()/MAX()
optimization.
(Bug#20792)
If a column definition contained a character set declaration,
but a DEFAULT value began with an introducer,
the introducer character set was used as the column character
set.
(Bug#20695)
Multiplication of DECIMAL values could
produce incorrect fractional part and trailing garbage caused by
signed overflow.
(Bug#20569)
Users who had the SHOW VIEW privilege for a
view and privileges on one of the view's base tables could
not see records in INFORMATION_SCHEMA tables
relating to the base table.
(Bug#20543)
The MD5(),
SHA1(), and
ENCRYPT() functions should
return a binary string, but the result sometimes was converted
to the character set of the argument.
MAKE_SET() and
EXPORT_SET() now use the correct
character set for their default separators, resulting in
consistent result strings which can be coerced according to
normal character set rules.
(Bug#20536)
A subquery that contained LIMIT
could return more than
one row.
(Bug#20519)N,1
Creation of a view as a join of views or tables could fail if the views or tables are in different databases. (Bug#20482)
SELECT statements using GROUP
BY against a view could have missing columns in the
output when there was a trigger defined on one of the base
tables for the view.
(Bug#20466)
CREATE PROCEDURE, CREATE
FUNTION, CREATE TRIGGER, and
CREATE VIEW statements containing multi-line
comments (/* ... */) could not be replicated.
(Bug#20438)
For connections that required a SUBJECT
value, a check was performed to verify that the value was
correct, but the connection was not refused if not.
(Bug#20411)
Some user-level errors were being written to the server's error log, which is for server errors. (Bug#20402)
perror crashed on Solaris due to
NULL return value of
strerror() system call.
(Bug#20145)
For mysql, escaping with backslash sometimes did not work. (Bug#20103)
Use of MIN() or
MAX() with GROUP
BY on a ucs2 column could cause a
server crash.
(Bug#20076)
mysqld --flush failed to flush
MyISAM table changes to disk following an
UPDATE statement for which no updated column
had an index.
(Bug#20060)
A user-defined function that is called on each row of a returned
result set, could receive an in_null state
that is set, if it was set previously. Now, the
is_null state is reset to false before each
invocation of a UDF.
(Bug#19904)
The query command for
mysqltest did not work.
(Bug#19890)
When executing a SELECT with ORDER
BY on a view that is constructed from a
SELECT statement containing a stored
function, the stored function was evaluated too many times.
(Bug#19862)
The first time a user who had been granted the CREATE
ROUTINE privilege used that privilege to create a
stored function or procedure, the Password
column in that user's row in the mysql.user
table was set to NULL.
(Bug#19857)
For TIME_FORMAT(), the
%H and %k format
specifiers can return values larger than two digits (if the hour
is greater than 99), but for some query results that contained
three-character hours, column values were truncated.
(Bug#19844)
Using SELECT on a corrupt
MyISAM table using the dynamic record format
could cause a server crash.
(Bug#19835)
Using cursors with READ COMMITTED isolation
level could cause InnoDB to crash.
(Bug#19834)
The yaSSL library bundled with libmysqlclient
had some conflicts with OpenSSL. Now macros are used to rename
the conflicting symbols to have a prefix of
ya.
(Bug#19810)
On 64-bit systems, use of the cp1250
character set with a primary key column in a
LIKE clause caused a server crash for
patterns having letters in the range 128..255.
(Bug#19741)
DESCRIBE returned the type
BIGINT for a column of a view if the column
was specified by an expression over values of the type
INT.
(Bug#19714)
An issue with yaSSL prevented Connector/J clients from connecting to the server using a certificate. (Bug#19705)
A cast problem caused incorrect results for prepared statements that returned float values when MySQL was compiled with gcc 4.0. (Bug#19694)
The mysql_list_fields() C API
function returned the incorrect table name for views.
(Bug#19671)
If a query had a condition of the form
, which participated in equality propagation and also
was used for tableX.key
=
tableY.key
ref access, then early
ref-access NULL filtering
was not peformed for the condition. This could make query
execution slower.
(Bug#19649)
Repeated DROP TABLE statements in a stored
procedure could sometimes cause the server to crash.
(Bug#19399)
When not running in strict mode, the server failed to convert
the invalid years portion of a DATE or
DATETIME value to '0000'
when inserting it into a table.
This fix was reverted in MySQL 5.0.40.
See also Bug#25301
The final parenthesis of a CREATE INDEX
statement occurring in a stored procedure was omitted from the
binary log when the stored procedure was called.
(Bug#19207)
A SELECT with a subquery that was bound to
the outer query over multiple columns returned different results
when a constant was used instead of one of the dependant
columns.
(Bug#18925)
Setting myisam_repair_threads caused any
repair operation on a MyISAM table to fail to
update the cardinality of indexes, instead making them always
equal to 1.
(Bug#18874)
FEDERATED tables raised invalid duplicate key
errors when attempting on one server to insert rows having the
same primary key values as rows that had been deleted from the
linked table on the other server.
(Bug#18764)
The implementation for
UNCOMPRESS() did not indicate
that it could return NULL, causing the
optimizer to do the wrong thing.
(Bug#18539)
Using > ALL with subqueries that return no
rows yielded incorrect results under certain circumstances due
to incorrect application of
MIN()/MAX()
optimization.
(Bug#18503)
Referring to a stored function qualified with the name of one database and tables in another database caused a “table doesn't exist” error. (Bug#18444)
Triggers on tables in the mysql database
caused a server crash. Triggers for tables in this database now
are disallowed.
(Bug#18361, Bug#18005)
The length of the pattern string prefix for
LIKE operations was calculated incorrectly
for multi-byte character sets. As a result, the scanned range
was wider than necessary if the prefix contained any multi-byte
characters, and rows could be missing from the result set.
(Bug#18359, Bug#16674)
Multiple invocations of the
REVERSE() function could return
different results.
(Bug#18243)
The optimizer did not take advantage of indexes on columns used
for the second or third arguments of
BETWEEN.
(Bug#18165)
For table-format output, mysql did not always calculate columns widths correctly for columns containing multi-byte characters in the column name or contents. (Bug#17939)
The character set was not being properly initialized for
CAST() with a type like
CHAR(2) BINARY, which resulted in incorrect
results or even a server crash.
(Bug#17903)
Checking a MyISAM table (using CHECK
TABLE) having a spatial index and only one row would
wrongly indicate that the table was corrupted.
(Bug#17877)
A stored procedure that created and invoked a prepared statement was not executed when called in a mysqld init-file. (Bug#17843)
It is possible to create MERGE tables into
which data cannot be inserted (by not specifying a
UNION clause. However, when an insert was
attempted, the error message was confusing. Now an error occurs
indicating that the table is read-only.
(Bug#17766)
Attempting to insert a string of greater than 4096 bytes into a
FEDERATED table resulted in the error
ERROR 1296 (HY000) at line 2: Got error 10000 'Error
on remote system: 1054: Unknown column
'string-value' from
FEDERATED. This error was raised regardless of the
type of column involved (VARCHAR,
TEXT, and so on.)
(Bug#17608)
Views could not be updated within a stored function or trigger. (Bug#17591)
Use of the --prompt option or
prompt command caused
mysql to be unable to connect to the Instance
Manager.
(Bug#17485)
N'xxx' and _utf8'xxx' were
not treated as equivalent because N'xxx'
failed to unescape backslashes (\) and
doubled apostrophe/single quote characters
('').
(Bug#17313)
Use of the join cache in favor of an index for ORDER
BY operations could cause incorrect result sorting.
(Bug#17212)
The PASSWORD() function returned
invalid results when used in some UNION
queries.
(Bug#16881)
ORDER BY RAND() LIMIT 1 always set a user
variable to the last possible value from the table.
(Bug#16861)
When performing a
GROUP_CONCAT(), the server
transformed BLOB columns
VARCHAR columns, which could cause erroneous
results when using Connector/J and possibly other MySQL APIs.
(Bug#16712)
Stored procedures did not use the character set defined for the database in which they were created. (Bug#16676)
Some server errors were not reported to the client, causing both to try to read from the connection until a hang or crash resulted. (Bug#16581)
On Windows, a definition for
mysql_set_server_option() was
missing from the C client library.
(Bug#16513)
Updating a column of a FEDERATED table to
NULL sometimes failed.
(Bug#16494)
For SELECT ... FOR UPDATE statements that
used DISTINCT or GROUP BY
over all key parts of a unique index (or primary key), the
optimizer unnecessarily created a temporary table, thus losing
the linkage to the underlying unique index values. This caused a
Result set not updatable error. (The
temporary table is unnecessary because under these circumstances
the distinct or grouped columns must also be unique.)
(Bug#16458)
Using ANY with “non-table”
subqueries such as SELECT 1 yielded incorrect
results under certain circumstances due to incorrect application
of
MIN()/MAX()
optimization.
(Bug#16302)
A subquery in the WHERE clause of the outer
query and using IN and GROUP
BY returned an incorrect result.
(Bug#16255)
A query could produce different results with and without and
index, if the WHERE clause contained a range
condition that used an invalid DATETIME
constant.
(Bug#16249)
TIMESTAMPDIFF() examined only
the date and ignored the time when the requested difference unit
was months or quarters.
(Bug#16226)
Using tables from MySQL 4.x in MySQL 5.x, in particular those
with VARCHAR fields and using INSERT
DELAYED to update data in the table would result in
either data corruption or a server crash.
(Bug#16218, Bug#17294, Bug#16611)
The value returned by a stored function returning a string value was not of the declared character set. (Bug#16211)
The
index_merge/Intersection
optimizer could experience a memory overrun when the number of
table columns covered by an index was sufficiently large,
possibly resulting in a server crash.
(Bug#16201)
DECIMAL columns were handled incorrectly in
two respects :
When the precision of the column was too small for the value. In this case, the original value was returned instead of an error.
When the scale of the column was set to 0. In this case, the value. In this case, the value was treated as though the scale had been defined as 2.
Certain queries having a WHERE clause that
included conditions on multi-part keys with more than 2 key
parts could produce incorrect results and send [Note]
Use_count: Wrong count for key at... messages to
STDERR.
(Bug#16168)
When a row was inserted through a view but did not specify a value for a column that had no default value in the base table, no warning or error occurred. Now a warning occurs, or an error in strict SQL mode. (Bug#16110)
When NOW() was used in a
BETWEEN clause of the
definition for a view, it was replaced with a constant in the
view.
(Bug#15950)
The C API failed to return a status message when invoking a stored procedure. (Bug#15752)
mysqlimport sends a set
@@character_set_database=binary statement to the
server, but this is not understood by pre-4.1 servers. Now
mysqlimport encloses the statement within a
/*!40101 ... */ comment so that old servers
will ignore it.
(Bug#15690)
For the CSV storage engine, memory-mapped
pages of the data file were not invalidated when new data was
appended to the file via traditional (file descriptor-based) I/O
primitives.
(Bug#15669)
SHOW GRANTS FOR CURRENT_USER did not return
definer grants when executed in DEFINER
context (such as within a stored prodedure defined with
SQL SECURITY DEFINER), it returned the
invoker grants.
(Bug#15298)
The --collation-server server option was being
ignored. With the fix for this problem, if you choose a
non-default character set with
--character-set-server, you should also use
--collation-server to specify the collation.
(Bug#15276)
The server crashed if it tried to access a
CSV table for which the data file had been
removed.
(Bug#15205)
Tables created with the FEDERATED storage
engine did not permit indexes using NULL
columns.
(Bug#15133)
When using tables containing VARCHAR columns
created under MySQL 4.1 with a 5.0 or later server, for some
queries the metadata sent to the client could have an empty
column name.
(Bug#14897)
CREATE TABLE ... SELECT statements that
selected GEOMETRY values resulted in a table
that contained BLOB columns, not
GEOMETRY columns.
(Bug#14807)
When setting a column to its implicit default value as the
result of inserting a NULL into a
NOT NULL column as part of a multi-row insert
or LOAD DATA operation, the server returned a
misleading warning message.
(Bug#14770)
The use of WHERE in col_name IS
NULLSELECT statements reset the
value of LAST_INSERT_ID() to
zero.
(Bug#14553)
Inserts into BIT columns of
FEDERATED tables did not work.
(Bug#14532)
Using SELECT and a table join while running a
concurrent INSERT operation would join
incorrect rows.
(Bug#14400)
Prepared statements caused general log and server memory corruption. (Bug#14346)
libmysqld produced some warnings to
stderr which could not be silenced. These
warnings now are suppressed.
(Bug#13717)
The Instance Manager allowed STOP INSTANCE to
be used on a server instance that was not running.
(Bug#12673)
For very complex SELECT statements could
create temporary tables that were too large, and for which the
temporary files were not removed, causing subsequent queries to
fail.
(Bug#11824)
USE did not refresh database privileges when
employed to re-select the current database.
(Bug#10979)
The type of the value returned by the
VARIANCE() function varied
according to the type of the input value. The function should
always return a DOUBLE value.
(Bug#10966)
The same trigger error message was produced under two conditions: The trigger duplicated an existing trigger name, or the trigger duplicated an existing combination of action and event. Now different messages are produced for the two conditions so as to be more informative. (Bug#10946)
CREATE USER did not respect the 16-character
username limit.
(Bug#10668)
A server or network failure with an open client connection would cause the client to hang even though the server was no longer available.
As a result of this change, the
MYSQL_OPT_READ_TIMEOUT and
MYSQL_OPT_WRITE_TIMEOUT options for
mysql_options() now apply to
TCP/IP connections on all platforms. Previously, they applied
only to Windows.
(Bug#9678)
INSERT INTO ... SELECT ... LIMIT 1 could be
slow because the LIMIT was ignored when
selecting candidate rows.
(Bug#9676)
The optimizer could produce an incorrect result after
AND with collations such as
latin1_german2_ci,
utf8_czech_ci, and
utf8_lithianian_ci.
(Bug#9509)
A stored procedure with a CONTINUE handler
that encountered an error continued to execute a statement that
caused an error, rather with the next statement following the
one that caused the error.
(Bug#8153)
For ODBC compatibility, MySQL supports use of WHERE
for
col_name IS NULLDATE or DATETIME columns
that are NOT NULL, to allow column values of
'0000-00-00' or '0000-00-00
00:00:00' to be selected. However, this was not
working for WHERE clauses in
DELETE statements.
(Bug#8143)
A user variable set to a value selected from an unsigned column was stored as a signed value. (Bug#7498)
The --with-collation option was not honored for
client connections.
(Bug#7192)
When the precision of the column was too small for the value. In this case, the original value was returned instead of an error.
When the scale of the column was set to 0. In this case, the value. In this case, the value was treated as though the scale had been defined as 2.

User Comments
Add your own comment.