Functionality added or changed:
Incompatible Change:
The namespace for triggers has changed. Previously, trigger
names had to be unique per table. Now they must be unique within
the schema (database). An implication of this change is that
DROP TRIGGER syntax now uses a
schema name instead of a table name (schema name is optional
and, if omitted, the current schema will be used).
When upgrading from a version of MySQL 5 older than 5.0.10 to
MySQL 5.0.10 or newer, you must drop all triggers and
re-create them or DROP TRIGGER
will not work after the upgrade. A suggested procedure for
doing this is given in
Section 2.18.1.2, “Upgrading from MySQL 4.1 to 5.0”.
(Bug#5892)
MySQL Cluster:
A new -P option is available for use with the
ndb_mgmd client. When called with this
option, ndb_mgmd prints all configuration
data to stdout, then exits.
On Windows, the search path used by MySQL applications for
my.ini now includes
..\my.ini (that is, the application's
parent directory, and hence, the installation directory).
(Bug#10419)
The viewing of triggers and trigger metadata has been enhanced as follows:
An extension to the SHOW
command has been added: SHOW
TRIGGERS can be used to view a listing of
triggers. See Section 12.4.5.35, “SHOW TRIGGERS Syntax”, for details.
The INFORMATION_SCHEMA database now
includes a TRIGGERS table. See
Section 19.16, “The INFORMATION_SCHEMA TRIGGERS Table”, for details.
(Bug#9586)
It is no longer necessary to issue an explicit
LOCK TABLES for any tables
accessed by a trigger prior to executing any statements that
might invoke the trigger.
Previously, executing a statement that invoked a trigger would
cause problems unless a LOCK
TABLES was first issued for any tables accessed by the
trigger. The exact nature of the problem depended upon the MySQL
5.0 release being used: prior to 5.0.3, this resulted in a
crash; from 5.0.3 to 5.0.7, MySQL would issue a warning; in
5.0.9, the server would issue an error.
The same issue caused LOCK TABLES
to fail following
UNLOCK
TABLES if triggers were involved.
(Bug#8406, Bug#9581)
The MySQL server now starts correctly with all combinations of
--basedir and
--datadir, resolving an issue
introduced by the original fix for this bug in MySQL 4.1.9.
(Bug#7249)
See also Bug#7518.
Added
mysql_get_character_set_info() C
API function for obtaining information about the default
character set of the current connection.
An extension to the SHOW command
has been added: SHOW TRIGGERS can
be used to view a listing of triggers. See
Section 12.4.5.35, “SHOW TRIGGERS Syntax”, for details.
Add the --defaults-group-suffix
option. See Section 4.2.3.3, “Using Option Files”.
The bundled version of the readline library
was upgraded to version 5.0.
Triggers can now reference tables by name. See
Section 12.1.11, “CREATE TRIGGER Syntax”, for more information.
Add table_lock_wait_timeout
global system variable.
Bugs fixed:
Security Fix:
A vulnerability in zlib could result in a
buffer overflow and arbitrary code execution.
(Bug#11844, CVE-2005-2096, CVE-2005-1849)
MySQL Cluster:
The temporary tables created by an ALTER
TABLE on an NDB table
were visible to all SQL nodes in the cluster.
(Bug#12055)
MySQL Cluster:
NDB ignored the
Hostname option in the [ndbd
default] section of the cluster configuration file.
(Bug#12028)
MySQL Cluster:
The output of perror --help
did not display any information about the
--ndb option.
(Bug#11999)
MySQL Cluster: Attempting to create or drop tables during a backup would cause the cluster to shut down. (Bug#11942)
MySQL Cluster: ndb_mgmd leaked file descriptors. (Bug#11898)
MySQL Cluster: The MySQL Server left core files following shutdown if data nodes had failed. (Bug#11516)
MySQL Cluster:
When attempting to drop a table with a broken unique index,
NDB failed to drop the table and
erroneously report that the table was unknown.
(Bug#11355)
MySQL Cluster:
Trying to use a greater number of tables than specified by the
value of MaxNoOfTables caused table
corruption such that data nodes could not be restarted.
(Bug#9994)
The server did not compile correctly when using gcc4 on AMD64 platforms. (Bug#12040)
SHOW BINARY LOGS displayed a file
size of 0 for all log files but the current one if the files
were not located in the data directory.
(Bug#12004)
Increased the version number of the
libmysqlclient shared library from 14 to 15
because it is binary incompatible with the MySQL 4.1 client
library.
(Bug#11893)
The server crashed when dropping a trigger that invoked a stored procedure, if the procedure was not yet in the connection-specific stored routine cache. (Bug#11889)
SELECT ... NOT IN() gave unexpected results
when only static value present between the
().
(Bug#11885)
A recent optimizer change caused DELETE ... WHERE ...
NOT LIKE and DELETE ... WHERE ... NOT
BETWEEN to not properly identify the rows to be
deleted.
(Bug#11853)
Execution of a prepared statement that invoked a nonexistent or dropped stored routine would crash the server. (Bug#11834)
Selecting the result of an aggregate function for an
ENUM or SET
column within a subquery could result in a server crash.
(Bug#11821)
Creating a table with a SET or
ENUM column with the
DEFAULT 0 clause caused a server crash if the
table's character set was utf8.
(Bug#11819)
Incorrect column values could be retrieved from views defined
using statements of the form SELECT * FROM
.
(Bug#11771)tbl_name
When invoked within a view,
SUBTIME() returned incorrect
values.
(Bug#11760)
For several character sets, MySQL incorrectly converted the
character code for the division sign to the
eucjpms character set.
(Bug#11717)
Performing an ORDER BY on a
SELECT from a
VIEW produced unexpected results when
VIEW and underlying table had the same column
name on different columns.
(Bug#11709)
Execution of SHOW TABLES failed
to increment the Com_show_tables status
variable.
(Bug#11685)
LIKE pattern matching using prefix index didn't return correct result. (Bug#11650)
Invoking the DES_ENCRYPT()
function could cause a server crash if the server was started
without the --des-key-file
option.
(Bug#11643)
IP addresses not shown in ndb_mgm SHOW
command on second ndb_mgmd (or on ndb_mgmd restart).
(Bug#11596)
SHOW PROCEDURE/FUNCTION STATUS didn't work
for users with limited access.
(Bug#11577)
mysqlbinlog was failing the test suite on
Windows due to BOOL being
incorrectly cast to INT.
(Bug#11567)
The server crashed upon execution of a statement that used a
stored function indirectly (via a view) if the function was not
yet in the connection-specific stored routine cache and the
statement would update a
Handler_ status
variable. This fix allows the use of stored routines under
xxxLOCK TABLES without explicitly
locking the mysql.proc table. However, you
cannot use mysql.proc in statements that will
combine locking of it with modifications for other tables.
(Bug#11554)
Aliasing the column names in a VIEW did not
work when executing a SELECT
query on the VIEW.
(Bug#11399)
The mysql.proc table was not being created
properly with the proper utf8 character set
and collation, causing server crashes for stored procedure
operations if the server was using a multi-byte character set.
To take advantage of the bug fix,
mysql_fix_privilege_tables should be run to
correct the structure of the mysql.proc
table.
Note that it is necessary to run
mysql_fix_privileges_tables when upgrading
from a previous installation that contains the
mysql.proc table (that is, from a previous
5.0 installation). Otherwise, creating stored procedures might
not work.
(Bug#11365)
For prepared statements, the SQL parser did not disallow
“?” parameter markers
immediately adjacent to other tokens, which could result in
malformed statements in the binary log. (For example,
SELECT * FROM t WHERE? = 1 could become
SELECT * FROM t WHERE0 = 1.)
(Bug#11299)
The C API function
mysql_stmt_reset() did not clear
error information.
(Bug#11183)
INFORMATION_SCHEMA.COLUMNS had some
inaccurate values for some data types.
(Bug#11057)
MySQL server would crash is a fetch was performed after a
ROLLBACK when
cursors were involved.
(Bug#10760)
When two threads competed for the same table, a deadlock could
occur if one thread also had a lock on another table through
LOCK TABLES and the thread was
attempting to remove the table in some manner while the other
thread tried to place locks on both tables.
(Bug#10600)
When used within a subquery,
SUBSTRING() returned an empty
string.
(Bug#10269)
Multiple-table UPDATE queries
using CONVERT_TZ() would fail
with an error.
(Bug#9979)
With strict SQL mode enabled, ALTER
TABLE reported spurious “Invalid default
value” messages for columns that had no
DEFAULT clause.
(Bug#9881)
mysql_fetch_fields() returned
incorrect length information for MEDIUM and
LONG TEXT and
BLOB columns.
(Bug#9735)
Within a stored procedure, selecting from a table through a view caused subsequent updates to the table to fail with a message that the table was read-locked. (Bug#9597)
Within a stored procedure that selects from a table, invoking another procedure that requires a write lock for the table caused that procedure to fail with a message that the table was read-locked. (Bug#9565)
Server-side prepared statements failed for columns with a
character set of ucs2.
(Bug#9442)
In SQL prepared statements, comparisons could fail for values
not equally space-padded. For example, SELECT 'a' =
'a '; returns 1, but PREPARE s FROM
'SELECT ?=?'; SET @a = 'a', @b = 'a '; PREPARE s FROM
'SELECT ?=?'; EXECUTE s USING @a, @b; incorrectly
returned 0.
(Bug#9379)
References to system variables in an SQL statement prepared with
PREPARE were evaluated during
EXECUTE to their values at
prepare time, not to their values at execution time.
(Bug#9359)
The server did not accept some fully-qualified trigger names. (Bug#8758)
Creating a trigger in one database that references a table in another database was being allowed without generating errors. (Bug#8751)
For a stored procedure defined with SQL SECURITY
DEFINER characteristic,
CURRENT_USER() incorrectly
reported the use invoking the procedure, not the user who
defined it.
(Bug#7291)
Labels in stored routines did not work if the character set was
not latin1.
(Bug#7088)
Duplicate trigger names were allowed within a single schema. (Bug#6182)
For execution of a stored procedure that refers to a view, changes to the view definition were not seen. The procedure continued to see the old contents of the view. (Bug#6120)
The traditional SQL mode accepted invalid
dates if the date value provided was the result of an implicit
type conversion.
(Bug#5906)
In a shared Windows environment, MySQL could not find its
configuration file unless the file was in the
C:\ directory.
(Bug#5354)
Functions that evaluate to constants (such as
NOW() and
CURRENT_USER() were being
evaluated in the definition of a VIEW rather
than included verbatim.
(Bug#4663)

User Comments
Add your own comment.