MySQL 5.0.26, a new version of the popular Open Source Database
Management System, has been released.
This is part 2 of the related announcement, listing the changes of
5.0.25 over 5.0.24a which was the last published release of 5.0.
As 5.0.25 was not generally released, most users will get these changes
only with 5.0.26.
Please, see the other mail for the changes in 5.0.26 (over 5.0.25).
Changes in release 5.0.25 (15 September 2006)
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.
Functionality added or changed:
* For the mysql client, typing Control-C 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. Previously, Control-C caused mysql to exit in all
cases. (Bug#17926: http://bugs.mysql.com/17926; see also
* 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.
* 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.
* 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.
* The bundled yaSSL library was upgraded to version 1.3.7.
* 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.)
* The server now issues a warning if it removes leading spaces
from an alias. (Bug#10977: http://bugs.mysql.com/10977)
* The VIEW_DEFINITION column of the INFORMATION_SCHEMA VIEWS
table now contains information about the view algorithm.
* 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
* The mysqld and mysqlmanager manpages have been reclassified
from volume 1 to volume 8.
* configure now defines the symbol DBUG_ON in config.h to
indicate whether the source tree is configured to be compiled
with debugging support.
* The MySQL distribution now compiles on UnixWare 7.13.
* 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.
* 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: http://bugs.mysql.com/19452)
* MySQL now can do stack dumps on x86_64 and i386/NPTL systems.
* TIMESTAMP columns that are NOT NULL now are reported that way
by SHOW COLUMNS and INFORMATION_SCHEMA.
* 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. (CVE-2006-4226
* 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
* CREATE TABLE ... SELECT statements that selected GEOMETRY
values resulted in a table that contained BLOB columns, not
GEOMETRY columns. (Bug#14807: http://bugs.mysql.com/14807)
* 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.
* A query result could be sorted improperly when using ORDER BY
for the second table in a join.
* EXPORT_SET() did not accept arguments with coercible character
sets. (Bug#21531: http://bugs.mysql.com/21531)
* 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.
* The index_merge/Intersection optimizer could have a memory
overrrun when the number of table columns covered by an index
is sufficiently large, possibly resulting in a server crash.
* 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.
* 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: http://bugs.mysql.com/9509)
* Database and table names have a maximum length of 64
characters (even if they contain multi-byte characters), but
were being truncated to 64 bytes.
* 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: http://bugs.mysql.com/21913)
* InnoDB was slow with more than 100,000 .idb files.
* SHOW INNODB STATUS contained some duplicate output.
* Using cursors with READ COMMITTED isolation level could cause
InnoDB to crash. (Bug#19834: http://bugs.mysql.com/19834)
* 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: http://bugs.mysql.com/21058)
* 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.
* libmysqld produced some warnings to stderr which could not be
silenced. These warnings now are suppressed.
* 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.
* Query results could be incorrect if the WHERE clause contained
t.key_part NOT IN (val_list), where val_list is a list of more
than 1000 constants. (Bug#21282: http://bugs.mysql.com/21282)
* STR_TO_DATE() sometimes would return NULL if the %D format
specifier was not the last specifier in the format string.
* The myisam_stats_method variable was mishandled when set from
an option file or on the command line.
* 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.
* InnoDB did not honor IGNORE INDEX, which prevented using
IGNORE INDEX in cases where an index sort would be slower than
a filesort. (Bug#21174: http://bugs.mysql.com/21174)
* 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.
* 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.
* 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.
* 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: http://bugs.mysql.com/22238)
* INSERT ... SELECT sometimes generated a spurious Column count
doesn't match value count error.
* 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.
* For table-format output, mysql did not always calculate
columns widths correctly for columns containing multi-byte
characters in the column name or contents.
* Views could not be updated within a stored function or
trigger. (Bug#17591: http://bugs.mysql.com/17591)
* Some user-level level errors were being written to the
server's error log, which is for server errors.
* When using tables created under MySQL 4.1 with a 5.0 server,
if the tables contained VARCHAR columns, for some queries the
metadata sent to the client could have an empty column name.
* 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.
* N'xxx' and _utf8'xxx' were not treated as equivalent because
N'xxx' failed to unescape backslashes (\) and doubled
apostrophe/single quote characters ('').
* ORDER BY RAND() LIMIT 1 always set a user variable to the last
possible value from the table.
* A subquery in the WHERE clause of the outer query and using IN
and GROUP BY returned an incorrect result.
* When NOW() was used in a BETWEEN clause of the definition for
a view, it was replaced with a constant in the view.
* 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 the one that
caused the error. (Bug#8153: http://bugs.mysql.com/8153)
* 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.
* COUNT(*) queries with ORDER BY and LIMIT could return the
wrong result. (Bug#21787: http://bugs.mysql.com/21787)
Note: This problem was introduced by the fix for
Bug#9676: http://bugs.mysql.com/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.
* Memory overruns could occur for certain kinds of subqueries.
* The SELECT privilege was required for an insert on a view,
instead of the INSERT privilege.
Note: This fixes a regression that was introduced by the fix
for Bug#20989: http://bugs.mysql.com/20989.
* Running SHOW MASTER LOGS at the same time as binary log files
were being switched would cause mysqld to hang.
* A server or network failure with an open client connection
would cause the client to hang even though the server was no
longer available. (Bug#9678: http://bugs.mysql.com/9678)
* Transient errors in replication from master to slave may
trigger multiple Got fatal error 1236: 'binlog truncated in
the middle of event' errors on the slave.
* Inserts into BIT columns of FEDERATED tables did not work.
* 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.
* 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.
* 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.
* mysql_upgrade created temporary files in a possibly insecure
way. (Bug#21224: http://bugs.mysql.com/21224)
* Some prepared statements caused a server crash when executed a
second time. (Bug#21166: http://bugs.mysql.com/21166)
* 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.
* NDB 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.
* NDB Cluster: The server provided a non-descriptive error
message when encountering a fatally corrupted REDO log.
* NDB Cluster: A partial rollback could lead to node restart
failures. (Bug#21536: http://bugs.mysql.com/21536)
* NDB 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.
* NDB 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 its nodegroup to shut down.
* NDB 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.
* NDB 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.
* NDB Cluster: A vague error message was returned when reading
of both schema files occurred during a restart of the cluster.
* NDB Cluster: The server did not honor the value set for
ndb_cache_check_time in the my.cnf file.
* NDB Cluster: The server failed with a non-descriptive error
message when out of data memory.
* NDB Cluster: ndb_size.pl and ndb_error_reporter were missing
from RPM packages. (Bug#20426: http://bugs.mysql.com/20426)
* When DROP DATABASE or SHOW OPEN TABLES was issued while
concurrently issuing DROP TABLE (or RENAME TABLE, CREATE TABLE
LIKE or any other statement that required a name lock) in
another connection, the server crashed.
* Use of zero-length variable names caused a server crash.
* Prepared statements caused general log and server memory
corruption. (Bug#14346: http://bugs.mysql.com/14346)
* mysqldump incorrectly tried to use LOCK TABLES for tables in
the INFORMATION_SCHEMA database.
* Adding ORDER BY to a SELECT DISTINCT(expr) query could produce
incorrect results. (Bug#21456: http://bugs.mysql.com/21456)
* For InnoDB tables, the server could crash when executing NOT
IN () subqueries. (Bug#21077: http://bugs.mysql.com/21077)
* Use of the --prompt option or prompt command caused mysql to
be unable to connect to the Instance Manager.
* The server crashed if it tried to access a CSV table for which
the data file had been removed.
* CREATE USER did not respect the 16-character username limit.
* On Windows, a definition for mysql_set_server_option() was
missing from the C client library.
* 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.
* In debugging mode, mysqld printed server_init rather than
network_init during network initialization.
* For user-defined functions created with CREATE FUNCTION, the
DEFINER clause is not legal, but no error was generated.
* mysqld --flush failed to flush changes to disk following an
UPDATE statement for which no updated column had an index.
* 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.
* Setting myisam_repair_threads caused any repair operation on
the table to fail to update the cardinality of indexes,
instead making them always equal to 1.
* The --with-collation option was not honored for client
connections. (Bug#7192: http://bugs.mysql.com/7192)
* Users who had the SHOW VIEW privilege for a view and
privileges on one of the view's base table could not see
records in INFORMATION_SCHEMA tables relating to the base
table. (Bug#20543: http://bugs.mysql.com/20543)
* An issue with yaSSL prevented Connector/J clients from
connecting to the server using a certificate.
* 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: http://bugs.mysql.com/16581)
* 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.
* DECIMAL columns were handled incorrectly in two respects
1. When the precision of the column was too small for the
value. In this case, the original value was returned
instead of an error.
2. 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.
* Tables created with the FEDERATED storage engine did not
permit indexes using NULL columns.
* The Instance Manager allowed STOP INSTANCE to be used on a
server instance that was not running.
* On Windows, mysql_upgrade.exe could not find mysqlcheck.exe.
* 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.
* The C API failed to return a status message when invoking a
stored procedure. (Bug#15752: http://bugs.mysql.com/15752)
* A stored procedure that created and invoked a prepared
statement was not executed when called in a mysqld init-file.
* Stored procedures did not use the character set defined for
the database in which they were created.
* CREATE PROCEDURE, CREATE FUNTION, CREATE TRIGGER, and CREATE
VIEW statements containing multi-line comments (/* ... */)
could not be replicated.
* 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.
* 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: http://bugs.mysql.com/17608)
* 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.
* Repeated DROP TABLE statements in a stored procedure could
sometimes cause the server to crash.
* The value returned by a stored function returning a string
value was not of the declared character set.
* For mysql, escaping with backslash sometimes did not work.
* Under certain circumstances, AVG(key_val) returned a value but
MAX(key_val) returned an empty set due to incorrect
application of MIN()/MAX() optimization.
* Using aggregate functions in subqueries yielded incorrect
results under certain circumstances due to incorrect
application of MIN()/MAX() optimization.
* A query using WHERE column = constant OR column IS NULL did
not return consistent results on successive invocations. The
column in each part of the WHERE clause could be either the
same column, or two different columns, for the effect to be
observed. (Bug#21091: http://bugs.mysql.com/21091)
* The PASSWORD() function returned invalid results when used in
some UNION queries. (Bug#16881: http://bugs.mysql.com/16881)
* USE did not refresh database privileges when employed to
re-select the current database.
* A query using WHERE NOT (column < ANY (subquery)) yielded a
different result from the same query using the same column and
subquery with WHERE (column > ANY (subquery)).
* A user variable set to a value selected from an unsigned
column was stored as a signed value.
* 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.
* 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.
* 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.
* 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.
* 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: http://bugs.mysql.com/21086).
* 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)
* NDB Cluster (Direct APIs): Invoking the MGM API function
ndb_mgm_listen_event() caused a memory leak.
* NDB Cluster (Direct APIs): The MGM API function
ndb_logevent_get_fd() was not actually implemented.
* A memory leak was found when running ndb_mgm -e "SHOW".
* NDB 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: http://bugs.mysql.com/21017,
* NDB Cluster: An issue that arose from a patch for
Bug#19852: http://bugs.mysql.com/19852 made in MySQL 5.0.23
was corrected. (See Section D.1.6, "Changes in release 5.0.23
* NDB Cluster: The management client ALL STATUS command could
sometimes report the status of some data nodes incorrectly.
* NDB Cluster: Some queries involving joins on very large NDB
tables could crash the MySQL server.
* NDB Cluster: SELECT ... FOR UPDATE failed to lock the selected
rows. (Bug#18184: http://bugs.mysql.com/18184)
* NDB 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: http://bugs.mysql.com/14918)
* NDB 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.
* NDB 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: http://bugs.mysql.com/18781)
* NDB Cluster: Running ndbd --nowait-nodes=id where id was the
node ID of a node that was already running would fail with an
invalid error message.
* NDB Cluster: Incorrect values were inserted into
AUTO_INCREMENT columns of tables restored from a cluster
backup. (Bug#20820: http://bugs.mysql.com/20820)
* NDB Cluster: When attempting to restart the cluster following
a data import, the cluster would fail during Phase 4 of the
restart with Error 2334: Job buffer congestion.
* NDB Cluster: A node failure during a scan could sometime cause
the node to crash when restarting too quickly following the
failure. (Bug#20197: http://bugs.mysql.com/20197)
* NDB Cluster: It was possible to use port numbers greater than
65535 for ServerPort in the config.ini file.
* NDB Cluster: Under certain circumstances, a node that was shut
down then restarted could hang during the restart.
* NDB 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.
* NDB Cluster (Direct APIs): NdbScanOperation::readTuples() and
NdbIndexScanOperation::readTuples() ignored the batch
parameter. (Bug#20252: http://bugs.mysql.com/20252)
* The implementation for UNCOMPRESS() did not indicate that it
could return NULL, causing the optimizer to do the wrong
thing. (Bug#18539: http://bugs.mysql.com/18539)
* TIMESTAMPDIFF() examined only the date and ignored the time
when the requested difference unit was months or quarters.
* perror did not properly report NDB error codes.
* 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.
* 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.
* For ODBC compatibility, MySQL supports use of WHERE col_name
IS NULL for DATE 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.
* 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.
* 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: http://bugs.mysql.com/21080)
* mysql crashed for very long arguments to the connect command.
* perror crashed on Solaris due to NULL return value of
strerror() system call.
* The query command for mysqltest did not work.
* For certain queries, the server incorrectly resolved a
reference to an aggregate function and crashed.
* 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.
* Subqueries on INFORMATION_SCHEMA tables could erroneously
return an empty result.
* On 64-bit Windows, a missing table generated error 1017, not
the correct value of 1146.
* 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.
* Multiplication of DECIMAL values could produce incorrect
fractional part and trailing garbage caused by signed
overflow. (Bug#20569: http://bugs.mysql.com/20569)
* A subquery that contained LIMIT N,1 could return more than one
row. (Bug#20519: http://bugs.mysql.com/20519)
* 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: http://bugs.mysql.com/19714)
* Multiple invocations of the REVERSE() function could return
different results. (Bug#18243: http://bugs.mysql.com/18243)
* Using > ALL with subqueries that return no rows yielded
incorrect results under certain circumstances due to incorrect
application of MIN()/MAX() optimization.
* Using ANY with "non-table" subqueries such as SELECT 1 yielded
incorrect results under certain circumstances due to incorrect
application of MIN()/MAX() optimization.
* 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.
* The use of WHERE col_name IS NULL in SELECT statements reset
the value of LAST_INSERT_ID() to zero.
* The server crashed when using the range access method to
execut a subquery with a ORDER BY DESC clause.
* Use of the join cache in favor of an index for ORDER BY
operations could cause incorrect result sorting.
* 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.
* 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: http://bugs.mysql.com/18444)
* For NDB and possibly InnoDB tables, a BEFORE UPDATE trigger
could insert incorrect values.
* Triggers on tables in the mysql database caused a server
crash. Triggers for tables in this database now are
disallowed. (Bug#18361: http://bugs.mysql.com/18361)
* The length of the pattern string prefix for LIKE operations
was calculated incorrectly for multi-byte character sets. As a
result, the the scanned range was wider than necessary if the
prefix contained any multi-byte characters, and rows could be
missing from the result set.
* For very complex SELECT statements could create temporary
tables that were too big, but for which the temporary files
did not get removed, causing subsequent queries to fail.
* 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.
* Using SELECT and a table join while running a concurrent
INSERT operation would join incorrect rows.
* Using SELECT on a corrupt table using the dynamic record
format could cause a server crash.
* 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#16611: http://bugs.mysql.com/16611,
* 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: http://bugs.mysql.com/17877)
* 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: http://bugs.mysql.com/15298)
* 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.)
* 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.
* Creation of a view as a join of views or tables could fail if
the views or tables are in different databases.
* Use of MIN() or MAX() with GROUP BY on a ucs2 column could
cause a server crash. (Bug#20076: http://bugs.mysql.com/20076)
* INSERT INTO ... SELECT ... LIMIT 1 could be slow because the
LIMIT was ignored when selecting candidate rows.
* 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.
* The mysql_list_fields() C API function returned the incorrect
table name for views. (Bug#19671: http://bugs.mysql.com/19671)
* A cast problem caused incorrect results for prepared
statements that returned float values when MySQL was compiled
with gcc 4.0. (Bug#19694: http://bugs.mysql.com/19694)
* Updating a column of a FEDERATED table to NULL sometimes
failed. (Bug#16494: http://bugs.mysql.com/16494)
Joerg Bruehe, Senior Production Engineer
MySQL AB, www.mysql.com
|• MySQL 5.0.26 has been released (part 2)||Joerg Bruehe||10 Oct|