Due to a libtool-related bug in the source
distribution, the creation of shared
libmysqlclient
libraries was not possible
(the resulting files were missing the .so
file name extension). The file ltmain.sh
was updated to fix this problem and the resulting source
distribution was released as
mysql-4.1.8a.tar.gz
. This modification
did not affect the binary packages. (Bug#7401)
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:
MySQL Cluster:
Added support for a [mysql_cluster]
section
to the my.cnf
file for configuration
settings specific to MySQL Cluster. The
ndb-connectstring
variable was moved here.
Replication:
mysqldump --single-transaction
--master-data
is now able to take an online
(nonblocking) dump of InnoDB
and report the
corresponding binary log coordinates, which makes a backup
suitable for point-in-time recovery, roll-forward or replication
slave creation. See Section 4.5.4, “mysqldump — A Database Backup Program”.
A connection doing a rollback now displays "Rolling back" in the
State
column of SHOW
PROCESSLIST
.
Added --lock-all-tables
to
mysqldump to lock all tables by acquiring a
global read lock.
In the normal log MySQL now prints the log position for
Binlog Dump
requests.
mysqlbinlog
now prints an informative
commented line (thread id, timestamp, server id, and so forth)
before each LOAD DATA
INFILE
, like it does for other queries; unless
--short-form
is used.
Added --disable-log-bin
option to mysqlbinlog. Using this option you
can disable binary logging for the statements produced by
mysqlbinlog. That is, mysqlbinlog
--disable-log-bin <file_name> | mysql won't
write any statements to the MySQL server binary log.
Automatic character set conversion formerly was done for
operations that mix a column and a string such as assigning a
string to a column, when this was possible without loss of
information. Automatic conversion for operations that mix
columns and strings has been expanded to cover many functions
(such as CONCAT()
) and assignment
operators. This reduces the frequency of Illegal mix of
collations
errors.
For ALTER DATABASE
, the database
name now can be omitted to apply the change to the default
database.
Added WITH CONSISTENT SNAPSHOT
clause to
START
TRANSACTION
to begin a transaction with a consistent
read.
The statements CREATE TABLE
,
TRUNCATE TABLE
,
DROP DATABASE
, and
CREATE DATABASE
cause an implicit
commit.
The --master-data
option for
mysqldump now takes an optional argument of 1
or 2 to produce a noncommented or commented
CHANGE MASTER TO
statement. The
default is 1 for backward compatibility.
Added --hex-blob
option to
mysqldump for dumping binary string columns
using hexadecimal notation.
Added --order-by-primary
to
mysqldump, to sort each table's data in a
dump file. This may be useful when dumping a
MyISAM
table which will be loaded into an
InnoDB
table. Dumping a
MyISAM
table with this option is considerably
slower than without.
InnoDB
: Commit after every 10,000 copied rows
when executing ALTER TABLE
. This
makes it much faster to recover from an aborted
ALTER TABLE
or
OPTIMIZE TABLE
.
FULLTEXT
index block size is changed to be
1024 instead of 2048.
InnoDB
: Do not periodically write
SHOW INNODB STATUS
information to
a temporary file unless the configuration option
innodb_status_file = 1
is set.
Added mysql_hex_string()
C API
function that hex-encodes a string.
Bugs fixed:
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:
LOAD DATA
INFILE
now works with option replicate-rewrite-db.
(Bug#6353)
Replication:
InnoDB
: If one used
INSERT IGNORE
to insert several rows at a time, and the first inserts were
ignored because of a duplicate key collision, then
InnoDB
in a replication slave assigned
AUTO_INCREMENT
values 1 bigger than in the
master. This broke the MySQL replication.
(Bug#6287)
Replication:
OPTIMIZE TABLE
,
REPAIR TABLE
, and
ANALYZE TABLE
are now replicated
without any error code in the binary log.
(Bug#5551)
Using a modified client library, a malicious user could take advantage of an issue in MySQL authentication code to crash the server with specially crafted packets. (Bug#7187)
Using the string function LEFT
as part of the
expression used as GROUP BY
column caused the
server to crash.
(Bug#7101)
InnoDB
: Refuse to open new-style tables
created with MySQL 5.0.3 or later.
(Bug#7089)
A reference to a column by name from a WHERE
subquery to an outer query, with use of a temporary table by the
outer query.
(Bug#7079)
Insufficient privilege checks were made for
SHOW CREATE TABLE
.
(Bug#7043)
mysql_stmt_data_seek(stmt,0)
now
rewinds a counter and enables buffered rows to be re-fetched on
the client side.
(Bug#6996)
Some complex queries did not work correctly with subqueries. (Bug#6841, Bug#6406)
InnoDB
: Do not intentionally crash
mysqld
if the buffer pool is exhausted by
the lock table; return error 1206 instead. Do not intentionally
crash mysqld
if we cannot allocate the
memory for the InnoDB
buffer pool.
(Bug#6817, Bug#6827)
NULL
were not handled caorrectly in cases of
empty results in subqueries.
(Bug#6806)
A spurious "duplicate key" error resulted from executing a
REPLACE
or
INSERT ...
ON DUPLICATE KEY UPDATE
statement performing a
multiple-row insert on a table having unique and full-text
indexes.
(Bug#6784)
MySQL required explicit privileges on system time zone
description tables for implicit access to them (that is, if one
set the time_zone
variable or
used the CONVERT_TZ()
function)
in cases where some table-level or column-level privileges
already existed.
(Bug#6765)
A spurious Record has changed since last read in
table error could be raised by some queries on
HEAP
tables containing only one row.
(Bug#6748)
InnoDB
:
innodb_locks_unsafe_for_binlog
still uses next-key locking, which is unnecessary next-key. Such
locks are now removed when the
innodb_locks_unsafe_for_binlog
option is enabled.
(Bug#6747)
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)
Backported a fix for the full-text interface from MySQL 5.0. (Bug#6523)
If a connection was interrupted by a network error and did a
rollback, the network error code got stored into the
BEGIN
and
ROLLBACK
binary log events; that caused superfluous slave stops.
(Bug#6522)
Some internal structures were not initialized correctly prior to first execution. (Bug#6517)
Execution of subqueries in SET
and
DO
statements caused wrong
results to be returned from subsequent queries.
(Bug#6462)
A multiple-table DELETE
could
cause MySQL to crash when using InnoDB
tables.
(Bug#6378, Bug#5837)
InnoDB
: Made the foreign key parser better
aware of quotes.
(Bug#6340)
INSERT ...
SELECT
no longer reports spurious "column truncated"
warnings
(Bug#6284)
A rare memory corruption problem could cause MATCH ...
AGAINST
on columns using multi-byte character sets to
crash the server.
(Bug#6269)
The server accepted datetime values with an invalid year part.
The server now also performs the same checks for datetime values
passed through MYSQL_TIME
structures as for
datetime values passed as strings.
(Bug#6266)
INSERT
on a table with
FULLTEXT
indexes, could under rare
circumstances result in a corrupted table if words of different
lengths could be considered equal. This is possible in some
collations such as utf8_general_ci
and
latin1_german2_ci
.
(Bug#6265)
NULL
was not always processed correctly in
subqueries using ALL
or
SOME
.
(Bug#6247)
Starting and stopping the slave thread (only) could in some circumstance cause the server to crash. (Bug#6148)
If STMT_ATTR_UPDATE_MAX_LENGTH
is set for a
prepared statement,
mysql_stmt_store_result()
updates field->max_length
for numeric
columns as well.
(Bug#6096)
If a connection had an open transaction but had done no updates
to transactional tables (for example if had just done a
SELECT FOR UPDATE
then executed a
nontransactional update, that update automatically committed the
transaction (thus releasing InnoDB
's
row-level locks etc).
(Bug#5714)
InnoDB
: FOREIGN KEY
constraints treated table and database names as
case-insensitive, so that RENAME TABLE t TO T
would hang in an endless loop if t
had a
foreign key constraint defined on it. The server would also hang
if one tried using an ALTER TABLE
or RENAME TABLE
statement to
create a foreign key constraint name that collided with existing
one.
(Bug#3478)
A call to
mysql_stmt_store_result()
occurred without a preceding call to
mysql_stmt_bind_result()
caused
the server to crash.
CREATE TABLE
didn't signal when table was created. This could
cause a created_table
DROP TABLE
in another
thread to wait "forever".
created_table
Prepared statements now handle ZEROFILL
when
converting integer
to
string
.
GROUP_CONCAT(...ORDER BY)
when
used with prepared statements gave wrong sorting order.
The server was interpreting CHAR BINARY
and
VARCHAR BINARY
columns from 4.0 tables as
having the BINARY
and
VARBINARY
data types. Now they
are interpreted as CHAR
and
VARCHAR
columns that have the
binary collation of the column's character set. (This is the
same way that CHAR BINARY
and
VARCHAR BINARY
are handled for new tables
created in 4.1.)
InnoDB
: Do not call
rewind()
when displaying
SHOW INNODB STATUS
information on
stderr
.
A prepared statement using SELECT * FROM t1 NATURAL
JOIN t2...
could cause the server to crash.
A prepared statement using a subquery could cause the server to crash.
A prepared statement using SELECT ...
PROCEDURE
could cause the server to crash.
mysqld_safe was in many cases ignoring any
--no-defaults
,
--defaults-file
, or
--defaults-extra-file
arguments.
Those arguments are now honored, and this may change what
options are passed to mysqld in some
installations.
Improved performance of identifier comparisons (if many tables or columns are specified).
InnoDB
: Let the InnoDB
FOREIGN KEY
parser remove the
latin1
character 0xA0
from
the end of an unquoted identifier. The EMS MySQL Manager in
ALTER TABLE
adds that character
after a table name, which caused error 121 when we tried to add
a new constraint.
InnoDB
:
innodb_data_file_path
was not
handled correctly in some cases. This bug was introduced in
MySQL 4.1.1.
Server warnings now are reset when you execute a prepared statement.
User Comments
Add your own comment.