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:
Added default_week_format
system variable. The value is used as the default mode for the
WEEK()
function.
mysqld now reads an additional option file
group having a name corresponding to the server's release
series: [mysqld-4.0]
for 4.0.x servers,
[mysqld-4.1]
for 4.1.x servers, and so
forth. This allows options to be specified on a
series-specific basis.
The CONCAT_WS()
function no
longer skips empty strings. (Bug#586).
InnoDB
now supports indexing a prefix of a
column. This means, in particular, that
BLOB
and
TEXT
columns can be indexed in
InnoDB
tables, which was not possible
before.
A documentation change: Function
INTERVAL(NULL, ...)
returns
-1
.
Enabled INSERT
from
SELECT
when the table into
which the records are inserted is also a table listed in the
SELECT
.
Allow CREATE TABLE
and
INSERT
from any
UNION
.
The SQL_CALC_FOUND_ROWS
option now always
returns the total number of rows for any
UNION
.
Removed --table
option from
mysqlbinlog to avoid repeating
mysqldump functionality.
Comment lines in option files can now start from the middle of
a line, too (like basedir=c:\mysql # installation
directory
).
Changed optimizer slightly to prefer index lookups over full table scans in some boundary cases.
Added thread-specific
max_seeks_for_key
variable
that can be used to force the optimizer to use keys instead of
table scans even if the cardinality of the index is low.
Added optimization that converts LEFT JOIN
to normal join in some cases.
A documentation change: added a paragraph about failover in replication (how to use a surviving slave as the new master, how to resume to the original setup). See Section 14.10, “Replication FAQ”.
A documentation change: added warning notes about safe use of
the CHANGE MASTER TO
statement.
See Section 12.5.2.1, “CHANGE MASTER TO
Syntax”.
MySQL now issues a warning (not an error, as in 4.0.13) when it opens a table that was created with MySQL 4.1.
Added --nice
option to
mysqld_safe to allow setting the niceness
of the mysqld process. (Thanks to Christian
Hammers for providing the initial patch.) (Bug#627)
Added --read-only
option to
cause mysqld to allow no updates except
from slave threads or from users with the
SUPER
privilege. (Original
patch from Markus Benning).
SHOW BINLOG EVENTS FROM x
where
x
is less than 4 now silently converts
x
to 4 instead of printing an error. The
same change was done for CHANGE MASTER TO
MASTER_LOG_POS=x
and CHANGE MASTER TO
RELAY_LOG_POS=x
.
mysqld now only adds an interrupt handler
for the SIGINT
signal if you start it with
the new --gdb
option. This is
done because some MySQL users encountered strange problems
when they accidentally sent SIGINT
to
mysqld threads.
RESET SLAVE
now clears the
Last_Errno
and
Last_Error
fields in the output of
SHOW SLAVE STATUS
.
Added max_relay_log_size
variable; the relay log is rotated automatically when its size
exceeds max_relay_log_size
.
But if max_relay_log_size
is
0 (the default),
max_binlog_size
is used (as
in older versions).
max_binlog_size
still applies
to binary logs in any case.
FLUSH LOGS
now rotates relay logs in addition to the other types of logs
it rotates.
Bugs fixed:
Comparison/sorting for latin1_de
character
set was rewritten. The old algorithm could not handle cases
like "sä" > "ßa"
. See
Section 9.2, “Using the German Character Set”. In rare cases it
resulted in table corruption.
Fixed a problem with the password prompt on Windows. (Bug#683)
ALTER TABLE ... UNION=(...)
for
MERGE
table is now allowed even if some
underlying MyISAM
tables are read only.
(Bug#702)
Fixed a problem with CREATE TABLE t1 SELECT
x'41'
. (Bug#801)
Removed some incorrect lock warnings from the error log.
Fixed memory overrun when doing REPAIR
TABLE
on a table with a multiple-part auto_increment
key where one part was a packed
CHAR
.
Fixed a probable race condition in the replication code that
could potentially lead to
INSERT
statements not being
replicated in the event of a
FLUSH LOGS
command or when the binary log exceeds
max_binlog_size
. (Bug#791)
Fixed a crashing bug in INTERVAL
and
GROUP BY
or DISTINCT
.
(Bug#807)
Fixed bug in mysqlhotcopy so it actually aborts for unsuccessful table copying operations. Fixed another bug so that it succeeds when there are thousands of tables to copy. (Bug#812)
Fixed problem with mysqlhotcopy failing to read options from option files. (Bug#808)
Fixed bugs in optimizer that sometimes prevented MySQL from
using FULLTEXT
indexes even though it was
possible (for example, in SELECT * FROM t1 WHERE
MATCH a,b AGAINST("index") > 0
).
Fixed a bug with “table is full” in
UNION
operations.
Fixed a security problem that enabled users with no privileges
to obtain information on the list of existing databases by
using SHOW TABLES
and similar
commands.
Fixed a stack problem on UnixWare/OpenUnix.
Fixed a configuration problem on UnixWare/OpenUNIX and OpenServer.
Fixed a problem with
max_user_connections
.
HANDLER
without an index now
works properly when a table has deleted rows. (Bug#787)
Fixed a bug with LOAD DATA
in
mysqlbinlog. (Bug#670)
Fixed that SET CHARACTER SET DEFAULT
works.
(Bug#462)
Fixed MERGE
table behavior in
ORDER BY ... DESC
queries. (Bug#515)
Fixed server crash on
PURGE
MASTER LOGS
or
SHOW MASTER
LOGS
when the binary log is off. (Bug#733)
Fixed password-checking problem on Windows. (Bug#464)
Fixed the bug in comparison of a
DATETIME
column and an integer
constant. (Bug#504)
Fixed remote mode of mysqlbinlog. (Bug#672)
Fixed ERROR 1105: Unknown error
that
occurred for some SELECT
queries, where a column that was declared as NOT
NULL
was compared with an expression that took
NULL
value.
Changed timeout in
mysql_real_connect()
to use
poll()
instead of
select()
to work around problem with many
open files in the client.
Fixed incorrect results from MATCH ...
AGAINST
used with a LEFT JOIN
query.
The maximum value for system variables was limited to 4294967295 when specified on the command line.
Fixed a bug that sometimes caused spurious “Access
denied” errors in HANDLER ... READ
statements, when a table is referenced via an alias.
Fixed portability problem with safe_malloc
,
which caused MySQL to give "Freeing wrong aligned pointer"
errors on SCO 3.2.
ALTER TABLE ... ENABLE/DISABLE KEYS
could
cause a core dump when done after an
INSERT DELAYED
statement on the
same table.
Fixed problem with conversion of localtime to GMT where some times resulted in different (but correct) timestamps. Now MySQL should use the smallest possible timestamp value in this case. (Bug#316)
Fixed a bug (accidentally introduced by us but present only in
version 4.0.13) that made
INSERT ...
SELECT
into an AUTO_INCREMENT
column not replicate well. This bug is in the master, not in
the slave. (Bug#490)
Fixed a bug: When an
INSERT ...
SELECT
statement inserted rows into a
nontransactional table, but failed at some point (for example,
due to a “Duplicate key” error), the query was
not written to the binary log. Now it is written to the binary
log, with its error code, as all other queries are. About the
slave-skip-errors
option for how to handle
partially completed queries in the slave, see
Section 14.8, “Replication and Binary Logging Options and Variables”. (Bug#491)
SET foreign_key_checks = 0
was not
replicated properly. The fix probably will not be backported
to 3.23.
On a slave, LOAD
DATA INFILE
which had no IGNORE
or REPLACE
clause on the
master, was replicated with IGNORE
.
Although this is not a problem if the master and slave data
are identical (a LOAD
that produces no
duplicate conflicts on the master produces none on the slave
anyway), which is true in normal operation, it is better for
debugging not to silently add the IGNORE
.
That way, you can get an error message on the slave and
discover that for some reason, the data on master and slave
are different and investigate why. (Bug#571)
On a slave, LOAD
DATA INFILE
printed an incomplete “Duplicate
entry '%-.64s' for key %d'” message (the key name and
value were not mentioned) in case of duplicate conflict (which
does not happen in normal operation). (Bug#573)
When using a slave compiled with --debug
,
CHANGE MASTER TO RELAY_LOG_POS
could cause
a debug assertion failure. (Bug#576)
When doing a LOCK TABLES WRITE
on an
InnoDB
table, commit could not happen, if
the query was not written to the binary log (for example, if
--log-bin
was not used, or
binlog-ignore-db
was used). (Bug#578)
If a 3.23 master had open temporary tables that had been
replicated to a 4.0 slave, and the binary log got rotated,
these temporary tables were immediately dropped by the slave
(which caused problems if the master used them subsequently).
This bug had been fixed in 4.0.13, but in a manner which
caused an unlikely inconvenience: If the 3.23 master died
brutally (power failure), without having enough time to
automatically write DROP TABLE
statements to its binary log, then the 4.0.13 slave would not
notice the temporary tables have to be dropped, until the
slave mysqld server is restarted. This
minor inconvenience is fixed in 3.23.57 and 4.0.14 (meaning
the master must be upgraded to 3.23.57 and the slave to 4.0.14
to remove the inconvenience). (Bug#254)
If MASTER_POS_WAIT()
was
waiting, and the slave was idle, and the slave SQL thread
terminated, MASTER_POS_WAIT()
would wait forever. Now when the slave SQL thread terminates,
MASTER_POS_WAIT()
immediately
returns NULL
(“slave
stopped”). (Bug#651)
After RESET SLAVE; START SLAVE;
, the
Relay_Log_Space
value displayed by
SHOW SLAVE STATUS
was too big
by four bytes. (Bug#763)
If a query was ignored on the slave (because of
--replicate-ignore-table
and
other similar rules), the slave still checked if the query got
the same error code (0, no error) as on the master. So if the
master had an error on the query (for example,
“Duplicate entry” in a multiple-row insert), then
the slave stopped and warned that the error codes didn't
match. (Bug#797)
User Comments
Add your own comment.