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
xxx
LOCK 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.