End of Product Lifecycle. Active development and support for MySQL Database Server versions 3.23, 4.0, and 4.1 has ended. For details, see http://www.mysql.com/about/legal/lifecycle/#calendar. Please consider upgrading to a recent version. Further updates to the content of this manual will be minimal. All formats of this manual will continue to be available until 31 Dec 2010.
Functionality added or changed:
lower_case_table_names
is now
forced to 1 if the database directory is located on a
case-insensitive file system. (Bug#1812)
Symlink creation is now disabled on systems where
realpath()
doesn't work. (Before one could
use CREATE TABLE .. DATA DIRECTORY=..
even
if HAVE_BROKEN_REALPATH
was defined. This
is now disabled to avoid problems when running
ALTER TABLE
).
Inserting a negative AUTO_INCREMENT
value
in a MyISAM
table no longer updates the
AUTO_INCREMENT
counter to a big unsigned
value. (Bug#1366)
Added four new modes to WEEK(...,
mode)
function. (Bug#1178)
Allow UNION
DISTINCT
syntax.
MySQL now syncs to disk each time .frm
file is created.
mysql_server_init()
now
returns 1 if it can't initialize the environment. (Previously
mysql_server_init()
called
exit(1)
if it could not create a key with
pthread_key_create()
. (Bug#2062)
Allow spaces in Windows service names.
Changed the default Windows service name for
mysqld from MySql
to
MySQL
. This should not affect usage,
because service names are not case sensitive.
When you install mysqld as a service on
Windows systems, mysqld reads startup
options in option files from the option group with the same
name as the service name. (Except when the service name is
MySQL
).
Bugs fixed:
Sending SIGHUP
to mysqld
crashed the server if it was running with
--log-bin
. (Bug#2045)
One can now configure MySQL as a Windows service as a normal user. (Bug#1802). Thanks to Richard Hansen for fixing this.
Database names are now compared in lowercase in
ON
clauses when
lower_case_table_names
is
set. (Bug#1736)
IGNORE ... LINES
option to
LOAD DATA
INFILE
didn't work when used with fixed length rows.
(Bug#1704)
Fixed problem with
UNIX_TIMESTAMP()
for timestamps
close to 0. (Bug#1998)
Fixed problem with character values greater than 128 in the
QUOTE()
function. (Bug#1868)
Fixed caching bug in multiple-table updates where same table was used twice. (Bug#1711)
Fixed directory permissions for the MySQL-server RPM documentation directory. (Bug#1672)
Fixed server crash when updating an
ENUM
column that is set to the
empty string (for example, with
REPLACE()
). (Bug#2023)
mysql client program now correctly prints
connection identifier returned by
mysql_thread_id()
as unsigned
integer rather than as signed integer. (Bug#1951)
FOUND_ROWS()
could return
incorrect number of rows after a query with an impossible
WHERE
condition. (Bug#1468)
SHOW DATABASES
no longer shows
.sym
files (on Windows) that do not point
to a valid directory. (Bug#1385)
Fixed a possible memory leak on Mac OS X when using the shared
libmysql.so
library. (from
pthread_key_create()
). (Bug#2061)
Fixed a bug in DELETE ... ORDER BY ...
LIMIT
where the rows were not deleted in the proper
order. (Bug#1024, Bug#1697).
Fixed serious problem with multi-threaded programs on Windows that used the embedded MySQL libraries. (Locks of tables were not handled correctly between different threads).
Code cleanup: Fixed a few code defects (potential memory leaks, null pointer dereferences, uninitialized variables). Thanks to Reasoning Inc. for informing us about these findings.
Fixed a buffer overflow error that occurred with prepended
“0
” characters in some columns
of type DECIMAL
. (Bug#2128)
Filesort was never shown in
EXPLAIN
if query contained an
ORDER BY NULL
clause. (Bug#1335)
Fixed invalidation of whole query cache on
DROP DATABASE
. (Bug#1898)
Fixed bug in range optimizer that caused wrong results for
some unlikely
AND
/OR
queries. (Bug#1828)
Fixed a crash in ORDER BY
when ordering by
expression and identifier. (Bug#1945)
Fixed a crash in an open
HANDLER
when an
ALTER TABLE
was executed in a
different connection. (Bug#1826)
Fixed a bug in trunc*
operator of full-text
search which sometimes caused MySQL not to find all matched
rows.
Fixed bug in prepending “0
”
characters to DECIMAL
column
values.
Fixed optimizer bug, introduced in 4.0.16, when
REF
access plan was preferred to more
efficient RANGE
on another column.
Fixed problem when installing a MySQL server as a Windows
service using a command of the form mysqld --install
mysql
--defaults-file=path-to-file
.
(Bug#1643)
Fixed an incorrect result from a query that uses only
const
tables (such as
one-row tables) and nonconstant expression (such as
RAND()
). (Bug#1271)
Fixed bug when the optimizer did not take
SQL_CALC_FOUND_ROWS
into account if
LIMIT
clause was present. (Bug#1274)
mysqlbinlog now asks for a password at the
console when the -p
or
--password
option is used
with no argument. This is consistent with the way that other
clients such mysqladmin and
mysqldump behave.
A consequence of this change is that it is no longer
possible to invoke mysqlbinlog as
mysqlbinlog -p pass_val (with a space
between the -p
option and the following
password value). (Bug#1595)
Fixed bug accidentally introduced in 4.0.16 where the slave
SQL thread deleted its replicated temporary tables when
STOP SLAVE
was issued.
In a “chain” replication setup
A->B->C
, if 2 sessions on A updated
temporary tables of the same name at the same time, the binary
log of B
became incorrect, resulting in
C
becoming confused. (Bug#1686)
In a “chain” replication setup
A->B->C
, if STOP
SLAVE
was issued on B
while it
was replicating a temporary table from A
,
then when START SLAVE
was
issued on B
, the binary log of
B
became incorrect, resulting in
C
becoming confused. (Bug#1240)
When MASTER_LOG_FILE
and
MASTER_LOG_POS
were not specified,
CHANGE MASTER TO
used the
coordinates of the slave I/O thread to set up replication,
which broke replication if the slave SQL thread lagged behind
the slave I/O thread. This caused the slave SQL thread to lose
some events. The new behavior is to use the coordinates of the
slave SQL thread instead. See
Section 12.5.2.1, “CHANGE MASTER TO
Syntax”. (Bug#1870)
Now if integer is stored or converted to
TIMESTAMP
or
DATETIME
value checks of year,
month, day, hour, minute and second ranges are performed and
numbers representing illegal timestamps are converted to 0
value. This behavior is consistent with manual and with
behavior of string to
TIMESTAMP
/DATETIME
conversion. (Bug#1448)
Fixed bug when BIT_AND()
and
BIT_OR()
group functions
returned incorrect value if
SELECT
used a temporary table
and no rows were found. (Bug#1790).
BIT_AND()
is now unsigned in
all contexts. This means that it now returns
18446744073709551615 (= 0xffffffffffffffff) instead of -1 if
there were no rows in the result.
Fixed bug with BIT_AND()
still
returning signed value for an empty set in some cases.
(Bug#1972)
Fixed bug with
^
(XOR)
and
>>
(bit shift) still returning signed value in some cases.
(Bug#1993)
Replication: a rare race condition in the slave SQL thread, which could lead to a wrong complain that the relay log is corrupted. (Bug#2011)
Replication: in the slave SQL thread, a multiple-table
UPDATE
could produce a wrong
complain that some record was not found in one table, if the
UPDATE
was preceded by a
INSERT ...
SELECT
. (Bug#1701)
Fixed deficiency in MySQL code which is responsible for
scanning directories. This deficiency caused
SHOW TABLE STATUS
to be very
slow when a database contained a large number of tables, even
if a single particular table were specified. (Bug#1952)
User Comments
Add your own comment.