This release includes all fixes in MySQL 4.0.16 and most of the fixes in MySQL 4.0.17.
Functionality added or changed:
Warning: Incompatible change:
Renamed the C API mysql_prepare_result()
function to mysql_get_metadata() because
the old name was confusing.
Warning: Incompatible change:
Client authentication now is based on 41-byte passwords in the
user table, not 45-byte passwords as in
4.1.0. Any 45-byte passwords created for 4.1.0 must be reset
after running the
mysql_fix_privilege_tables script.
Important note: If you
upgrade to InnoDB-4.1.1 or higher, you
cannot downgrade to a version lower than 4.1.1 any more! That
is because earlier versions of InnoDB are
not aware of multiple tablespaces.
Added secure_auth global server system
variable and --secure-auth server option that
disallow authentication for accounts that have old (pre-4.1.1)
passwords.
Added --secure-auth option to
mysql command-line client. If this option
is set, the client refuses to send passwords in old
(pre-4.1.1) format.
EXPLAIN now supports an
EXTENDED option. When given,
EXPLAIN generates extra information that
may be viewed with the SHOW WARNINGS
statement.
Table aliases are not case sensitive if
lower_case_table_names is non-zero.
The --old-protocol option for
mysqld is no longer supported and has been
removed.
Renamed bdb_version system variable to
version_bdb.
MyISAM tables now use a better checksum
algorithm (if checksum is enabled with CREATE TABLE
... CHECKSUM=1). Old tables will appear to have
incorrect checksum, and should be repaired.
New CHECKSUM TABLE statement for reporting
table checksum values.
Added character_set_client,
character_set_connection,
character_set_database,
character_set_results,
character_set_server,
character_set_system,
collation_connection,
collation_database, and
collation_server system variables to
provide information about character sets and collations.
It is now possible to create multiple key caches, assign table
indexes to particular caches, and to preload indexes into
caches. See Section 13.5.5.1, “CACHE INDEX Syntax”. See
Section 13.5.5.4, “LOAD INDEX INTO CACHE Syntax”. Structured system variables are
introduced as a means of grouping related key cache
parameters. See Section 5.2.3.1, “Structured System Variables”.
Added preload_buffer_size system variable.
New COERCIBILITY() function to return the
collation coercibility of a string.
The --quote-names option for
mysqldump now is enabled by default.
mysqldump now includes a statement in the
dump output to set FOREIGN_KEY_CHECKS to 0
to avoid problems with tables having to be reloaded in a
particular order when the dump is reloaded. The existing
FOREIGN_KEY_CHECKS value is saved and
restored.
You can revoke all privileges from a user with REVOKE
ALL PRIVILEGES, GRANT FROM user_list.
Added IGNORE option for
DELETE statement.
MySQL source distributions now also include the MySQL
Internals Manual internals.texi.
Added mysql_set_server_option() C API
client function to allow multiple statement handling in the
server to be enabled or disabled.
The mysql_next_result() C API function now
returns -1 if there are no more result
sets.
Renamed CLIENT_MULTI_QUERIES connect option
flag to CLIENT_MULTI_STATEMENTS. To allow
for a transition period, the old option continues to be
recognized for a while.
Require DEFAULT before table and database
default character set. This enables us to use ALTER
TABLE to change the character set for all
tbl_name ... CHARACTER
SET=...CHAR, VARCHAR, and
TEXT columns in a table.
Added MATCH ... AGAINST( ... WITH QUERY
EXPANSION) and the
ft_query_expansion_limit system variable.
Removed unused ft_max_word_len_for_sort
system variable.
Removed unused ft_max_word_len_for_sort
variable from myisamchk.
Full-text search now supports multi-byte character sets and
the Unicode utf8 character set. (The
Unicode ucs2 character set is not yet
supported.)
Phrase search in MATCH ... AGAINST ( ... IN BOOLEAN
MODE) no longer matches partial words.
Added aggregate function BIT_XOR() for
bitwise XOR operations.
Replication over SSL now works.
The START SLAVE statement now supports an
UNTIL clause for specifying that the slave
SQL thread should be started but run only until it reaches a
given position in the master's binary logs or in the slave's
relay logs.
Produce warnings even for single-row INSERT
statements, not just for multiple-row
INSERT statements. Previously, it was
necessary to set SQL_WARNINGS=1 to generate
warnings for single-row statements.
Added delimiter (\d)
command to the mysql command-line client
for changing the statement delimiter (terminator). The default
delimiter is semicolon.
CHAR, VARCHAR, and
TEXT columns now have lengths measured in
characters rather than in bytes. The character size depends on
the column's character set. This means, for example, that a
CHAR( column
for a multi-byte character set takes more storage than before.
Similarly, index values on such columns are measured in
characters, not bytes.
n)
LIMIT no longer accepts negative arguments
(they used to be treated as very big positive numbers before).
The DATABASE() function now returns
NULL rather than the empty string if there
is no database selected.
Added --sql-mode=NO_AUTO_VALUE_ON_ZERO option
to suppress the usual behavior of generating the next sequence
number when zero is stored in an
AUTO_INCREMENT column. With this mode
enabled, zero is stored as zero; only storing
NULL generates a sequence number.
Added DROP USER
'
statement to drop an account that has no privileges.
user_name'@'host_name'
The interface to aggregate user-defined functions has changed
a bit. You must now declare a xxx_clear()
function for each aggregate function XXX().
xxx_clear() is used instead of
xxx_reset().
Added new ADDTIME(),
DATE(), DATEDIFF(),
LAST_DAY(), MAKEDATE(),
MAKETIME(),
MICROSECOND(),
SUBTIME(), TIME(),
TIMEDIFF(), TIMESTAMP(),
UTC_DATE(), UTC_TIME(),
UTC_TIMESTAMP(), and
WEEKOFYEAR() functions.
Added new syntax for ADDDATE() and
SUBDATE(). The second argument now may be a
number representing the number of days to be added to or
subtracted from the first date argument.
Added new type values
DAY_MICROSECOND,
HOUR_MICROSECOND,
MINUTE_MICROSECOND,
SECOND_MICROSECOND, and
MICROSECOND for
DATE_ADD(), DATE_SUB(),
and EXTRACT().
Added new %f microseconds format specifier
for DATE_FORMAT() and
TIME_FORMAT().
All queries in which at least one SELECT
does not use indexes properly now are written to the slow
query log when long log format is used.
It is now possible to create a MERGE table
from MyISAM tables in different databases.
Formerly, all the MyISAM tables had to be
in the same database, and the MERGE table
had to be created in that database as well.
Added new COMPRESS(),
UNCOMPRESS(), and
UNCOMPRESSED_LENGTH() functions.
When using SET sql_mode='mode' for a
complex mode (such as ANSI), we now update
the sql_mode variable to include all the
individual options implied by the complex mode.
Added the OLAP (On-Line Analytical Processing) function
ROLLUP, which provides summary rows for
each GROUP BY level.
Added SQLSTATE codes for all server errors.
Added mysql_sqlstate() and
mysql_stmt_sqlstate() C API client
functions that return the SQLSTATE error
code for the last error.
TIME columns with hour values greater than
24 were returned incorrectly to the client.
ANALYZE TABLE, OPTIMIZE
TABLE, REPAIR TABLE, and
FLUSH statements are now stored in the
binary log and thus replicated to slaves. This logging does
not occur if the optional
NO_WRITE_TO_BINLOG keyword (or its alias
LOCAL) is given. Exceptions are that
FLUSH LOGS, FLUSH
MASTER, FLUSH SLAVE, and
FLUSH TABLES WITH READ LOCK are not logged
in any case. For a syntax example, see
Section 13.5.5.2, “FLUSH Syntax”.
New global system variable relay_log_purge
to enable or disable automatic relay log purging.
LOAD DATA now produces warnings that can be
fetched with SHOW WARNINGS.
Added support for syntax CREATE TABLE table2 (LIKE
table1) that creates an empty table
table2 with a definition that is exactly
the same as table1, including any indexes.
CREATE TABLE
now generates a warning if the named storage engine is not
available. The table is still created as a
tbl_name
(...) TYPE=storage_engineMyISAM table, as before.
Most subqueries are now much faster than before.
Added PURGE BINARY LOGS as an alias for
PURGE MASTER LOGS.
Disabled the PURGE LOGS statement that was
added in version 4.1.0. The statement now should be issued as
PURGE MASTER LOGS or PURGE BINARY
LOGS.
Added SHOW BDB LOGS as an alias for
SHOW LOGS.
Added SHOW MASTER LOGS as an alias for
SHOW BINARY LOGS. (In 4.1.0, SHOW
MASTER LOGS was renamed to SHOW BINARY
LOGS. Now you can use either one.)
Added Slave_IO_State and
Seconds_Behind_Master columns to the output
of SHOW SLAVE STATUS.
Slave_IO_State indicates the state of the
slave I/O thread, and Seconds_Behind_Master
indicates the number of seconds by which the slave is late
compared to the master.
The --lower-case-table-names=1 server option
now also makes aliases case insensitive. (Bug#534)
Changed that the relay log is flushed to disk by the slave I/O thread every time it reads a relay log event. This reduces the risk of losing some part of the relay log in case of brutal crash.
Bugs fixed:
Fixed mysql parser not to erroneously
interpret ‘;’ character within
/* ... */ comment as statement terminator.
Fixed merging types and length of result set columns for
UNION operations. The types and lengths now
are determined taking into account values for all
SELECT statements in the
UNION, not just the first
SELECT.
Fixed a bug in privilege handling that caused connections from certain IP addresses to be assigned incorrect database-level privileges. A connection could be assigned the database privileges of the previous successful authentication from one of those IP addresses, even if the IP address username and database name were different. (Bug#1636)
Error-handling functions were not called properly when an
error resulted from [CREATE | REPLACE| INSERT] ...
SELECT statements.
HASH, BTREE,
RTREE, ERRORS, and
WARNINGS no longer are reserved words. (Bug#724)
Fix for bug in ROLLUP when all tables were
const tables. (Bug#714)
Fixed a bug in UNION that prohibited
NULL values from being inserted into result
set columns where the first SELECT of the
UNION retrieved NOT NULL
columns. The type and max_length of the result column is now
defined based on all UNION parts.
Fixed name resolution of columns of reduced subqueries in unions. (Bug#745)
Fixed memory overrun in subqueries in select list with
WHERE clause bigger than outer query
WHERE clause. (Bug#726)
Fixed a bug that caused MyISAM tables with
FULLTEXT indexes created in 4.0.x to be
unreadable in 4.1.x.
Fixed a data loss bug in REPAIR TABLE ...
USE_FRM when used with tables that contained
TIMESTAMP columns and were created in
4.0.x.
Fixed reduced subquery processing in ORDER
BY/GROUP BY clauses. (Bug#442)
Fixed name resolution of outer columns of subquery in
INSERT/REPLACE
statements. (Bug#446)
Fixed bug in marking columns of reduced subqueries. (Bug#679)
Fixed a bug that made CREATE FULLTEXT INDEX
syntax illegal.
Fixed a crash when a SELECT that required a
temporary table (marked by Using temporary
in EXPLAIN output) was used as a derived
table in EXPLAIN command. (Bug#251)
Fixed a rare table corruption bug in DELETE
from a big table with a new
(created by MySQL-4.1) full-text index.
LAST_INSERT_ID() now returns 0 if the last
INSERT statement didn't insert any rows.
Fixed missing last character in function output. (Bug#447)
Fixed a rare replication bug when a transaction spanned two or
more relay logs, and the slave was stopped while executing the
part of the transaction that was in the second or later relay
log. Then replication would resume at the beginning of the
second or later relay log, which was incorrect. (It should
resume at BEGIN, in the first relay log.)
(Bug#53)
CONNECTION_ID() now is properly replicated.
(Bug#177)
The new PASSWORD() function in 4.1 is now
properly replicated. (Bug#344)
Fixed a bug with double freed memory.
Fixed a crashing bug in UNION operations
that involved temporary tables.
Fixed a bug that under certain circumstances could allow a
privilege escalation via database wildcards in
GRANT. (Bug#3924,
CVE-2004-0957)
Fixed a crashing bug in DERIVED TABLES when
EXPLAIN is used on a DERIVED
TABLES with a join.
Fixed a crashing bug in DELETE with
ORDER BY and LIMIT
caused by an uninitialized array of reference pointers.
Fixed a bug in the USER() function caused
by an error in the size of the allocated string.
Fixed a crashing bug when attempting to create a table containing a spatial (GIS) column with a storage engine that does not support spatial types.
Fixed a crashing bug in UNION caused by the
empty select list and a non-existent column being used in some
of the individual SELECT statements.
Fixed a replication bug with a 3.23 master and a 4.0 slave:
The slave lost the replicated temporary tables if
FLUSH LOGS was issued on the master. (Bug#254)
Fixed a security bug: A server compiled without SSL support
still allowed connections by users who had the
REQUIRE SSL option specified for their
accounts.
When an undefined user variable was used in a updating query
on the master (such as INSERT INTO t
VALUES(@a), where @a had never
been set by this connection before), the slave could replicate
the query incorrectly if a previous transaction on the master
used a user variable of the same name. (Bug#1331)
Fixed bug with prepared statements: Using the
? prepared statement parameter as the
argument to certain functions or statement clauses caused a
server crash when mysql_prepare() was
invoked. (Bug#1500)
Fixed bug with prepared statements: after call to mysql_prepare placeholders became allowed in all consequent statements, even if they are not prepared (Bug#1946)
SLAVE START (which is a deprecated syntax,
START SLAVE should be used instead) could
crash the slave. (Bug#2516)
Fixed bug in ALTER TABLE RENAME, when
rename to the table with the same name in another database
silently dropped destination table if it existed. (Bug#2628)
When not specify hostname in SET PASSWORD FOR
user it's now defaulted to %
instead of the current host.

User Comments
[Full-text search now support multi-byte character sets, and Unicode (UTF-8, but not UCS-2 yet). ]
Is it means 4.1.1 will support CJK charset in full text searching?
Add your own comment.