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:
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)
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 18.2.2.1, “UDF Calling Sequences for Simple Functions”,
Section 18.2.2.2, “UDF Calling Sequences for Aggregate Functions”, and
Section 18.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)
InnoDB
: Added configuration option and
settable global variable
innodb_autoextend_increment
for setting the size in megabytes by which
InnoDB
tablespaces are extended when they
become full. The default value is 8, corresponding to the
fixed increment of 8MB in previous versions of MySQL.
InnoDB: Do not acquire an internal InnoDB
table lock in LOCK TABLES
if
autocommit = 1
. This helps in
porting old MyISAM
applications to
InnoDB
. InnoDB
table
locks in that case caused deadlocks very easily.
Bugs fixed:
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)
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)
Index cardinality was not being updated properly for
TEMPORARY
tables under some circumstances,
such as CREATE
TABLE ... SELECT
followed by
ANALYZE TABLE
. (Bug#7519)
Fixed a server crash caused by DELETE FROM
when the tbl_name
... WHERE ... ORDER BY
tbl_name
.col_name
ORDER BY
column was qualified with
the table name. (Bug#8392)
Fixed a bug in MATCH ... AGAINST
in natural
language mode that could cause a server crash if the
FULLTEXT
index was not used in a join
(EXPLAIN
did not show
fulltext
join mode) and the
search query matched no rows in the table (Bug#8522).
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)
Fixed an optimization problem that allowed a negative number
to be stored in a DOUBLE UNSIGNED
column
when it was assigned a value from a signed
DOUBLE
column. (Bug#7700)
Fixed a failure of multiple-table updates to replicate
properly on slave servers when
--replicate-*-table
options had been
specified. (Bug#7011)
Renamed set_bit()
and
clear_bit()
functions in source code to
avoid a conflict with functions of the same names in Linux
kernel header files. (Bug#7971)
Part of the information being used to cache access-permission lookups was not always reinitialized properly, particularly for connections from localhost on Windows. The result was connection failures that appeared to occur randomly. (Bug#5569)
Corrected a problem with the
QUOTE()
function returning bad
results. (Bug#8248)
Fixed a problem where INSERT INTO ...SELECT
failed when the source and target table were the same.
(Bug#6034)
Fixed a problem where RPM installation on Linux as a nonprivileged user would result in incomplete installation. (Bug#7347)
Change thread stack size used for building Linux RPM distributions to avoid warnings about stack size during server startup. (Bug#6226)
Fixed a symlink vulnerability in the mysqlaccess script. Reported by Javier Fernandez-Sanguino Pena and Debian Security Audit Team. (CVE-2005-0004)
Fixed support for C API function
mysql_list_fields()
, which was
accidentally broken in 4.0.22 (Bug#6761)
Make
query_cache_wlock_invalidate
system variable visible in SHOW
VARIABLES
output. (Bug#7594)
Fixed a bug which caused
FROM_UNIXTIME()
function to
return NULL
for zero argument instead of
the Epoch. (Bug#7515)
Now in datetime values two digit year is interpreted as year in 20th or 21st century even with zero month and day. (Bug#7297)
Fixed a bug in QUOTE
function when used in
conjunction with some other string functions. This lead to
severe buffer overflow and server crashing. (Bug#7495)
InnoDB: Work around a problem in AIX 5.1 patched with ML7
security patch: InnoDB would refuse to open its
ibdata
files, complaining about an
operating system error 0.
InnoDB: Fixed a memory corruption bug if one created a table
with a primary key that contained at least two column
prefixes. An example: CREATE TABLE t(a char(100), b
tinyblob, PRIMARY KEY(a(5), b(10)))
.
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.
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)
InnoDB: Fix a theoretical hang over the adaptive hash latch in
InnoDB if one runs INSERT ... SELECT ...
(binlog not enabled), or a multiple-table
UPDATE
or
DELETE
, and only the read
tables are InnoDB type, the rest are
MyISAM
; this also fixes Bug#7879 for
InnoDB type tables. (Bug#7879)
InnoDB: Fixed a bug: 32-bit mysqld binaries
built on HP-UX-11 did not work with InnoDB
files greater than 2 GB in size. (Bug#6189)
InnoDB: Fixed a bug: InnoDB failed to drop a table in the background drop queue if the table was referenced by a foreign key constraint.
InnoDB: Fixed a bug: if we dropped a table where an
INSERT
was waiting for a lock
to check a FOREIGN KEY
constraint, then an
assertion would fail in
lock_reset_all_on_table()
, since that
operation assumes no waiting locks on the table or its
records.
Fixed that, when encountering a “disk full” or
“quota exceeded” write error,
MyISAM
sometimes didn't sleep and retry the
write, thus resulting in a corrupted table. (Bug#7714)
Fixed that a slave could crash after replicating many
ANALYZE TABLE
,
OPTIMIZE TABLE
, or
REPAIR TABLE
statements from
the master. (Bug#6461, Bug#7658)
Fixed a bug where MySQL was allowing concurrent updates (inserts, deletes) to a table if binary logging is enabled. Changed to ensure that all updates are executed in a serialized fashion, because they are executed serialized when binlog is replayed. (Bug#7879)
Fixed a bug in replication that caused the master to stamp
generated statements (such as
SET
statements) with an error_code
intended
only for another statement. This could happen, for example,
when a statements generates a duplicate key error on the
master but must be replicated. (Bug#8412)
Documented problem with using mysqldump in
4.0.x to dump TIMESTAMP(2)
and
TIMESTAMP(4)
data types. (Bug#6530)
User Comments
Add your own comment.