-----BEGIN PGP SIGNED MESSAGE-----
MySQL 4.1.1, a new version of the popular Open Source/Free Software
database management system, has been released. It is now available in
source and binary form for a number of platforms from our download pages
at http://www.mysql.com/downloads/ and mirror sites.
Note that not all mirror sites may be up to date at this point in time -
if you can't find this version on some mirror, please try again later or
choose another download site.
This is the second Alpha development release of the 4.1 tree, adding many
new features (see below) and fixing recently discovered bugs. Please refer
to our bug database at http://bugs.mysql.com/ for more details about the
individual bugs fixed in this version.
As this code is currently labeled "Alpha", we do not recommend that this
version be used in production environments yet!
However, we encourage you to test and evaluate it and, more importantly,
report any bugs or observations to our bug tracking database at
Please note, that for us to resolve a bug report, a reproducible test is
required. See "How to report a bug" at
http://bugs.mysql.com/how-to-report.php for more details before filing a
bug report. We appreciate your support!
For a more detailed list of features in MySQL 4.1, please see
News from the ChangeLog:
Functionality added or changed:
* Added `IGNORE' option for `DELETE' statement.
* The MySQL source distribution now also includes the MySQL Internals
* Added `mysql_set_server_option()' C API client function to allow
multiple statement handling in the server to be enabled or
* 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 will continue to be recognized for a while.
* Require `DEFAULT' before table and database default character set.
This enables us to use `ALTER TABLE table_name ... CHARACTER
SET=...' to change the character set for all `CHAR', `VARCHAR', and
`TEXT' columns in a table.
* Added `MATCH ... AGAINST( ... WITH QUERY EXPANSION)' and the
`ft_query_expansion_limit' server variable.
* Removed unused `ft_max_word_len_for_sort' server variable.
* 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
* 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(n)' column for a multi-byte character set will take more
storage than before. Similarly, index values on such columns are
measured in characters, not bytes.
* 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 behaviour 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
* *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.
* *Warning: Incompatible change!* Renamed the C API
`mysql_prepare_result()' function to `mysql_get_metadata()' as the
old name was confusing.
* Added `DROP USER 'username'@'hostname'' statement to drop an
account that has no privileges.
* The interface to aggregated UDF functions has changed a bit. You
must now declare a `xxx_clear()' function for each aggregate
* The `CONCAT_WS()' function no longer skips empty strings.
* 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()'
* 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
* When doing `SET sql_mode='mode'' for a complex mode (like `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', `OPTIMIZE', `REPAIR', 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 *Note
* New global variable `RELAY_LOG_PURGE' to enable or disable
automatic relay log purging.
* `LOAD DATA' now produces warnings that can be fetched with `SHOW
* 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 table_name (...) TYPE=storage_engine' now generates a
warning if the named storage engine is not available. The table is
still created as a `MyISAM' 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 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' (which had been deleted in version 4.1.0)
as an alias for `SHOW BINARY LOGS'.
* 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.
* `--lower-case-table-names=1' now also makes aliases case
insensitive. (Bug #534)
* 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
* 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.
* Fixed name resolution of columns of reduced subqueries in unions.
* 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
* 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.
* Fixed bug with doubly freed memory.
* Fixed crashing bug in `UNION' operations that involved temporary
* 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
* 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'
* 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 that 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)
* Due to a bug in the getpeername() system call on 64bit HP-UX, we
currently do not provide 64bit binaries for HP-UX (IA64 and PA-RISC).
We are working closely with HP on investigating this issue.
Lenz Grimmer <lenz@stripped>
Senior Production Engineer
MySQL GmbH, http://www.mysql.de/
For technical support contracts, visit https://order.mysql.com/?ref=mlgr
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (GNU/Linux)
Comment: For info see http://quantumlab.net/pine_privacy_guard/
-----END PGP SIGNATURE-----
|• MySQL 4.1.1 has been released||Lenz Grimmer||4 Dec|