End of Product Lifecycle. Active development and support for MySQL Database Server versions 3.23, 4.0, and 4.1 has ended. For details, see http://www.mysql.com/about/legal/lifecycle/#calendar. Please consider upgrading to a recent version. Further updates to the content of this manual will be minimal. All formats of this manual will continue to be available until 31 Dec 2010.
Functionality added or changed:
Incompatible Change: 
        TIMESTAMP is now returned as a
        string of type 'YYYY-MM-DD HH:MM:SS' and
        different timestamp lengths are not supported.
      
This change was necessary for SQL standards compliance. In a future version, a further change will be made (backward compatible with this change), allowing the timestamp length to indicate the desired number of digits of fractions of a second.
Replication: 
        Replication now works with RAND()
        and user variables @var.
      
        Allow index type to be specified explicitly for some storage
        engines via USING type_name syntax in index
        definition.
      
        Allow
        DEFAULT(
        in expressions; it produces the column's default value.
      col_name)
        Added database and real table name (in case of alias) to the
        MYSQL_FIELD structure.
      
        Renamed SHOW
        MASTER LOGS statement to SHOW
        BINARY LOGS.
      
Unicode (UTF8) support.
        Allow one to change mode for
        ANSI_QUOTES on the fly.
      
Faster embedded server (new internal communication protocol).
        One can specify many temporary directories to be used in a
        round-robin fashion with:
        --tmpdir=dirname1:dirname2:dirname3.
      
New faster client/server protocol that supports prepared statements, bound parameters, and bound result columns, binary transfer of data, warnings.
Aliases are now forced in derived tables, as per standard SQL.
        libmysqlclient did not always fetch column
        default values correctly.
      
Support for GIS (Geometrical data). See Chapter 16, Spatial Extensions.
        The mysql command-line client attempted to
        interpret quotes within comments.
       (Bug#539)
        REPAIR TABLE and
        OPTIMIZE TABLE now can be killed.
        See Section 12.4.6.3, “KILL Syntax”.
      
        Added record_in_range() method to
        MERGE tables to be able to choose the correct
        index when there are many to choose from.
      
        New CHARSET() and
        COLLATION() functions to return
        the character set and collation of a string.
      
        Added new
        VARIANCE(
        function returns the variance of expr)expr
      
        In CREATE TABLE foo (a INT not null primary
        key) the PRIMARY word is now
        optional.
      
        CHAR BYTE is an alias for the
        CHAR BINARY data type.
      
        VARCHARACTER is an alias for
        VARCHAR.
      
        Added support for UNION in
        derived tables.
      
        SHOW [COUNT(*)] WARNINGS shows warnings from
        the last command.
      
        New operators integer MOD integer and
        integer DIV integer. DIV
        is now a reserved word.
      
        One can specify a data type for a column in
        CREATE TABLE ...
        SELECT by defining the column in the
        CREATE TABLE part.
      
CREATE TABLE foo (a TINYINT NOT NULL) SELECT b+1 AS a FROM bar;
Multi-line queries: You can now issue several queries at once and then read the results in one go.
        New CONVERT(... USING ...) syntax
        for converting string values between character sets.
      
        Added old-password command to
        mysqladmin for changing password but storing
        it using the old password-hashing format.
      
        In CREATE TABLE the attribute
        SERIAL is now an alias for BIGINT
        UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.
      
        One can specify the different
        BLOB/TEXT
        types with the syntax
        BLOB( and
        length)TEXT(.
        MySQL automatically changes it to one of the internal
        length)BLOB/TEXT
        types.
      
        New more secure client authentication based on 45-byte passwords
        in the user table.
       (CVE-2000-0981)
        Subqueries: SELECT * from t1 where t1.a=(SELECT t2.b
        FROM t2).
      
        START SLAVE
        (STOP SLAVE) no longer returns an
        error if the slave is started (stopped); it returns a warning
        instead.
      
        New options --reconnect and
        --skip-reconnect
        for the mysql client, to reconnect
        automatically or not if the connection is lost.
      
        TRUE and FALSE added as
        alias for 1 and 0, respectively.
      
        DATE/DATETIME
        checking is now a bit stricter to support the ability to
        automatically distinguish between date, datetime, and time with
        microseconds. For example, dates of type YYYYMMDD
        HHMMDD are no longer supported; you must either have
        separators between each
        DATE/TIME
        part or not at all.
      
        REPAIR TABLE of
        MyISAM tables now uses less temporary disk
        space when sorting char columns.
      
Derived tables:
SELECT a.col1, b.col2
       FROM (SELECT MAX(col1) AS col1 FROM root_table) a,
       other_table b
       WHERE a.col1=b.col1;
        Added --compatible option to
        mysqldump for producing output that is
        compatible with other database systems or with older MySQL
        servers.
      
        DROP TEMPORARY TABLE now drops only temporary
        tables and doesn't end transactions.
      
        SELECT .. LIMIT 0 did not return the proper
        row count for SQL_CALC_FOUND_ROWS.
      
        One can create a table from the existing table using
        CREATE [TEMPORARY] TABLE [IF NOT EXISTS]
        . The table can be
        either normal or temporary.
      table (LIKE
        table)
        One can add a comment per column in CREATE
        TABLE.
      
        SERIAL DEFAULT VALUE added as an alias for
        AUTO_INCREMENT.
      
        New function IS_USED_LOCK() for
        determining the connection identifier of the client that holds a
        given advisory lock.
      
        SELECT ... FROM DUAL is an alias for
        SELECT .... (To be compatible with some other
        database systems).
      
        EXPLAIN
        SELECT now can be killed. See Section 12.4.6.3, “KILL Syntax”.
      
        Server side help for all MySQL functions. One can now type
        help week in the mysql
        client and get help for the week() function.
      
        Allow empty index lists to be specified for USE
        INDEX, IGNORE INDEX, and
        FORCE INDEX.
      
        SHOW FULL COLUMNS FROM
         shows column
        comments.
      tbl_name
Character sets to be defined per column, table and database.
        Added new
        mysql_get_server_version() C API
        client function.
      
        New CRC32() function to compute
        cyclic redundancy check value.
      
        BTREE index on MEMORY
        (HEAP) tables.
      
        If one creates a too long
        CHAR/VARCHAR
        it is now automatically changed to
        TEXT or
        BLOB; One get a warning in this
        case.
      
        On Windows, we are now using shared memory to communicate
        between server and client when they are running on the same
        machine and you are connecting to localhost.
      
        SLAVE START and SLAVE STOP
        are no longer accepted by the query parser; use
        START SLAVE and
        STOP SLAVE instead.
      
        The --opt option for
        mysqldump now is enabled by default, as are
        all the options implied by
        --opt.
      


User Comments
Add your own comment.