Note: 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)
Functionality added or changed:
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.
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: Do not periodically write SHOW INNODB
STATUS information to a temporary file unless the
configuration option innodb_status_file=1
is set.
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.
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.
The --master-data option for
mysqldump now takes an optional argument of
1 or 2 to produce a non-commented or commented CHANGE
MASTER TO statement. The default is 1 for backward
compatibility.
mysqldump --single-transaction
--master-data now is able to take an online
(non-blocking) dump of InnoDB and report the corresponding
binary log coordinates. This makes a backup suitable for
point-in-time recovery, roll-forward or replication slave
creation. See Section 8.12, “mysqldump — A Database Backup Program”.
Added --lock-all-tables to
mysqldump to lock all tables by acquiring a
global read lock.
Added --hex-blob option to
mysqldump for dumping binary string columns
using hexadecimal notation.
Added mysql_hex_string() C API function
that hex-encodes a string.
In the normal log MySQL now prints the log position for
Binlog Dump requests.
Added [mysql_cluster] section to
my.cnf file for configuration settings
specific to MySQL Cluster.
ndb-connectstring variable moved here.
A connection doing a rollback now displays "Rolling back" in
the State column of SHOW
PROCESSLIST.
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.
The statements CREATE TABLE,
TRUNCATE TABLE, DROP
DATABASE, and CREATE DATABASE
cause an implicit commit.
Bugs fixed:
A multiple-table DELETE could cause MySQL
to crash when using InnoDB tables. (Bug#5837, Bug#6378)
Some data definition statements (CREATE
TABLE where the table was not a temporary table,
TRUNCATE TABLE, DROP
DATABASE, and CREATE DATABASE)
were not being written to the binary log after a
ROLLBACK. This also caused problems with
replication. (Bug#6883)
Fixed incorrect referencing to column by name from subquery to
outer query in case of using temporary table by outer query
and placing subquery in the WHERE clause.
(Bug#7079)
Fixed a bug in authentication code that allowed a malicious user to crash the server with specially crafted packets (using a modified client library). (Bug#7187)
Fixed a crashing bug in a string function
LEFT, when this function is part of the
expression which is used as GROUP BY field.
(Bug#7101)
Fixed bug which caused MySQL to require privileges on system
time zone description tables for implicit access to them (that
is, if one set time_zone variable or used
CONVERT_TZ() function) in case when some
table-level or column-level privileges existed. (Bug#6765)
mysql_stmt_data_seek(stmt,0) now rewinds a
counter and enables buffered rows to be re-fetched on the
client side. (Bug#6996)
Fixed an insufficient privilege check in SHOW CREATE
TABLE command. (Bug#7043)
Fixed a rare memory corruption (that resulted in a crash) in
MATCH ... AGAINST on columns that use
multi-byte character sets. (Bug#6269)
Fixed NULL processing in
ALL/SOME subqueries.
(Bug#6247)
Fixed execution of complex queries with subqueries. (Bug#6406, Bug#6841)
Fixed initialization of some internal structures for first execution. (Bug#6517)
Backported a fix for the full-text interface from MySQL 5.0. (Bug#6523)
Fixed NULL value handling in case of empty
results in subqueries. (Bug#6806)
Prevent adding CREATE TABLE .. SELECT query
to the binary log when the insertion of new records partially
failed. (Bug#6682)
INSERT ... SELECT no longer reports
spurious "column truncated" warnings (Bug#6284)
Fixed a bug that could cause "Record has changed since last
read in table" error message in some queries on
HEAP tables that contain only one row. (Bug#6748)
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.
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.)
Fixed spurious "duplicate key" error from
REPLACE or INSERT ... ON DUPLICATE
KEY UPDATE statements performing multiple-row insert
in the table that had unique and full-text indexes. (Bug#6784)
Fixed a bug in execution of subqueries in
SET and DO statements
which caused wrong results to be returned from subsequent
queries. (Bug#6462)
Fixed a bug that allowed server to accept datetime values with
wrong year part. The server now also performs same checks for
datetime values passed through MYSQL_TIME
structures as for datetime values passed as strings. (Bug#6266)
Fixed a bug with INSERT for a table with
FULLTEXT indexes. Under rare circumstances,
this could result in a corrupted table if words of different
lengths may be considered equal. This is possible in some
collations, for example, in utf8_general_ci
or latin1_german2_ci. (Bug#6265)
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)
InnoDB: Let InnoDB's FOREIGN KEY parser to
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: Refuse to open new-style tables created with MySQL 5.0.3 or later. (Bug#7089)
InnoDB: Do not call rewind() when
displaying SHOW INNODB STATUS information
on stderr.
InnoDB: Made the foreign key parser better aware of quotes. (Bug#6340)
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)
InnoDB: Fixed a bug: InnoDB ignored in
innodb_data_file_path the
max specification in
:autoextend:max:2000M. This bug was
introduced in 4.1.1.
InnoDB: Fixed a bug:
innodb_locks_unsafe_for_binlog still uses
next-key locking (Bug#6747). InnoDB used next-key locking
when record matched completely to search tuple. This
unnecessary next-key locking is now removed when
innodb_locks_unsafe_for_binlog option is
used.
InnoDB: Fix two hangs: FOREIGN KEY
constraints treated table and database names as
case-insensitive. RENAME TABLE t TO T would
hang in an endless loop if t had a foreign
key constraint defined on it. Fix also a hang over the
dictionary mutex that would occur if one tried in
ALTER TABLE or RENAME
TABLE to create a foreign key constraint name that
collided with another existing name. (Bug#3478)
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)
Prepared statements now handle ZEROFILL
when converting integer to
string.
Fixed crash when a call to
mysql_stmt_store_result() occurred without
a preceding call to
mysql_stmt_bind_result().
Fixed crash in prepared statements when using SELECT
* FROM t1 NATURAL JOIN t2....
Fixed crash in prepared statements when using SELECT
... PROCEDURE.
Fixed crash in prepared statements when using subqueries.
GROUP_CONCAT(...ORDER BY) when used with
prepared statements gave wrong sorting order.
CREATE TABLE
didn't
signal when table was created. This could cause a
created_tableDROP TABLE
in another
thread to wait "forever".
created_table
Server warnings now are reset when you execute a prepared statement.
Improved performance of identifier comparisons (if many tables or columns are specified).
OPTIMIZE TABLE, REPAIR
TABLE, and ANALYZE TABLE are now
replicated without any error code in the binary log. (Bug#5551)
LOAD DATA INFILE now works with option
replicate-rewrite-db. (Bug#6353)
Fixed a bug which caused a crash when only the slave I/O thread was stopped and started. (Bug#6148)
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)
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
non-transactional update, that update automatically committed
the transaction (thus releasing InnoDB's row-level locks etc).
(Bug#5714)
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)
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)
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)

User Comments
Add your own comment.