This Beta release, as any other pre-production release, should not be installed on “production” level systems or systems with critical data. It is good practice to back up your data before installing any new version of software. Although MySQL worked very hard to ensure a high level of quality, protect your data by making a backup as you would for any software beta release.
Functionality added or changed:
Incompatible Change:
The C API ER_WARN_DATA_TRUNCATED
warning
symbol was renamed to
WARN_DATA_TRUNCATED
.
Incompatible Change:
The DECIMAL
and
NUMERIC
data types now are
handled with a fixed-point library that allows for precision
math handling that results in more accurate results. See
Section 11.13, “Precision Math”.
A consequence of the change in handling of the
DECIMAL
and
NUMERIC
fixed-point data types is
that the server is more strict to follow standard SQL. For
example, a data type of DECIMAL(3,1)
stores a
maximum value of 99.9. Previously, the server allowed larger
numbers to be stored. That is, it stored a value such as 100.0
as 100.0. Now the server clips 100.0 to the maximum allowable
value of 99.9. If you have tables that were created before MySQL
5.0.3 and that contain floating-point data not strictly legal
for the data type, you should alter the data types of those
columns. For example:
ALTER TABLEtbl_name
MODIFYcol_name
DECIMAL(4,1);
For user-defined functions, exact-value decimal arguments such
as 1.3
or
DECIMAL
column values were passed
as REAL_RESULT
values prior to MySQL 5.0.3.
As of 5.0.3, they are passed as strings with a type of
DECIMAL_RESULT
. If you upgrade to 5.0.3 and
find that your UDF now receives string values, use the
initialization function to coerce the arguments to numbers as
described in Section 21.2.2.3, “UDF Argument Processing”.
For the FLOOR()
and
CEILING()
functions, the return
type is no longer always BIGINT
.
For exact-value numeric arguments, the return value has an
exact-value numeric type. For string or floating-point
arguments, the return value has a floating-point type.
Replication: MySQL Cluster:
Added a new global system variable
slave_transaction_retries
: If
the replication slave SQL thread fails to execute a transaction
because of an InnoDB
deadlock or exceeded
InnoDB
's
innodb_lock_wait_timeout
or
NDBCLUSTER
's
TransactionDeadlockDetectionTimeout
or
TransactionInactiveTimeout
, it automatically
retries
slave_transaction_retries
times
before stopping with an error. The default is 10.
(Bug#8325)
MySQL Cluster:
When using this storage engine, the output of
SHOW TABLE STATUS
now displays
properly-calculated values in the
Avg_row_length
and
Data_length
columns. (Note that
BLOB
columns are not yet taken
into account.) In addition, the number of replicas is now shown
in the Comment
column (as
number_of_replicas
).
Replication:
The LOAD DATA
statement was
extended to support user variables in the target column list,
and an optional SET
clause. Now one can
perform some transformations on data after they have been read
and before they are inserted into the table. For example:
LOAD DATA INFILE 'file.txt' INTO TABLE t1 (column1, @var1) SET column2 = @var1/100;
Also, replication of LOAD DATA
was changed, so you can't replicate such statements from a 5.0.3
master to pre-5.0.3 slaves.
Replication: The way the character set information is stored into the binary log was changed, so that it is now possible to have a replication master and slave running with different global character sets. A disadvantage is that replication from 5.0.3 masters to pre-5.0.3 slaves is impossible.
Replication:
If the MySQL server is started without an argument to
--log-bin
and without
--log-bin-index
, thus not
providing a name for the binary log index file, a warning is
issued because MySQL falls back to using the host name for that
name, and this is prone to replication issues if the server's
host name gets changed later. See Section B.5.8.1, “Open Issues in MySQL”.
Nonoptimal index_merge
query
execution plans were chosen on IRIX.
(Bug#8578)
mysqld_safe will create the directory where the UNIX socket file is to be located if the directory does not exist. This applies only to the last component of the directory path name. (Bug#8513)
ONLY_FULL_GROUP_BY
no longer
is included in the ANSI
composite SQL mode.
(Bug#8510)
The server now includes a timestamp in the Ready for
connections
message that is written to the error log
at startup.
(Bug#8444)
CHECKSUM TABLE
returns a warning
for nonexisting tables. The checksum value remains
NULL
as before.
(Bug#8256)
Setting the connection collation to a value different from the
server collation followed by a CREATE
TABLE
statement that included a quoted default value
resulted in a server crash.
(Bug#8235)
When a client releases a user-level lock, DO
RELEASE_LOCK()
will not be written to the binary log
anymore (this makes the binary log smaller); as a counterpart,
the slave does not actually take the lock when it executes
GET_LOCK()
. This is mainly an
optimization and should not affect existing setups.
(Bug#7998)
InnoDB
: Corrected a bug in the crash recovery
of ROW_FORMAT=COMPACT
tables that caused
corruption. There may still be bugs in the crash recovery,
especially in COMPACT
tables.
(Bug#7973)
Allowed the service-installation command for Windows servers to
specify a single option other than
--defaults-file
following the
service name. This is for compatibility with MySQL 4.1.
(Bug#7856)
Changed XML format for mysql from
<
to col_name
>col_value
</col_name
><field
name="
to allow for proper encoding of column names that are not legal
as element names.
(Bug#7811)col_name
">col_value
</field>
SHOW CREATE TABLE
now uses
USING
rather than index_type
TYPE
to specify an
index type.
(Bug#7233)index_type
InnoDB
: Implemented fast
TRUNCATE TABLE
. The old approach
(deleting rows one by one) may be used if the table is being
referenced by foreign keys.
(Bug#7150)
Out-of-order packets were sent (ERROR
after
OK
or EOF
) following a
KILL QUERY
statement.
(Bug#6804)
Added sql_notes
session
variable to cause Note
-level warnings not to
be recorded.
(Bug#6662)
Added mysql_library_init()
and
mysql_library_end()
as synonyms
for the mysql_server_init()
and
mysql_server_end()
C API
functions. mysql_library_init()
and mysql_library_end()
are
#define
symbols, but the names more clearly
indicate that they should be called when beginning and ending
use of a MySQL C API library no matter whether the application
uses libmysqlclient
or
libmysqld
.
(Bug#6149)
Added VAR_POP()
and
STDDEV_POP()
as standard SQL
aliases for the VARIANCE()
and
STDDEV()
functions that compute
population variance and standard deviation. Added new
VAR_SAMP()
and
STDDEV_SAMP()
functions to
compute sample variance and standard deviation.
(Bug#3190)
InnoDB
: A commit is now performed after every
10,000 copied rows when executing ALTER
TABLE
, CREATE INDEX
,
DROP INDEX
or
OPTIMIZE TABLE
. This makes
recovery from an aborted operations of these types much faster
than previous to this change.
Added support for AVG(DISTINCT)
.
A new CREATE USER
privilege was
added.
Support for RAID
options in
MyISAM
tables has been removed. If you have
tables that use these options, you should convert them before
upgrading. See Section 2.18.1.2, “Upgrading from MySQL 4.1 to 5.0”.
InnoDB
: A shared record lock
(LOCK_REC_NOT_GAP
) is now taken for a
matching record in the foreign key check because inserts can be
allowed into gaps.
The MySQL server now aborts when started with the option
--log-bin-index
and without
--log-bin
, and when started with
--log-slave-updates
and without
--log-bin
.
API change: the reconnect
flag in the
MYSQL
structure is now set to 0 by
mysql_real_connect()
. Only those
client programs which didn't explicitly set this flag to 0 or 1
after mysql_real_connect()
experience a change. Having automatic reconnection enabled by
default was considered too dangerous (after reconnection, table
locks, temporary tables, user and session variables are lost).
Bit-field values can be written using
b'
notation.
value
'value
is a binary value written using
0s and 1s.
InnoDB
: Relaxed locking in
INSERT ...
SELECT
, single table UPDATE ...
(SELECT)
and single table DELETE ...
(SELECT)
clauses when
innodb_locks_unsafe_for_binlog
is used and isolation level of the transaction is not
SERIALIZABLE
.
InnoDB
uses consistent read in these cases
for a selected table.
InnoDB
now supports a fast
TRUNCATE TABLE
. One visible
change from this is that auto-increment values for this table
are reset on TRUNCATE TABLE
.
InnoDB
: Introduced a compact record format
that does not store the number of columns or the lengths of
fixed-size columns. The old format can be requested by
specifying ROW_FORMAT=REDUNDANT
. The new
format (ROW_FORMAT=COMPACT
) is the default.
The new format typically saves 20% of disk space and memory.
The presence of the new compact row format decreases row storage space by about 20% at the cost of increasing CPU use for some operations. If your workload is a typical one that is limited by cache hit rates and disk speed it is likely to be faster. If it is a rare case that is limited by CPU speed, it might be slower.
From the Windows distribution, predefined accounts without
passwords for remote users ('root'@'%'
,
''@'%'
) were removed (other distributions
never had them).
Added the FEDERATED
storage engine. See
Section 13.7, “The FEDERATED
Storage Engine”.
InnoDB
: Setting the initial
AUTO_INCREMENT
value for an
InnoDB
table using CREATE TABLE ...
AUTO_INCREMENT =
now
works, and n
ALTER TABLE ... AUTO_INCREMENT =
resets the current value.
n
User variable coercibility has been changed from “coercible” to “implicit.” That is, user variables have the same coercibility as column values.
Security improvement: User-defined functions should have at
least one symbol defined in addition to the
xxx
symbol that corresponds to the main
xxx()
function. These auxiliary symbols
correspond to the xxx_init()
,
xxx_deinit()
, xxx_reset()
,
xxx_clear()
, and xxx_add()
functions. mysqld by default no longer loads
UDFs unless they have at least one auxiliary symbol defined in
addition to the main symbol. The
--allow-suspicious-udfs
option
controls whether UDFs that have only an xxx
symbol can be loaded. By default, the option is off.
mysqld also checks UDF file names when it
reads them from the mysql.func
table and
rejects those that contain directory path name separator
characters. (It already checked names as given in
CREATE FUNCTION
statements.) See
Section 21.2.2.1, “UDF Calling Sequences for Simple Functions”,
Section 21.2.2.2, “UDF Calling Sequences for Aggregate Functions”, and
Section 21.2.2.6, “User-Defined Function Security Precautions”. Thanks to Stefano Di Paola
<stefano.dipaola@wisec.it>
for finding and
informing us about this issue.
(CVE-2005-0709, CVE-2005-0710)
Added the --large-pages
option
for mysqld. Large page support can be used on
Linux systems. See Section 7.5.9, “Enabling Large Page Support”.
Added an error
member to the
MYSQL_BIND
data structure that is used in the
C API for prepared statements. This member is used for reporting
data truncation errors. Truncation reporting is enabled via the
new MYSQL_REPORT_DATA_TRUNCATION
option for
the mysql_options()
C API
function.
Added the multi_range_count
system variable.
The coercibility for the return value of functions such as
USER()
or
VERSION()
now is “system
constant” rather than “implicit.” This makes
these functions more coercible than column values so that
comparisons of the two do not result in Illegal mix of
collations
errors.
COERCIBILITY()
was modified to
accommodate this new coercibility value. See
Section 11.10.3, “Information Functions”.
InnoDB
: Upgrading from
4.1: The sorting order for end-space in
TEXT
columns for
InnoDB
tables has changed. Starting from
5.0.3, InnoDB
compares
TEXT
columns as space-padded at
the end. If you have a nonunique index on a
TEXT
column, you should run
CHECK TABLE
on it, and run
OPTIMIZE TABLE
if the check
reports errors. If you have a UNIQUE INDEX
on
a TEXT
column, you should rebuild
the table with OPTIMIZE TABLE
.
Boolean full-text phrase searching now requires only that matches contain exactly the same words as the phrase and in the same order. Nonword characters no longer need match exactly.
my.cnf
in the compile-time datadir (usually
/usr/local/mysql/data/
in the binary
tarball distributions) is not being read anymore. The value of
the environment variable MYSQL_HOME
is used
instead of the hard-coded path.
Additional control over transaction completion was implemented.
The COMMIT
and
ROLLBACK
statements support AND [NO] CHAIN
and
RELEASE
clauses. There is a new
RELEASE
SAVEPOINT
statement. The
completion_type
system variable
was added for setting the global and session default completion
type.
Security improvement: The server creates
.frm
, .MYD
,
.MYI
, .MRG
,
.ISD
, and .ISM
table
files only if a file with the same name does not already exist.
Thanks to Stefano Di Paola
<stefano.dipaola@wisec.it>
for finding and
informing us about this issue.
(CVE-2005-0711)
Added the
engine_condition_pushdown
system variable. For NDB, setting this variable to 1 allows
processing of some WHERE
clause conditions to
be processed in NDB nodes before rows are sent to the MySQL
server, rather than having rows sent to the server for
evaluation.
Support for the ISAM
storage engine has been
removed. If you have ISAM
tables, you should
convert them before upgrading. See
Section 2.18.1.2, “Upgrading from MySQL 4.1 to 5.0”.
Added the CREATE ROUTINE
and
ALTER ROUTINE
privileges, and
made the EXECUTE
privilege
operational.
BIT
in column definitions now is
a distinct data type; it no longer is treated as a synonym for
TINYINT(1)
.
Added cp932
(SJIS for Windows Japanese) and
eucjpms
(UJIS for Windows Japanese) character
sets.
MEMORY
(HEAP
) can have
VARCHAR
fields.
SHOW DATABASES
,
SHOW TABLES
,
SHOW COLUMNS
, and so forth,
display information about the
INFORMATION_SCHEMA
database. Also, several
SHOW
statements now accept a
WHERE
clause specifying which output rows to
display. See Chapter 19, INFORMATION_SCHEMA
Tables.
SHOW COLUMNS
now displays
NO
rather than blank in the
Null
output column if the corresponding table
column cannot be NULL
.
When the MyISAM
storage engine detects
corruption of a MyISAM
table, a message
describing the problem now is written to the error log.
A VARCHAR
column can now contain
up to 65535 bytes. In addition,
VARCHAR
columns now remember
trailing spaces. For more details, see
Section C.1, “Changes in Release 5.0.x (Production)”.
Added --innodb-checksums
and
--innodb-doublewrite
options for
mysqld.
Added several InnoDB
status variables. See
Section 5.1.6, “Server Status Variables”.
Added account-specific MAX_USER_CONNECTIONS
limit, which allows you to specify the maximum number of
concurrent connections for the account. Also, all limited
resources now are counted per account (instead of being counted
per user + host pair as it was before). Use the
--old-style-user-limits
option to
get the old behavior.
Implemented support for XA transactions. See
Section 12.3.7, “XA Transactions”. The implementation makes the
--innodb_safe_binlog
option obsolete, so it has
been removed.
mysqlbinlog now prints a
ROLLBACK
statement at the end of its output, in case the server crashed
while it was in the process of writing the final entry into the
last binary log named on the command line. This causes any
half-written transaction to be rolled back when the output is
executed. The
ROLLBACK
is
harmless if the binary log file was written and closed normally.
Seconds_Behind_Master
is
NULL
(which means “unknown”) if
the slave SQL thread is not running, or if the slave I/O thread
is not running or not connected to master. It is zero if the SQL
thread has caught up to the I/O thread. It no longer grows
indefinitely if the master is idle.
FLUSH TABLES WITH READ
LOCK
is now killable while it is waiting for running
COMMIT
statements to finish.
The MySQL server aborts immediately instead of simply issuing a
warning if it is started with the
--log-bin
option but cannot
initialize the binary log at startup (that is, an error occurs
when writing to the binary log file or binary log index file).
The binary log file and binary log index file now are handled
the same way as MyISAM
tables when there is a
“disk full” or “quota exceeded” error.
See Section B.5.4.3, “How MySQL Handles a Full Disk”.
InnoDB
: When MySQL/InnoDB is compiled on Mac
OS X 10.2 or earlier, detect the operating system version at run
time and use the fcntl()
file flush method
on Mac OS X versions 10.3 and later. In Mac OS X,
fsync()
does not flush the write cache in
the disk drive, but the special fcntl()
does; however, the flush request is ignored by some external
devices. Failure to flush the buffers may cause severe database
corruption at power outages.
Bugs fixed:
Replication: If multiple semicolon-separated statements were received in a single packet, they were written to the binary log as a single event rather than as separate per-statement events. For a server serving as a replication master, this caused replication to fail when the event was sent to slave servers. (Bug#8436)
Replication:
A replication master stamped a generated statement (such as a
SET
statement) with an error code intended
only for another statement. This could happen, for example, when
a statement generated a duplicate key error on the master but
still had be to replicated to the slave.
(Bug#8412)
Replication:
If the slave was running with
--replicate-*-table
options which excluded one
temporary table and included another, and the two tables were
used in a single DROP TEMPORARY TABLE IF
EXISTS
statement, as the ones the master automatically
writes to its binary log upon client's disconnection when client
has not explicitly dropped these, the slave could forget to
delete the included replicated temporary table. Only the slave
needs to be upgraded.
(Bug#8055)
Replication:
Multiple-table updates did not replicate properly to slave
servers where --replicate-*-table
options had
been specified.
(Bug#7011)
Replication:
A replication slave could crash after replicating many
ANALYZE TABLE
,
OPTIMIZE TABLE
, or
REPAIR TABLE
statements from the
master.
(Bug#6461, Bug#7658)
Replication:
Changed semantics of CREATE/ALTER/DROP
DATABASE
statements so that replication of
CREATE DATABASE
is possible when
using --binlog-do-db
and
--binlog-ignore-db
.
(Bug#6391)
Replication: DDL statements for views were not being written to the binary log (and thus not subject to replication). (Bug#4838)
mysqldump misinterpreted
“_
” and
“%
” characters in the names of
tables to be dumped as wildcard characters.
(Bug#9123)
In strict or traditional SQL mode, too-long string values
assigned to string columns (CHAR
,
VARCHAR
,
BINARY
,
VARBINARY
,
TEXT
, or
BLOB
) were correctly truncated,
but the server returned an SQLSTATE value of
01000
(should be 22001
).
(Bug#9029, Bug#6999)
The definition of the enumeration-valued
sql_mode
column of the
mysql.proc
table was missing some of the
current allowable SQL modes, so stored routines would not
necessarily execute with the SQL mode in effect at the time of
routine definition.
(Bug#8902)
TRUNCATE TABLE
did not work
within stored procedures. Now, within stored procedures,
TRUNCATE TABLE
is executed in the
same way as DELETE
. This change
was necessary because TRUNCATE
TABLE
implicitly locks tables.
(Bug#8850)
A rare race condition could cause
FLUSH TABLES WITH READ
LOCK
to hang.
(Bug#8682)
AES_DECRYPT(
could fail to return col_name
,key
)NULL
for invalid values
in col_name
, if
col_name
was declared as NOT
NULL
.
(Bug#8669)
If SELECT
DISTINCT
named an index column multiple times in the
select list, the server tried to access different key fields for
each instance of the column, which could result in a crash.
(Bug#8532)
MATCH ... AGAINST
in natural language mode
could cause a server crash if the FULLTEXT
index was not used in a join (that is,
EXPLAIN
did not show
fulltext
join mode) and the
search query matched no rows in the table.
(Bug#8522)
REPAIR TABLE
did not invalidate
query results in the query cache that were generated from the
table.
(Bug#8480)
LOAD INDEX
statement now loads
the index into memory.
(Bug#8452)
For a stored function that refers to a given table, invoking the function while selecting from the same table resulted in a server crash. (Bug#8405)
Comparison of a DECIMAL
column
containing NULL
to a subquery that produced
DECIMAL
values resulted in a
server crash.
(Bug#8397)
DELETE FROM
when the tbl_name
...
WHERE ... ORDER BY
tbl_name
.col_name
ORDER BY
column was
qualified with the table name caused the server to crash.
(Bug#8392)
Stored functions that used cursors could return incorrect results. (Bug#8386)
The Cyrillic letters I
(И) and SHORT I
(Й) were treated as being the same
character by the utf8_general_ci
collation.
(Bug#8385)
When performing boolean full-text searches on
utf8
columns, a double-quote character in the
search string caused the server to crash.
(Bug#8351)
The --set-character-set
option for
myisamchk was changed to
--set-collation
. The value
needed for specifying how to sort indexes is a collation name,
not a character set name.
(Bug#8349)
Corruption of MyISAM
table indexes could
occur with TRUNCATE TABLE
if the
table had already been opened. For example, this was possible if
the table had been opened implicitly by selecting from a
MERGE
table that mapped to the
MyISAM
table. The server now issues an error
message for TRUNCATE TABLE
under
these conditions.
(Bug#8306)
For a query with both GROUP BY
and
COUNT(DISTINCT)
clauses and a
FROM
clause with a subquery,
NULL
was returned for any
VARCHAR
column selected by the
subquery.
(Bug#8218)
Selecting from an INFORMATION_SCHEMA
table
combined with a subquery on an
INFORMATION_SCHEMA
table caused an error with
the message Table
.
(Bug#8164)tbl_name
is corrupted
Matching of table names by mysqlhotcopy now
accommodates DBD::mysql
versions 2.9003 and
up, which implement identifier quoting.
(Bug#8136)
Re-execution of prepared statements containing subqueries caused the server to crash. (Bug#8125)
A problem with equality propagation optimization for prepared statements and stored procedures caused a server crash upon re-execution of the prepared statement or stored procedure. (Bug#8115, Bug#8849)
Selecting from a view defined as a join caused a server crash if the query cache was enabled. (Bug#8054)
Results in the query cache generated from a view were not
properly invalidated after ALTER
VIEW
or DROP VIEW
on
that view.
(Bug#8050)
Creating a table using a name containing a character that is
illegal in character_set_client
resulted in the character being stripped from the name and no
error. The character now is considered an error.
(Bug#8041)
Certain correlated subqueries with forward references (referring to an alias defined later in the outer query) could crash the server. (Bug#8025)
Corrected a problem with references to DUAL
where statements such as SELECT 1 AS a FROM
DUAL
would succeed but statements such as
SELECT 1 AS a FROM DUAL LIMIT 1
would fail.
(Bug#8023)
Comparing a nested row expression (such as
ROW(1,(2,3))
) with a subquery caused the
server to crash.
(Bug#8022)
The number of columns in a row comparison against a subquery was calculated incorrectly. (Bug#8020)
mysqldump now avoids writing SET
NAMES
to the dump output if the server is older than
version 4.1 and would not understand that statement.
(Bug#7997)
A deadlock could occur on an update followed by a
SELECT
on an
InnoDB
table without any explicit locks being
taken. InnoDB
now takes an exclusive lock
when INSERT ON DUPLICATE KEY UPDATE
is
checking duplicate keys.
(Bug#7975)
A slave running MySQL 3.23.51 or newer hung while trying to
connect to a master running MySQL 3.23.50 or older. (The reason
for this was a bug in the old masters — SELECT
@@
caused the
server to hang — which was fixed in MySQL 3.23.50.)
(Bug#7965)unknown_var
Erroneous output resulted from
SELECT
DISTINCT
combined with a subquery and GROUP
BY
.
(Bug#7946)
FOUND_ROWS()
returned an
incorrect value after a SELECT SQL_CALC_FOUND_ROWS
DISTINCT
statement that selected constants and
included GROUP BY
and
LIMIT
clauses.
(Bug#7945)
mysqld_safe now understands the
--help
option. Previously, it ignored the
option and attempted to start the server anyway.
(Bug#7931)
Creating a user with grants failed when specifying a password but worked without one. (Bug#7905)
Comparing the result of a subquery to a nonexistent column caused the server to crash. This issue affected MySQL on Windows platforms only. (Bug#7885)
ALTER TABLE
improperly accepted
an index on a TIMESTAMP
column
that CREATE TABLE
would reject.
(Bug#7884)
MySQL allowed concurrent updates (including inserts and deletes) to a table if binary logging was enabled. Now, all updates are executed in a serialized fashion, because they are executed serialized when the binary log is replayed. (Bug#7879)
Ensured that mysqldump --single-transaction
sets its transaction isolation level to
REPEATABLE READ
before
proceeding (otherwise if the MySQL server was configured to run
with a default isolation level lower than
REPEATABLE READ
it could give
an inconsistent dump).
(Bug#7850)
mysqlbinlog forgot to add backquotes around
the collation of user variables (causing later parsing problems
as BINARY
is a reserved word).
(Bug#7793)
A Table is full error occurred when the
table was still smaller than
max_heap_table_size
.
(Bug#7791)
Use of GROUP_CONCAT()
with
HAVING
caused the server to crash.
(Bug#7769)
The CONV()
function returned an
unsigned BIGINT
number, which
does not fit in 32 bits.
(Bug#7751)
The IN()
operator did not return
correct results if all values in the list were constants and
some of them used substring functions such as
LEFT()
,
RIGHT()
, or
MID()
.
(Bug#7716)
When encountering a disk full or
quota exceeded write error,
MyISAM
sometimes failed to sleep and retry
the write, resulting in a corrupted table.
(Bug#7714)
The CONVERT_TZ()
function, when
its second or third argument was from a
const
table, caused the
server to crash. (See Section 12.8.2, “EXPLAIN
Syntax”.)
(Bug#7705)
The output of the STATUS
(\s
) command in mysql had
the values for the server and client character sets reversed.
(Bug#7571)
A LEFT OUTER JOIN
between an empty base table
and a view on an empty base table caused a server crash.
(Bug#7433)
Ordering by an unsigned expression (more complex than a column
reference) was treating the value as signed, producing
incorrectly sorted results. HAVING
was also
treating unsigned columns as signed.
(Bug#7425)
The server crashed when an error occurred during the filling of a temporary table created for handling a view or derived table. (Bug#7413)
Made the MySQL server accept executing SHOW
CREATE DATABASE
even if the connection has an open
transaction or locked tables. Refusing it made
mysqldump --single-transaction sometimes fail
to print a complete CREATE
DATABASE
statement for some dumped databases.
(Bug#7358)
Handling of trailing spaces was incorrect for the
ucs2
character set.
(Bug#7350)
--expire-logs-days
was not
honored if using only transactions.
(Bug#7236)
Some INFORMATION_SCHEMA
columns that
contained timestamp values were of type
VARBINARY
. These were changed to
TIMESTAMP
.
(Bug#7217)
Some INFORMATION_SCHEMA
columns that
contained catalog identifiers were of type
LONGTEXT
. These
were changed to
VARCHAR(
, where
N
N
is the appropriate maximum
identifier length.
(Bug#7215)
Use of GROUP_CONCAT()
in the
select list when selecting from a view caused a server crash.
(Bug#7116)
An expression that tested a case-insensitive character column
against string constants that differed in lettercase could fail
because the constants were treated as having a binary collation.
(For example, WHERE city='London' AND
city='london'
could fail.)
(Bug#7098, Bug#8690)
Setting the initial AUTO_INCREMENT
value for
an InnoDB
table using CREATE TABLE
... AUTO_INCREMENT =
did
not work, and n
ALTER TABLE ... AUTO_INCREMENT =
did not reset the current
value.
(Bug#7061)n
When setting integer system variables to a negative value with
SET VARIABLES
, the value was treated as a
positive value modulo 232.
(Bug#6958)
Use of a view in a correlated subquery that contains
HAVING
but no GROUP BY
caused a server crash.
(Bug#6894)
Praparing a query using the
CONVERT_TZ()
function with
constant arguments caused the server to crash.
(Bug#6849)
Handling by mysql_list_fields()
of references to stored functions within views was incorrect and
could result in a server crash.
(Bug#6814)
A sequence of
BEGIN
(or
SET autocommit = 0
),
FLUSH TABLES WITH READ
LOCK
, transactional update,
COMMIT
,
FLUSH TABLES WITH READ
LOCK
could hang the connection forever and possibly
the MySQL server itself. This happened for example when running
the innobackup
script several times.
(Bug#6732)
Prevent adding CREATE TABLE .. SELECT
query
to the binary log when the insertion of new records partially
failed.
(Bug#6682)
mysqlbinlog did not print SET
PSEUDO_THREAD_ID
statements in front of
LOAD DATA
INFILE
statements inserting into temporary tables,
thus causing potential problems when rolling forward these
statements after restoring a backup.
(Bug#6671)
If a MyISAM
table on Windows had
INDEX DIRECTORY
or DATA
DIRECTORY
table options, mysqldump
dumped the directory path names with single-backslash path name
separators. This would cause syntax errors when importing the
dump file. mysqldump now changes
“\
” to
“/
” in the path names on
Windows.
(Bug#6660)
SHOW CREATE TABLE
now reports
ENGINE=MEMORY
rather than
ENGINE=HEAP
for a MEMORY
table (unless the MYSQL323
SQL
mode is enabled).
(Bug#6659)
Incorrectly ordered results were returned from a query using a
FULLTEXT
index to retrieve rows and there was
another index that was usable for ORDER BY
.
For such a query, EXPLAIN
showed
the fulltext
join type, but
showed the other (not FULLTEXT
) index in the
Key
column.
(Bug#6635)
CREATE TABLE ... LIKE
failed on Windows when
the source or destination table was located in a symlinked
database directory.
(Bug#6607)
Retrieving from a view defined as a
SELECT
that mixed
UNION ALL
and
UNION DISTINCT
resulted in a different result than retrieving from the original
SELECT
.
(Bug#6565)
Selecting from a view that had an EXISTS
or
NOT EXISTS
subquery did not always work
properly, and selecting columns by name could cause a server
crash. With SELECT *
, crashes did not occur,
but columns in the outer query were not resolved properly.
(Bug#6394)
Fixed a problem in
NO_BACKSLASH_ESCAPES
SQL mode
for strings that contained both the string quoting character and
backslash.
(Bug#6368)
The CHAR()
function was not
ignoring NULL
arguments, contrary to the
documentation.
(Bug#6317)
Starting and stopping the slave thread (only) could in some circumstance cause the server to crash. (Bug#6148)
InnoDB
: Honor the
--tmpdir
startup option when
creating temporary files. Previously, InnoDB
temporary files were always created in the temporary directory
of the operating system. On Netware, InnoDB
will continue to ignore --tmpdir
.
(Bug#5822)
A HAVING
clause that referred to
RAND()
or a user-defined function
in the SELECT
part of a query
through an alias could cause MySQL to crash or to return an
incorrect value.
(Bug#5185)
Platform and architecture information in version information
produced for --version
option on Windows was
always Win95/Win98 (i32)
. More accurately
determine platform as Win32
or
Win64
for 32-bit or 64-bit Windows, and
architecture as ia32
for x86,
ia64
for Itanium, and axp
for Alpha.
(Bug#4445)
When using the RPAD()
function
(or any function adding spaces to the right) in a query that had
to be resolved by using a temporary table, all resulting strings
had rightmost spaces removed (that is,
RPAD()
did not work)
(Bug#4048)
Host name matching didn't work if a netmask was specified for table-specific privileges. (Bug#3309)
mysql_fix_privilege_tables
now makes it
possible for mysql
privilege tables created
in MySQL 5.0 to be used with MySQL 4.1. This makes it possible
to downgrade from 5.0 to 4.1, or to run MySQL 4.1 and 5.0 using
the same privilege table files for testing purposes.
Giving mysqld a SIGHUP
caused it to crash.
Prepared statements using
SUM(DISTINCT...)
did not perform
correctly.
InnoDB
: Use native
tmpfile()
function on Netware. All
InnoDB
temporary files are created under
sys:\tmp
. Previously,
InnoDB
temporary files were never deleted on
Netware.
A symlink vulnerability in the mysqlaccess script was reported by Javier Fernandez-Sanguino Pena and Debian Security Audit Team. (CVE-2005-0004)
A number of portability issues relating to overflow in floating point values were corrected.
Prepared statements now gives warnings on prepare.
The combination of -not
and
trunc*
operators in a full-text search did
not work correctly. Using more than one truncated negative
search term caused the result to be empty.
Prepared statements did not work correctly with OUTER
JOIN
.
User Comments
Add your own comment.