This release includes all fixes in MySQL 4.0.16 and most of the fixes in MySQL 4.0.17.
Fonctionnalité ajoutée ou modifiée :
            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.4.1, « Syntaxe de CACHE INDEX ». See
            Section 13.5.4.4, « Syntaxe de LOAD INDEX INTO CACHE ». Structured system variables
            are introduced as a means of grouping related key cache
            parameters. See
            Section 9.4.1, « Variables système structurées ».
          
            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.
          
            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.
          
            One can revoke all privileges from a user with
            REVOKE ALL PRIVILEGES, GRANT FROM
            user_list.
          
            Added IGNORE option for
            DELETE statement.
          
            The MySQL source distribution now also includes 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 will
            continue to be recognized for a while.
          
            Require DEFAULT before table and database
            default character set. This enables us to use ALTER
            TABLE tbl_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
            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(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.
          
            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.
          
            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.
          
            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.
          
            Warning: Incompatible
            change! Renamed the C API
            mysql_prepare_result() function to
            mysql_get_metadata() as the old name was
            confusing.
          
            Added DROP USER 'user_name'@'host_name'
            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
            function XXX().
          
            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 (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 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.4.2, « Syntaxe de FLUSH ».
          
            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 tbl_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 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.
          
            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.
Bogues corrigés :
            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 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)
          
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
