IMPORTANT:
        If you are using this release on Windows, you should upgrade at
        least your clients (any program that uses
        libmysql.lib) to 4.0.16 or above. This is
        because the 4.0.15 release had a bug in the Windows client
        library that causes Windows clients using the library to die
        with a Lost connection to MySQL server during
        query error for queries that take more than 30
        seconds. This problem is specific to Windows; clients on other
        platforms are unaffected.
      
Fonctionnalité ajoutée ou modifiée :
            mysqldump now correctly quotes all
            identifiers when communicating with the server. This assures
            that during the dump process, mysqldump
            will never send queries to the server that result in a
            syntax error. This problem is
            not related to the
            mysqldump program's output, which was not
            changed. (Bug#1148)
          
            Change result set metadata information so that
            MIN() and MAX() report
            that they can return NULL (this is true
            because an empty set will return NULL).
            (Bug#324)
          
            Produce an error message on Windows if a second
            mysqld server is started on the same
            TCP/IP port as an already running mysqld
            server.
          
            The mysqld server variables
            wait_timeout,
            net_read_timeout, and
            net_write_timeout now work on Windows.
            One can now also set timeouts for read and writes in Windows
            clients with mysql_options().
          
            Added option --sql-mode=NO_DIR_IN_CREATE to
            make it possible for slaves to ignore INDEX
            DIRECTORY and DATA DIRECTORY
            options given to CREATE TABLE. When this
            is mode is on, SHOW CREATE TABLE will not
            show the given directories.
          
            SHOW CREATE TABLE now shows the
            INDEX DIRECTORY and DATA
            DIRECTORY options, if they were specified when the
            table was created.
          
            The open_files_limit server variable now
            shows the real open files limit.
          
            MATCH ... AGAINST() in natural language
            mode now treats words that are present in more than
            2,000,000 rows as stopwords.
          
            The Mac OS X installation disk images now include an
            additional MySQLStartupItem.pkg package
            that enables the automatic startup of MySQL on system
            bootup. See Section 2.2.13, « Installer MySQL sur Mac OS X ».
          
            Most of the documentation included in the binary tarball
            distributions (.tar.gz) has been moved
            into a subdirectory docs. See
            Section 2.1.5, « Dispositions d'installation ».
          
            The manual is now included as an additional
            info file in the binary distributions.
            (Bug#1019)
          
            The binary distributions now include the embedded server
            library (libmysqld.a) by default. Due to
            a linking problem with non-gcc compilers, it was not
            included in all packages of the initial 4.0.15 release. The
            affected packages were rebuilt and released as 4.0.15a. See
            Section 1.3.1.2, « MySQL Server intégré (embedded) ».
          
            MySQL can now use range optimization for
            BETWEEN with non-constant limits. (Bug#991)
          
Replication error messages now include the default database, so that users can check which database the failing query was run for.
            A documentation change: Added a paragraph about how the
            binlog-do-db and
            binlog-ignore-db options are tested
            against the database on the master (see
            Section 5.9.4, « Le log binaire »), and a paragraph about how
            replicate-do-db,
            replicate-do-table and analogous options
            are tested against the database and tables on the slave (see
            Section 6.8, « Options de démarrage de la réplication »).
          
            Now the slave does not replicate SET
            PASSWORD if it is configured to exclude the
            mysql database from replication (using
            for example
            replicate-wild-ignore-table=mysql.%).
            This was already the case for GRANT and
            REVOKE since version 4.0.13 (though there
            was Bug#980 in 4.0.13 & 4.0.14, which has been fixed in
            4.0.15).
          
            Rewrote the information shown in the
            State column of SHOW
            PROCESSLIST for replication threads and for
            MASTER_POS_WAIT() and added the most
            common states for these threads to the documentation, see
            Section 6.3, « Détails d'implémentation de la réplication ».
          
Added a test in replication to detect the case where the master died in the middle of writing a transaction to the binlog; such unfinished transactions now trigger an error message on the slave.
            A GRANT command that creates an anonymous
            user (that is, an account with an empty username) no longer
            requires FLUSH PRIVILEGES for the account
            to be recognized by the server. (Bug#473)
          
            CHANGE MASTER now flushes
            relay-log.info. Previously this was
            deferred to the next run of START SLAVE,
            so if mysqld was shutdown on the slave
            after CHANGE MASTER without having run
            START SLAVE, the relay log's name and
            position were lost. At restart they were reloaded from
            relay-log.info, thus reverting to their
            old (incorrect) values from before CHANGE
            MASTER and leading to error messages (as the old
            relay log did not exist any more) and the slave threads
            refusing to start. (Bug#858)
          
Bogues corrigés :
            Fixed buffer overflow in password handling which could
            potentially be exploited by MySQL users with
            ALTER privilege on the
            mysql.user table to execute random code
            or to gain shell access with the UID of the mysqld process
            (thanks to Jedi/Sector One for spotting and reporting this
            bug).
          
            Fixed server crash on FORCE INDEX in a
            query that contained "Range checked for each record" in the
            EXPLAIN output. (Bug#1172)
          
Fixed table/column grant handling - proper sort order (from most specific to less specific, see Section 5.5.6, « Contrôle d'accès, étape 2 : Vérification de la requête ») was not honored. (Bug#928)
            Fixed rare bug in MYISAM introduced in 4.0.3 where the index
            file header was not updated directly after an
            UPDATE of split dynamic rows. The symptom
            was that the table had a corrupted delete-link if mysqld was
            shut down or the table was checked directly after the
            update.
          
            Fixed Can't unlock file error when
            running myisamchk --sort-index on
            Windows. (Bug#1119)
          
            Fixed possible deadlock when changing
            key_buffer_size while the key cache was
            actively used. (Bug#1088)
          
            Fixed overflow bug in MyISAM and
            ISAM when a row is updated in a table
            with a large number of columns and at least one
            BLOB/TEXT column.
          
            Fixed incorrect result when doing UNION
            and LIMIT #,# when one didn't use braces
            around the SELECT parts.
          
            Fixed incorrect result when doing UNION
            and ORDER BY .. LIMIT # when one didn't
            use braces around the SELECT parts.
          
            Fixed problem with SELECT SQL_CALC_FOUND_ROWS ...
            UNION ALL ... LIMIT # where
            FOUND_ROWS() returned incorrect number of
            rows.
          
            Fixed unlikely stack bug when having a BIG expression of
            type 1+1-1+1-1... in certain
            combinations. (Bug#871)
          
            Fixed the bug that sometimes prevented a table with a
            FULLTEXT index from being marked as
            "analyzed".
          
            Fixed MySQL so that the column length (in C API) for the
            second column in SHOW CREATE TABLE is
            always larger than the data length. The only known
            application that was affected by the old behavior was
            Borland dbExpress, which truncated the output from the
            command. (Bug#1064)
          
            Fixed crash in comparisons of strings using the
            tis620 character set. (Bug#1116)
          
            Fixed ISAM bug in
            MAX() optimization.
          
            myisamchk --sort-records=N no longer
            marks table as crashed if sorting failed because of an
            inappropriate key. (Bug#892)
          
            Fixed a minor bug in MyISAM compressed
            table handling that sometimes made it impossible to repair
            compressed table in "Repair by sort" mode. "Repair with
            keycache" (myisamchk --safe-recover)
            worked, though. (Bug#1015)
          
Fixed bug in propagating the version number to the manual included in the distribution files. (Bug#1020)
            Fixed key sorting problem (a PRIMARY key
            declared for a column that is not explicitly marked
            NOT NULL was sorted after a
            UNIQUE key for a NOT
            NULL column).
          
            Fixed the result of INTERVAL when applied
            to a DATE value. (Bug#792)
          
Fixed compiling of the embedded server library in the RPM spec file. (Bug#959)
Added some missing files to the RPM spec file and fixed some RPM building errors that occurred on Red Hat Linux 9. (Bug#998)
            Fixed incorrect XOR evaluation in
            WHERE clause. (Bug#992)
          
Fixed bug with processing in query cache merged tables constructed from more then 255 tables. (Bug#930)
            Fixed incorrect results from outer join query (e.g.
            LEFT JOIN) when ON
            condition is always false, and range search in used. (Bug#926)
          
            Fixed a bug causing incorrect results from MATCH
            ... AGAINST() in some joins. (Bug#942)
          
            MERGE tables do not ignore "Using index"
            (from EXPLAIN output) anymore.
          
Fixed a bug that prevented an empty table from being marked as "analyzed". (Bug#937)
            Fixed myisamchk --sort-records crash when
            used on compressed table.
          
            Fixed slow (as compared to 3.23) ALTER
            TABLE and related commands such as CREATE
            INDEX. (Bug#712)
          
            Fixed segmentation fault resulting from LOAD DATA
            FROM MASTER when the master was running without
            the --log-bin option. (Bug#934)
          
            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.
          
            Fixed a random bug: Sometimes the slave would replicate
            GRANT or REVOKE
            queries even if it was configured to exclude the
            mysql database from replication (for
            example, using
            replicate-wild-ignore-table=mysql.%).
            (Bug#980)
          
            The Last_Errno and
            Last_Error fields in the output of
            SHOW SLAVE STATUS are now cleared by
            CHANGE MASTER and when the slave SQL
            thread starts. (Bug#986)
          
            A documentation mistake: It said that RESET
            SLAVE does not change connection information
            (master host, port, user, and password), whereas it does.
            The statement resets these to the startup options
            (master-host etc) if there were some.
            (Bug#985)
          
            SHOW SLAVE STATUS now shows correct
            information (master host, port, user, and password) after
            RESET SLAVE (that is, it shows the new
            values, which are copied from the startup options if there
            were some). (Bug#985)
          
            Disabled propagation of the original master's log position
            for events because this caused unexpected values for
            Exec_Master_Log_Pos and problems with
            MASTER_POS_WAIT() in A->B->C
            replication setup. (Bug#1086)
          
            Fixed a segfault in mysqlbinlog when
            --position=x was used with
            x being between a
            Create_file event and its fellow
            Append_block,
            Exec_load or
            Delete_file events. (Bug#1091)
          
            mysqlbinlog printed superfluous warnings
            when using --database, which caused syntax
            errors when piped to mysql. (Bug#1092)
          
            Made mysqlbinlog --database filter
            LOAD DATA INFILE too (previously, it
            filtered all queries except LOAD DATA
            INFILE). (Bug#1093)
          
            mysqlbinlog in some cases forgot to put a
            leading '#' in front of the original
            LOAD DATA INFILE (this command is
            displayed only for information, not to be run; it is later
            reworked to LOAD DATA LOCAL with a
            different filename, for execution by
            mysql). (Bug#1096)
          
            binlog-do-db and
            binlog-ignore-db incorrectly filtered
            LOAD DATA INFILE (it was half-written to
            the binary log). This resulted in a corrupted binary log,
            which could cause the slave to stop with an error. (Bug#1100)
          
            When, in a transaction, a transactional table (such as an
            InnoDB table) was updated, and later in
            the same transaction a non-transactional table (such as a
            MyISAM table) was updated using the
            updated content of the transactional table (with
            INSERT ... SELECT for example), the
            queries were written to the binary log in an incorrect
            order. (Bug#873)
          
            When, in a transaction, INSERT ... SELECT
            updated a non-transactional table, and
            ROLLBACK was issued, no error was
            returned to the client. Now the client is warned that some
            changes could not be rolled back, as this was already the
            case for normal INSERT. (Bug#1113)
          
            Fixed a potential bug: When STOP SLAVE
            was run while the slave SQL thread was in the middle of a
            transaction, and then CHANGE MASTER was
            used to point the slave to some non-transactional statement,
            the slave SQL thread could get confused (because it would
            still think, from the past, that it was in a transaction).
          
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.

