This is a Monthly Rapid Update release of the MySQL Enterprise Server 5.0.
This section documents all changes and bugfixes that have been applied since the last MySQL Enterprise Server release (5.0.58). 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/advisors.html.
Functionality added or changed:
Bugs fixed:
Important Change: Security Fix:
It was possible to circumvent privileges through the creation of
MyISAM
tables employing the DATA
DIRECTORY
and INDEX DIRECTORY
options to overwrite existing table files in the MySQL data
directory. Use of the MySQL data directory in DATA
DIRECTORY
and INDEX DIRECTORY
path
name is now disallowed.
Additional fixes were made in MySQL 5.0.70.
See also Bug#39277.
Incompatible Change:
It was possible to use FRAC_SECOND
as a
synonym for MICROSECOND
with
DATE_ADD()
,
DATE_SUB()
, and
INTERVAL
; now, using
FRAC_SECOND
with anything other than
TIMESTAMPADD()
or
TIMESTAMPDIFF()
produces a syntax
error.
It is now possible (and preferable) to use
MICROSECOND
with
TIMESTAMPADD()
and
TIMESTAMPDIFF()
, and
FRAC_SECOND
is now deprecated.
(Bug#33834)
Important Change:
The server handled truncation of values having excess trailing
spaces into CHAR
,
VARCHAR
, and
TEXT
columns in different ways.
This behavior has now been made consistent for columns of all
three of these types, and now follows the existing behavior of
VARCHAR
columns in this regard;
that is, a Note
is always issued whenever
such truncation occurs.
This change does not affect columns of these three types when
using a binary encoding; BLOB
columns are also unaffected by the change, since they always use
a binary encoding.
(Bug#30059)
Replication:
insert_id
was not written to
the binary log for inserts into BLACKHOLE
tables.
(Bug#35178)
Replication: The character sets and collations used for constant identifiers in stored procedures were not replicated correctly. (Bug#34289)
Replication:
An extraneous
ROLLBACK
statement was written to the binary log by a connection that did
not use any transactional tables.
(Bug#33329)
Replication:
When a stored routine or trigger, running on a master that used
MySQL 5.0 or MySQL 5.1.11 or earlier, performed an insert on an
AUTO_INCREMENT
column, the
insert_id
value was not
replicated correctly to a slave running MySQL 5.1.12 or later
(including any MySQL 6.0 release).
(Bug#33029)
See also Bug#19630.
Replication:
STOP SLAVE
did not stop
connection attempts properly. If the I/O slave thread was
attempting to connect, STOP SLAVE
waited for the attempt to finish, sometimes for a long period of
time, rather than stopping the slave immediately.
(Bug#31024)
See also Bug#30932.
Replication:
MASTER_POS_WAIT()
did not return
NULL
when the server was not a slave.
(Bug#26622)
Replication:
The nonspecific error message Wrong parameters to
function register_slave resulted when
START SLAVE
failed to register on
the master due to excess length of any the slave server options
--report-host
,
--report-user
, or
--report-password
. An error
message specific to each of these options is now returned in
such cases. The new error messages are:
Failed to register slave: too long 'report-host'
Failed to register slave: too long 'report-user'
Failed to register slave; too long 'report-password'
See also Bug#19328.
Replication:
PURGE BINARY LOGS TO
and PURGE
BINARY LOGS BEFORE
did not handle missing binary log
files correctly or in the same way. Now for both of these
statements, if any files listed in the
.index
file are missing from the file
system, the statement fails with an error.
(Bug#18199, Bug#18453)
Replication:
START SLAVE UNTIL
MASTER_LOG_POS=
issued on a slave that was using
position
--log-slave-updates
and that was
involved in circular replication would cause the slave to run
and stop one event later than that specified by the value of
position
.
(Bug#13861)
On Windows, the installer attempted to use JScript to determine whether the target data directory already existed. On Windows Vista x64, this resulted in an error because the installer was attempting to run the JScript in a 32-bit engine, which wasn't registered on Vista. The installer no longer uses JScript but instead relies on a native WiX command. (Bug#36103)
There was a memory leak when connecting to a
FEDERATED
table using a connection string
that had a host value of localhost
or omitted
the host and a port value of 0
or omitted the
port.
(Bug#35509)
Using LOAD DATA
INFILE
with a view could crash the server.
(Bug#35469)
When a view containing a reference to DUAL
was created, the reference was removed when the definition was
stored, causing some queries against the view to fail with
invalid SQL syntax errors.
(Bug#35193)
Debugging symbols were missing for some executables in Windows binary distributions. (Bug#35104)
A query that performed a
ref_or_null
join where the
second table used a key having one or columns that could be
NULL
and had a column value that was
NULL
caused the server to crash.
(Bug#34945)
This regression was introduced by Bug#12144.
Some binaries produced stack corruption messages due to being built with versions of bison older than 2.1. Builds are now created using bison 2.3. (Bug#34926)
mysqldump failed to return an error code when
using the --master-data
option
without binary logging being enabled on the server.
(Bug#34909)
Under some circumstances, the value of
mysql_insert_id()
following a
SELECT ... INSERT
statement could return an
incorrect value. This could happen when the last SELECT
... INSERT
did not involve an
AUTO_INCREMENT
column, but the value of
mysql_insert_id()
was changed by
some previous statements.
(Bug#34889)
Table and database names were mixed up in some places of the subquery transformation procedure. This could affect debugging trace output and further extensions of that procedure. (Bug#34830)
A malformed URL used for a FEDERATED
table's CONNECTION
option value in a
CREATE TABLE
statement was not
handled correctly and could crash the server.
(Bug#34788)
Queries such as SELECT ROW(1, 2) IN (SELECT t1.a, 2)
FROM t1 GROUP BY t1.a
(combining row constructors and
subqueries in the FROM
clause) could lead to
assertion failure or unexpected error messages.
(Bug#34763)
Using NAME_CONST()
with a negative number and
an aggregate function caused MySQL to crash. This could also
have a negative impact on replication.
(Bug#34749)
A memory-handling error associated with use of
GROUP_CONCAT()
in subqueries
could result in a server crash.
(Bug#34747)
For an indexed integer column
col_name
and a value
N
that is one greater than the
maximum value allowed for the data type of
col_name
, conditions of the form
WHERE
failed to return rows
where the value of col_name
<
N
col_name
is
.
(Bug#34731)N
- 1
Executing a TRUNCATE TABLE
statement on a table having both a foreign key reference and a
DELETE
trigger crashed the
server.
(Bug#34643)
Some subqueries using an expression that included an aggregate function could fail or in some cases lead to a crash of the server. (Bug#34620)
A server crash could occur if
INFORMATION_SCHEMA
tables built in memory
were swapped out to disk during query execution.
(Bug#34529)
CAST(AVG(
produced incorrect results for
non-arg
) AS
DECIMAL)DECIMAL
arguments.
(Bug#34512)
Under some conditions, a SET GLOBAL
innodb_commit_concurrency
or SET GLOBAL
innodb_autoextend_increment
statement could fail.
(Bug#34223)
mysqldump attempts to set the
character_set_results
system
variable after connecting to the server. This failed for pre-4.1
servers that have no such variable, but
mysqldump did not account for this and 1)
failed to dump database contents; 2) failed to produce any error
message alerting the user to the problem.
(Bug#34192)
For a FEDERATED
table with an index on a
nullable column, accessing the table could crash a server,
return an incorrect result set, or return ERROR 1030
(HY000): Got error 1430 from storage engine
.
(Bug#33946)
A query using WHERE
(column1='
, where
string1
' AND
column2=constant1
) OR
(column1='string2
' AND
column2=constant2
)col1
used a binary collation and
string1
matched
string2
except for case, failed to
match any records even when matches were found by a query using
the equivalent clause WHERE
column2=
.
(Bug#33833)constant1
OR
column2=constant2
Reuse of prepared statements could cause a memory leak in the embedded server. (Bug#33796)
Some queries using a combination of IN
,
CONCAT()
, and an implicit type
conversion could return an incorrect result.
(Bug#33764)
In some cases a query that produced a result set when using
ORDER BY ASC
did not return any results when
this was changed to ORDER BY DESC
.
(Bug#33758)
Disabling concurrent inserts caused some cacheable queries not to be saved in the query cache. (Bug#33756)
Certain combinations of views, subselects with outer references and stored routines or triggers could cause the server to crash. (Bug#33389)
SLEEP(0)
failed to return on
64-bit Mac OS X due to a bug in
pthread_cond_timedwait()
.
(Bug#33304)
Granting the UPDATE
privilege on
one column of a view caused the server to crash.
(Bug#33201)
Under some circumstances a combination of aggregate functions
and GROUP BY
in a
SELECT
query over a view could
lead to incorrect calculation of the result type of the
aggregate function. This in turn could lead to incorrect
results, or to crashes on debug builds of the server.
(Bug#33049)
For DISTINCT
queries, MySQL 4.0 and 4.1
stopped reading joined tables as soon as the first matching row
was found. However, this optimization was lost in MySQL 5.0,
which instead read all matching rows. This fix for this
regression may result in a major improvement in performance for
DISTINCT
queries in cases where many rows
match.
(Bug#32942)
Incorrect assertions could cause a server crash for
DELETE
triggers for transactional
tables.
(Bug#32790)
Inserting strings with a common prefix into a table that used
the ucs2
character set corrupted the table.
(Bug#32705)
Queries using LIKE
on tables having indexed
CHAR
columns using either of the
eucjpms
or ujis
character
sets did not return correct results.
(Bug#32510)
Queries testing numeric constants containing leading zeroes
against ZEROFILL
columns were not evaluated
correctly.
(Bug#31887)
If an error occurred during file creation, the server sometimes did not remove the file, resulting in an unused file in the file system. (Bug#31781)
The server returned the error message Out of memory; restart server and try again when the actual problem was that the sort buffer was too small. Now an appropriate error message is returned in such cases. (Bug#31590)
When sorting privilege table rows, the server treated escaped
wildcard characters (\%
and
\_
) the same as unescaped wildcard characters
(%
and _
), resulting in
incorrect row ordering.
(Bug#31194)
On Windows, SHOW PROCESSLIST
could display process entries with a State
value of *** DEAD ***
.
(Bug#30960)
If an alias was used to refer to the value returned by a stored function within a subselect, the outer select recognized the alias but failed to retrieve the value assigned to it in the subselect. (Bug#30787)
Binary logging for a stored procedure differed depending on whether or not execution occurred in a prepared statement. (Bug#30604)
An orphaned PID file from a no-longer-running process could cause mysql.server to wait for that process to exit even though it does not exist. (Bug#30378)
The mysql_config command would output
CFLAGS
values that were incompatible with C++
for the HP-UX platform.
(Bug#29645)
The SQL parser did not accept an empty
UNION=()
clause. This meant that, when there
were no underlying tables specified for a
MERGE
table, SHOW CREATE
TABLE
and mysqldump both output
statements that could not be executed.
Now it is possible to execute a CREATE
TABLE
or ALTER TABLE
statement with an empty UNION=()
clause.
However, SHOW CREATE TABLE
and
mysqldump do not output the
UNION=()
clause if there are no underlying
tables specified for a MERGE
table. This also
means it is now possible to remove the underlying tables for a
MERGE
table using ALTER TABLE ...
UNION=()
.
(Bug#28248)
It was possible to exhaust memory by repeatedly running
index_merge
queries and never
performing any FLUSH
TABLES
statements.
(Bug#27732)
When utf8
was set as the connection character
set, using SPACE()
with a
non-Unicode column produced an error.
(Bug#27580)
See also Bug#23637.
In ORDER BY
clauses, mixing aggregate
functions and nongrouping columns is not allowed if the
ONLY_FULL_GROUP_BY
SQL mode is
enabled. However, in some cases, no error was thrown because of
insufficient checking.
(Bug#27219)
For the --record_log_pos
option, mysqlhotcopy now determines the slave
status information from the result of SHOW
SLAVE STATUS
by using the
Relay_Master_Log_File
and
Exec_Master_Log_Pos
values rather than the
Master_Log_File
and
Read_Master_Log_Pos
values. This provides a
more accurate indication of slave execution relative to the
master.
(Bug#27101)
The MySQL Instance Configuration Wizard would not allow you to choose a service name, even though the criteria for the service name were valid. The code that checks the name has been updated to support the correct criteria of any string less than 256 character and not containing either a forward or backward slash character. (Bug#27013)
config-win.h
unconditionally defined
bool
as BOOL
,
causing problems on systems where bool
is 1
byte and BOOL
is 4 bytes.
(Bug#26461)
On Windows, for distributions built with debugging support, mysql could crash if the user typed Control-C. (Bug#26243)
On Windows, an error in configure.js
caused
installation of source distributions to fail.
(Bug#25340)
Using mysqldump in MySQL 5.1 resulted in dump
files that could not be loaded in MySQL 5.0 because
USING
options in index definitions appeared after the index column
list, whereas 5.0 accepted only the old syntax that has
type_name
USING
before the column list. The parser in
5.0 now accepts USING
following the column
list.
(Bug#25162)
The client library had no way to return an error if no
connection had been established. This caused problems such as
mysql_library_init()
failing
silently if no errmsg.sys
file was
available.
(Bug#25097)
On Mac OS X, the StartupItem for MySQL did not work. (Bug#25008)
For Windows 64-bit builds, enabling shared-memory support caused client connections to fail. (Bug#24992)
If a user installed MySQL Server and set a password for the
root
user, and then uninstalled and
reinstalled MySQL Server to the same location, the user could
not use the MySQL Instance Config wizard to configure the server
because the uninstall operation left the previous data directory
intact. The config wizard assumed that any
new install (not an upgrade) would have the default data
directory where the root
user has no
password. The installer now writes a registry key named
FoundExistingDataDir
. If the installer finds
an existing data directory, the key will have a value of 1,
otherwise it will have a value of 0. When
MySQLInstanceConfig.exe is run, it will
attempt to read the key. If it can read the key, and the value
is 1 and there is no existing instance of the server (indicating
a new installation), the Config Wizard will allow the user to
input the old password so the server can be configured.
(Bug#24215)
The MySQL header files contained some duplicate macro definitions that could cause compilation problems. (Bug#23839)
SHOW COLUMNS
on a
TEMPOARY
table caused locking issues.
(Bug#23588)
For distributions compiled with the bundled
libedit
library, there were difficulties
using the mysql client to enter input for
non-ASCII or multi-byte characters.
(Bug#23097)
On Mac OS X, mysqld did not react to Ctrl-C
when run under gdb, even when run with the
--gdb
option.
(Bug#21567)
mysql-stress-test.pl and mysqld_multi.server.sh were missing from some binary distributions. (Bug#21023, Bug#25486)
A SET
column whose definition specified 64
elements could not be updated using integer values.
(Bug#15409)
MySQLInstanceConfig.exe did not save the
innodb_data_home_dir
value to
the my.ini
file under certain
circumstances.
(Bug#6627)
User Comments
Add your own comment.