This Beta release, as any other pre-production release, should not be installed on “production” level systems or systems with critical data. It is good practice to back up your data before installing any new version of software. Although MySQL worked very hard to ensure a high level of quality, protect your data by making a backup as you would for any software beta release.
Functionality added or changed:
Incompatible Change: 
        The C API ER_WARN_DATA_TRUNCATED warning
        symbol was renamed to
        WARN_DATA_TRUNCATED.
      
Incompatible Change: 
        The DECIMAL and
        NUMERIC data types now are
        handled with a fixed-point library that allows for precision
        math handling that results in more accurate results. See
        Section 11.13, “Precision Math”.
      
        A consequence of the change in handling of the
        DECIMAL and
        NUMERIC fixed-point data types is
        that the server is more strict to follow standard SQL. For
        example, a data type of DECIMAL(3,1) stores a
        maximum value of 99.9. Previously, the server allowed larger
        numbers to be stored. That is, it stored a value such as 100.0
        as 100.0. Now the server clips 100.0 to the maximum allowable
        value of 99.9. If you have tables that were created before MySQL
        5.0.3 and that contain floating-point data not strictly legal
        for the data type, you should alter the data types of those
        columns. For example:
      
ALTER TABLEtbl_nameMODIFYcol_nameDECIMAL(4,1);
        For user-defined functions, exact-value decimal arguments such
        as 1.3 or
        DECIMAL column values were passed
        as REAL_RESULT values prior to MySQL 5.0.3.
        As of 5.0.3, they are passed as strings with a type of
        DECIMAL_RESULT. If you upgrade to 5.0.3 and
        find that your UDF now receives string values, use the
        initialization function to coerce the arguments to numbers as
        described in Section 21.2.2.3, “UDF Argument Processing”.
      
        For the FLOOR() and
        CEILING() functions, the return
        type is no longer always BIGINT.
        For exact-value numeric arguments, the return value has an
        exact-value numeric type. For string or floating-point
        arguments, the return value has a floating-point type.
      
Replication: MySQL Cluster: 
        Added a new global system variable
        slave_transaction_retries: If
        the replication slave SQL thread fails to execute a transaction
        because of an InnoDB deadlock or exceeded
        InnoDB's
        innodb_lock_wait_timeout or
        NDBCLUSTER's
        TransactionDeadlockDetectionTimeout or
        TransactionInactiveTimeout, it automatically
        retries
        slave_transaction_retries times
        before stopping with an error. The default is 10.
       (Bug#8325)
MySQL Cluster: 
        When using this storage engine, the output of
        SHOW TABLE STATUS now displays
        properly-calculated values in the
        Avg_row_length and
        Data_length columns. (Note that
        BLOB columns are not yet taken
        into account.) In addition, the number of replicas is now shown
        in the Comment column (as
        number_of_replicas).
      
Replication: 
        The LOAD DATA statement was
        extended to support user variables in the target column list,
        and an optional SET clause. Now one can
        perform some transformations on data after they have been read
        and before they are inserted into the table. For example:
      
LOAD DATA INFILE 'file.txt' INTO TABLE t1 (column1, @var1) SET column2 = @var1/100;
        Also, replication of LOAD DATA
        was changed, so you can't replicate such statements from a 5.0.3
        master to pre-5.0.3 slaves.
      
Replication: The way the character set information is stored into the binary log was changed, so that it is now possible to have a replication master and slave running with different global character sets. A disadvantage is that replication from 5.0.3 masters to pre-5.0.3 slaves is impossible.
Replication: 
        If the MySQL server is started without an argument to
        --log-bin and without
        --log-bin-index, thus not
        providing a name for the binary log index file, a warning is
        issued because MySQL falls back to using the host name for that
        name, and this is prone to replication issues if the server's
        host name gets changed later. See Section B.5.8.1, “Open Issues in MySQL”.
      
        Nonoptimal index_merge query
        execution plans were chosen on IRIX.
       (Bug#8578)
mysqld_safe will create the directory where the UNIX socket file is to be located if the directory does not exist. This applies only to the last component of the directory path name. (Bug#8513)
        ONLY_FULL_GROUP_BY no longer
        is included in the ANSI
        composite SQL mode.
       (Bug#8510)
        The server now includes a timestamp in the Ready for
        connections message that is written to the error log
        at startup.
       (Bug#8444)
        CHECKSUM TABLE returns a warning
        for nonexisting tables. The checksum value remains
        NULL as before.
       (Bug#8256)
        Setting the connection collation to a value different from the
        server collation followed by a CREATE
        TABLE statement that included a quoted default value
        resulted in a server crash.
       (Bug#8235)
        When a client releases a user-level lock, DO
        RELEASE_LOCK() will not be written to the binary log
        anymore (this makes the binary log smaller); as a counterpart,
        the slave does not actually take the lock when it executes
        GET_LOCK(). This is mainly an
        optimization and should not affect existing setups.
       (Bug#7998)
        InnoDB: Corrected a bug in the crash recovery
        of ROW_FORMAT=COMPACT tables that caused
        corruption. There may still be bugs in the crash recovery,
        especially in COMPACT tables.
       (Bug#7973)
        Allowed the service-installation command for Windows servers to
        specify a single option other than
        --defaults-file following the
        service name. This is for compatibility with MySQL 4.1.
       (Bug#7856)
        Changed XML format for mysql from
        <
        to col_name>col_value</col_name><field
        name="
        to allow for proper encoding of column names that are not legal
        as element names.
       (Bug#7811)col_name">col_value</field>
        SHOW CREATE TABLE now uses
        USING 
        rather than index_typeTYPE
         to specify an
        index type.
       (Bug#7233)index_type
        InnoDB: Implemented fast
        TRUNCATE TABLE. The old approach
        (deleting rows one by one) may be used if the table is being
        referenced by foreign keys.
       (Bug#7150)
        Out-of-order packets were sent (ERROR after
        OK or EOF) following a
        KILL QUERY
        statement.
       (Bug#6804)
        Added sql_notes session
        variable to cause Note-level warnings not to
        be recorded.
       (Bug#6662)
        Added mysql_library_init() and
        mysql_library_end() as synonyms
        for the mysql_server_init() and
        mysql_server_end() C API
        functions. mysql_library_init()
        and mysql_library_end() are
        #define symbols, but the names more clearly
        indicate that they should be called when beginning and ending
        use of a MySQL C API library no matter whether the application
        uses libmysqlclient or
        libmysqld.
       (Bug#6149)
        Added VAR_POP() and
        STDDEV_POP() as standard SQL
        aliases for the VARIANCE() and
        STDDEV() functions that compute
        population variance and standard deviation. Added new
        VAR_SAMP() and
        STDDEV_SAMP() functions to
        compute sample variance and standard deviation.
       (Bug#3190)
        InnoDB: A commit is now performed after every
        10,000 copied rows when executing ALTER
        TABLE, CREATE INDEX,
        DROP INDEX or
        OPTIMIZE TABLE. This makes
        recovery from an aborted operations of these types much faster
        than previous to this change.
      
        Added support for AVG(DISTINCT).
      
        A new CREATE USER privilege was
        added.
      
        Support for RAID options in
        MyISAM tables has been removed. If you have
        tables that use these options, you should convert them before
        upgrading. See Section 2.18.1.2, “Upgrading from MySQL 4.1 to 5.0”.
      
        InnoDB: A shared record lock
        (LOCK_REC_NOT_GAP) is now taken for a
        matching record in the foreign key check because inserts can be
        allowed into gaps.
      
        The MySQL server now aborts when started with the option
        --log-bin-index and without
        --log-bin, and when started with
        --log-slave-updates and without
        --log-bin.
      
        API change: the reconnect flag in the
        MYSQL structure is now set to 0 by
        mysql_real_connect(). Only those
        client programs which didn't explicitly set this flag to 0 or 1
        after mysql_real_connect()
        experience a change. Having automatic reconnection enabled by
        default was considered too dangerous (after reconnection, table
        locks, temporary tables, user and session variables are lost).
      
        Bit-field values can be written using
        b' notation.
        value'value is a binary value written using
        0s and 1s.
      
        InnoDB: Relaxed locking in
        INSERT ...
        SELECT, single table UPDATE ...
        (SELECT) and single table DELETE ...
        (SELECT) clauses when
        innodb_locks_unsafe_for_binlog
        is used and isolation level of the transaction is not
        SERIALIZABLE.
        InnoDB uses consistent read in these cases
        for a selected table.
      
        InnoDB now supports a fast
        TRUNCATE TABLE. One visible
        change from this is that auto-increment values for this table
        are reset on TRUNCATE TABLE.
      
        InnoDB: Introduced a compact record format
        that does not store the number of columns or the lengths of
        fixed-size columns. The old format can be requested by
        specifying ROW_FORMAT=REDUNDANT. The new
        format (ROW_FORMAT=COMPACT) is the default.
        The new format typically saves 20% of disk space and memory.
      
The presence of the new compact row format decreases row storage space by about 20% at the cost of increasing CPU use for some operations. If your workload is a typical one that is limited by cache hit rates and disk speed it is likely to be faster. If it is a rare case that is limited by CPU speed, it might be slower.
        From the Windows distribution, predefined accounts without
        passwords for remote users ('root'@'%',
        ''@'%') were removed (other distributions
        never had them).
      
        Added the FEDERATED storage engine. See
        Section 13.7, “The FEDERATED Storage Engine”.
      
        InnoDB: Setting the initial
        AUTO_INCREMENT value for an
        InnoDB table using CREATE TABLE ...
        AUTO_INCREMENT =  now
        works, and nALTER TABLE ... AUTO_INCREMENT =
         resets the current value.
      n
User variable coercibility has been changed from “coercible” to “implicit.” That is, user variables have the same coercibility as column values.
        Security improvement: User-defined functions should have at
        least one symbol defined in addition to the
        xxx symbol that corresponds to the main
        xxx() function. These auxiliary symbols
        correspond to the xxx_init(),
        xxx_deinit(), xxx_reset(),
        xxx_clear(), and xxx_add()
        functions. mysqld by default no longer loads
        UDFs unless they have at least one auxiliary symbol defined in
        addition to the main symbol. The
        --allow-suspicious-udfs option
        controls whether UDFs that have only an xxx
        symbol can be loaded. By default, the option is off.
        mysqld also checks UDF file names when it
        reads them from the mysql.func table and
        rejects those that contain directory path name separator
        characters. (It already checked names as given in
        CREATE FUNCTION statements.) See
        Section 21.2.2.1, “UDF Calling Sequences for Simple Functions”,
        Section 21.2.2.2, “UDF Calling Sequences for Aggregate Functions”, and
        Section 21.2.2.6, “User-Defined Function Security Precautions”. Thanks to Stefano Di Paola
        <stefano.dipaola@wisec.it> for finding and
        informing us about this issue.
       (CVE-2005-0709, CVE-2005-0710)
        Added the --large-pages option
        for mysqld. Large page support can be used on
        Linux systems. See Section 7.5.9, “Enabling Large Page Support”.
      
        Added an error member to the
        MYSQL_BIND data structure that is used in the
        C API for prepared statements. This member is used for reporting
        data truncation errors. Truncation reporting is enabled via the
        new MYSQL_REPORT_DATA_TRUNCATION option for
        the mysql_options() C API
        function.
      
        Added the multi_range_count system variable.
      
        The coercibility for the return value of functions such as
        USER() or
        VERSION() now is “system
        constant” rather than “implicit.” This makes
        these functions more coercible than column values so that
        comparisons of the two do not result in Illegal mix of
        collations errors.
        COERCIBILITY() was modified to
        accommodate this new coercibility value. See
        Section 11.10.3, “Information Functions”.
      
        InnoDB: Upgrading from
        4.1: The sorting order for end-space in
        TEXT columns for
        InnoDB tables has changed. Starting from
        5.0.3, InnoDB compares
        TEXT columns as space-padded at
        the end. If you have a nonunique index on a
        TEXT column, you should run
        CHECK TABLE on it, and run
        OPTIMIZE TABLE if the check
        reports errors. If you have a UNIQUE INDEX on
        a TEXT column, you should rebuild
        the table with OPTIMIZE TABLE.
      
Boolean full-text phrase searching now requires only that matches contain exactly the same words as the phrase and in the same order. Nonword characters no longer need match exactly.
        my.cnf in the compile-time datadir (usually
        /usr/local/mysql/data/ in the binary
        tarball distributions) is not being read anymore. The value of
        the environment variable MYSQL_HOME is used
        instead of the hard-coded path.
      
        Additional control over transaction completion was implemented.
        The COMMIT and
        ROLLBACK
        statements support AND [NO] CHAIN and
        RELEASE clauses. There is a new
        RELEASE
        SAVEPOINT statement. The
        completion_type system variable
        was added for setting the global and session default completion
        type.
      
        Security improvement: The server creates
        .frm, .MYD,
        .MYI, .MRG,
        .ISD, and .ISM table
        files only if a file with the same name does not already exist.
        Thanks to Stefano Di Paola
        <stefano.dipaola@wisec.it> for finding and
        informing us about this issue.
       (CVE-2005-0711)
        Added the
        engine_condition_pushdown
        system variable. For NDB, setting this variable to 1 allows
        processing of some WHERE clause conditions to
        be processed in NDB nodes before rows are sent to the MySQL
        server, rather than having rows sent to the server for
        evaluation.
      
        Support for the ISAM storage engine has been
        removed. If you have ISAM tables, you should
        convert them before upgrading. See
        Section 2.18.1.2, “Upgrading from MySQL 4.1 to 5.0”.
      
        Added the CREATE ROUTINE and
        ALTER ROUTINE privileges, and
        made the EXECUTE privilege
        operational.
      
        BIT in column definitions now is
        a distinct data type; it no longer is treated as a synonym for
        TINYINT(1).
      
        Added cp932 (SJIS for Windows Japanese) and
        eucjpms (UJIS for Windows Japanese) character
        sets.
      
        MEMORY (HEAP) can have
        VARCHAR fields.
      
        SHOW DATABASES,
        SHOW TABLES,
        SHOW COLUMNS, and so forth,
        display information about the
        INFORMATION_SCHEMA database. Also, several
        SHOW statements now accept a
        WHERE clause specifying which output rows to
        display. See Chapter 19, INFORMATION_SCHEMA Tables.
      
        SHOW COLUMNS now displays
        NO rather than blank in the
        Null output column if the corresponding table
        column cannot be NULL.
      
        When the MyISAM storage engine detects
        corruption of a MyISAM table, a message
        describing the problem now is written to the error log.
      
        A VARCHAR column can now contain
        up to 65535 bytes. In addition,
        VARCHAR columns now remember
        trailing spaces. For more details, see
        Section C.1, “Changes in Release 5.0.x (Production)”.
      
        Added --innodb-checksums and
        --innodb-doublewrite options for
        mysqld.
      
        Added several InnoDB status variables. See
        Section 5.1.6, “Server Status Variables”.
      
        Added account-specific MAX_USER_CONNECTIONS
        limit, which allows you to specify the maximum number of
        concurrent connections for the account. Also, all limited
        resources now are counted per account (instead of being counted
        per user + host pair as it was before). Use the
        --old-style-user-limits option to
        get the old behavior.
      
        Implemented support for XA transactions. See
        Section 12.3.7, “XA Transactions”. The implementation makes the
        --innodb_safe_binlog option obsolete, so it has
        been removed.
      
        mysqlbinlog now prints a
        ROLLBACK
        statement at the end of its output, in case the server crashed
        while it was in the process of writing the final entry into the
        last binary log named on the command line. This causes any
        half-written transaction to be rolled back when the output is
        executed. The
        ROLLBACK is
        harmless if the binary log file was written and closed normally.
      
        Seconds_Behind_Master is
        NULL (which means “unknown”) if
        the slave SQL thread is not running, or if the slave I/O thread
        is not running or not connected to master. It is zero if the SQL
        thread has caught up to the I/O thread. It no longer grows
        indefinitely if the master is idle.
      
        FLUSH TABLES WITH READ
        LOCK is now killable while it is waiting for running
        COMMIT statements to finish.
      
        The MySQL server aborts immediately instead of simply issuing a
        warning if it is started with the
        --log-bin option but cannot
        initialize the binary log at startup (that is, an error occurs
        when writing to the binary log file or binary log index file).
      
        The binary log file and binary log index file now are handled
        the same way as MyISAM tables when there is a
        “disk full” or “quota exceeded” error.
        See Section B.5.4.3, “How MySQL Handles a Full Disk”.
      
        InnoDB: When MySQL/InnoDB is compiled on Mac
        OS X 10.2 or earlier, detect the operating system version at run
        time and use the fcntl() file flush method
        on Mac OS X versions 10.3 and later. In Mac OS X,
        fsync() does not flush the write cache in
        the disk drive, but the special fcntl()
        does; however, the flush request is ignored by some external
        devices. Failure to flush the buffers may cause severe database
        corruption at power outages.
      
Bugs fixed:
Replication: If multiple semicolon-separated statements were received in a single packet, they were written to the binary log as a single event rather than as separate per-statement events. For a server serving as a replication master, this caused replication to fail when the event was sent to slave servers. (Bug#8436)
Replication: 
        A replication master stamped a generated statement (such as a
        SET statement) with an error code intended
        only for another statement. This could happen, for example, when
        a statement generated a duplicate key error on the master but
        still had be to replicated to the slave.
       (Bug#8412)
Replication: 
        If the slave was running with
        --replicate-*-table options which excluded one
        temporary table and included another, and the two tables were
        used in a single DROP TEMPORARY TABLE IF
        EXISTS statement, as the ones the master automatically
        writes to its binary log upon client's disconnection when client
        has not explicitly dropped these, the slave could forget to
        delete the included replicated temporary table. Only the slave
        needs to be upgraded.
       (Bug#8055)
Replication: 
        Multiple-table updates did not replicate properly to slave
        servers where --replicate-*-table options had
        been specified.
       (Bug#7011)
Replication: 
        A replication slave could crash after replicating many
        ANALYZE TABLE,
        OPTIMIZE TABLE, or
        REPAIR TABLE statements from the
        master.
       (Bug#6461, Bug#7658)
Replication: 
        Changed semantics of CREATE/ALTER/DROP
        DATABASE statements so that replication of
        CREATE DATABASE is possible when
        using --binlog-do-db and
        --binlog-ignore-db.
       (Bug#6391)
Replication: DDL statements for views were not being written to the binary log (and thus not subject to replication). (Bug#4838)
        mysqldump misinterpreted
        “_” and
        “%” characters in the names of
        tables to be dumped as wildcard characters.
       (Bug#9123)
        In strict or traditional SQL mode, too-long string values
        assigned to string columns (CHAR,
        VARCHAR,
        BINARY,
        VARBINARY,
        TEXT, or
        BLOB) were correctly truncated,
        but the server returned an SQLSTATE value of
        01000 (should be 22001).
       (Bug#9029, Bug#6999)
        The definition of the enumeration-valued
        sql_mode column of the
        mysql.proc table was missing some of the
        current allowable SQL modes, so stored routines would not
        necessarily execute with the SQL mode in effect at the time of
        routine definition.
       (Bug#8902)
        TRUNCATE TABLE did not work
        within stored procedures. Now, within stored procedures,
        TRUNCATE TABLE is executed in the
        same way as DELETE. This change
        was necessary because TRUNCATE
        TABLE implicitly locks tables.
       (Bug#8850)
        A rare race condition could cause
        FLUSH TABLES WITH READ
        LOCK to hang.
       (Bug#8682)
        AES_DECRYPT(
        could fail to return col_name,key)NULL for invalid values
        in col_name, if
        col_name was declared as NOT
        NULL.
       (Bug#8669)
        If SELECT
        DISTINCT named an index column multiple times in the
        select list, the server tried to access different key fields for
        each instance of the column, which could result in a crash.
       (Bug#8532)
        MATCH ... AGAINST in natural language mode
        could cause a server crash if the FULLTEXT
        index was not used in a join (that is,
        EXPLAIN did not show
        fulltext join mode) and the
        search query matched no rows in the table.
       (Bug#8522)
        REPAIR TABLE did not invalidate
        query results in the query cache that were generated from the
        table.
       (Bug#8480)
        LOAD INDEX statement now loads
        the index into memory.
       (Bug#8452)
For a stored function that refers to a given table, invoking the function while selecting from the same table resulted in a server crash. (Bug#8405)
        Comparison of a DECIMAL column
        containing NULL to a subquery that produced
        DECIMAL values resulted in a
        server crash.
       (Bug#8397)
        DELETE FROM  when the tbl_name ...
        WHERE ... ORDER BY
        tbl_name.col_name
        ORDER BY column was
        qualified with the table name caused the server to crash.
       (Bug#8392)
Stored functions that used cursors could return incorrect results. (Bug#8386)
        The Cyrillic letters I
        (И) and SHORT I
        (Й) were treated as being the same
        character by the utf8_general_ci collation.
       (Bug#8385)
        When performing boolean full-text searches on
        utf8 columns, a double-quote character in the
        search string caused the server to crash.
       (Bug#8351)
        The --set-character-set option for
        myisamchk was changed to
        --set-collation. The value
        needed for specifying how to sort indexes is a collation name,
        not a character set name.
       (Bug#8349)
        Corruption of MyISAM table indexes could
        occur with TRUNCATE TABLE if the
        table had already been opened. For example, this was possible if
        the table had been opened implicitly by selecting from a
        MERGE table that mapped to the
        MyISAM table. The server now issues an error
        message for TRUNCATE TABLE under
        these conditions.
       (Bug#8306)
        For a query with both GROUP BY and
        COUNT(DISTINCT) clauses and a
        FROM clause with a subquery,
        NULL was returned for any
        VARCHAR column selected by the
        subquery.
       (Bug#8218)
        Selecting from an INFORMATION_SCHEMA table
        combined with a subquery on an
        INFORMATION_SCHEMA table caused an error with
        the message Table .
       (Bug#8164)tbl_name
        is corrupted
        Matching of table names by mysqlhotcopy now
        accommodates DBD::mysql versions 2.9003 and
        up, which implement identifier quoting.
       (Bug#8136)
Re-execution of prepared statements containing subqueries caused the server to crash. (Bug#8125)
A problem with equality propagation optimization for prepared statements and stored procedures caused a server crash upon re-execution of the prepared statement or stored procedure. (Bug#8115, Bug#8849)
Selecting from a view defined as a join caused a server crash if the query cache was enabled. (Bug#8054)
        Results in the query cache generated from a view were not
        properly invalidated after ALTER
        VIEW or DROP VIEW on
        that view.
       (Bug#8050)
        Creating a table using a name containing a character that is
        illegal in character_set_client
        resulted in the character being stripped from the name and no
        error. The character now is considered an error.
       (Bug#8041)
Certain correlated subqueries with forward references (referring to an alias defined later in the outer query) could crash the server. (Bug#8025)
        Corrected a problem with references to DUAL
        where statements such as SELECT 1 AS a FROM
        DUAL would succeed but statements such as
        SELECT 1 AS a FROM DUAL LIMIT 1 would fail.
       (Bug#8023)
        Comparing a nested row expression (such as
        ROW(1,(2,3))) with a subquery caused the
        server to crash.
       (Bug#8022)
The number of columns in a row comparison against a subquery was calculated incorrectly. (Bug#8020)
        mysqldump now avoids writing SET
        NAMES to the dump output if the server is older than
        version 4.1 and would not understand that statement.
       (Bug#7997)
        A deadlock could occur on an update followed by a
        SELECT on an
        InnoDB table without any explicit locks being
        taken. InnoDB now takes an exclusive lock
        when INSERT ON DUPLICATE KEY UPDATE is
        checking duplicate keys.
       (Bug#7975)
        A slave running MySQL 3.23.51 or newer hung while trying to
        connect to a master running MySQL 3.23.50 or older. (The reason
        for this was a bug in the old masters — SELECT
        @@ caused the
        server to hang — which was fixed in MySQL 3.23.50.)
       (Bug#7965)unknown_var
        Erroneous output resulted from
        SELECT
        DISTINCT combined with a subquery and GROUP
        BY.
       (Bug#7946)
        FOUND_ROWS() returned an
        incorrect value after a SELECT SQL_CALC_FOUND_ROWS
        DISTINCT statement that selected constants and
        included GROUP BY and
        LIMIT clauses.
       (Bug#7945)
        mysqld_safe now understands the
        --help option. Previously, it ignored the
        option and attempted to start the server anyway.
       (Bug#7931)
Creating a user with grants failed when specifying a password but worked without one. (Bug#7905)
Comparing the result of a subquery to a nonexistent column caused the server to crash. This issue affected MySQL on Windows platforms only. (Bug#7885)
        ALTER TABLE improperly accepted
        an index on a TIMESTAMP column
        that CREATE TABLE would reject.
       (Bug#7884)
MySQL allowed concurrent updates (including inserts and deletes) to a table if binary logging was enabled. Now, all updates are executed in a serialized fashion, because they are executed serialized when the binary log is replayed. (Bug#7879)
        Ensured that mysqldump --single-transaction
        sets its transaction isolation level to
        REPEATABLE READ before
        proceeding (otherwise if the MySQL server was configured to run
        with a default isolation level lower than
        REPEATABLE READ it could give
        an inconsistent dump).
       (Bug#7850)
        mysqlbinlog forgot to add backquotes around
        the collation of user variables (causing later parsing problems
        as BINARY is a reserved word).
       (Bug#7793)
        A Table is full error occurred when the
        table was still smaller than
        max_heap_table_size.
       (Bug#7791)
        Use of GROUP_CONCAT() with
        HAVING caused the server to crash.
       (Bug#7769)
        The CONV() function returned an
        unsigned BIGINT number, which
        does not fit in 32 bits.
       (Bug#7751)
        The IN() operator did not return
        correct results if all values in the list were constants and
        some of them used substring functions such as
        LEFT(),
        RIGHT(), or
        MID().
       (Bug#7716)
        When encountering a disk full or
        quota exceeded write error,
        MyISAM sometimes failed to sleep and retry
        the write, resulting in a corrupted table.
       (Bug#7714)
        The CONVERT_TZ() function, when
        its second or third argument was from a
        const table, caused the
        server to crash. (See Section 12.8.2, “EXPLAIN Syntax”.)
       (Bug#7705)
        The output of the STATUS
        (\s) command in mysql had
        the values for the server and client character sets reversed.
       (Bug#7571)
        A LEFT OUTER JOIN between an empty base table
        and a view on an empty base table caused a server crash.
       (Bug#7433)
        Ordering by an unsigned expression (more complex than a column
        reference) was treating the value as signed, producing
        incorrectly sorted results. HAVING was also
        treating unsigned columns as signed.
       (Bug#7425)
The server crashed when an error occurred during the filling of a temporary table created for handling a view or derived table. (Bug#7413)
        Made the MySQL server accept executing SHOW
        CREATE DATABASE even if the connection has an open
        transaction or locked tables. Refusing it made
        mysqldump --single-transaction sometimes fail
        to print a complete CREATE
        DATABASE statement for some dumped databases.
       (Bug#7358)
        Handling of trailing spaces was incorrect for the
        ucs2 character set.
       (Bug#7350)
        --expire-logs-days was not
        honored if using only transactions.
       (Bug#7236)
        Some INFORMATION_SCHEMA columns that
        contained timestamp values were of type
        VARBINARY. These were changed to
        TIMESTAMP.
       (Bug#7217)
        Some INFORMATION_SCHEMA columns that
        contained catalog identifiers were of type
        LONGTEXT. These
        were changed to
        VARCHAR(, where
        NN is the appropriate maximum
        identifier length.
       (Bug#7215)
        Use of GROUP_CONCAT() in the
        select list when selecting from a view caused a server crash.
       (Bug#7116)
        An expression that tested a case-insensitive character column
        against string constants that differed in lettercase could fail
        because the constants were treated as having a binary collation.
        (For example, WHERE city='London' AND
        city='london' could fail.)
       (Bug#7098, Bug#8690)
        Setting the initial AUTO_INCREMENT value for
        an InnoDB table using CREATE TABLE
        ... AUTO_INCREMENT =  did
        not work, and nALTER TABLE ... AUTO_INCREMENT =
         did not reset the current
        value.
       (Bug#7061)n
        When setting integer system variables to a negative value with
        SET VARIABLES, the value was treated as a
        positive value modulo 232.
       (Bug#6958)
        Use of a view in a correlated subquery that contains
        HAVING but no GROUP BY
        caused a server crash.
       (Bug#6894)
        Praparing a query using the
        CONVERT_TZ() function with
        constant arguments caused the server to crash.
       (Bug#6849)
        Handling by mysql_list_fields()
        of references to stored functions within views was incorrect and
        could result in a server crash.
       (Bug#6814)
        A sequence of
        BEGIN (or
        SET autocommit = 0),
        FLUSH TABLES WITH READ
        LOCK, transactional update,
        COMMIT,
        FLUSH TABLES WITH READ
        LOCK could hang the connection forever and possibly
        the MySQL server itself. This happened for example when running
        the innobackup script several times.
       (Bug#6732)
        Prevent adding CREATE TABLE .. SELECT query
        to the binary log when the insertion of new records partially
        failed.
       (Bug#6682)
        mysqlbinlog did not print SET
        PSEUDO_THREAD_ID statements in front of
        LOAD DATA
        INFILE statements inserting into temporary tables,
        thus causing potential problems when rolling forward these
        statements after restoring a backup.
       (Bug#6671)
        If a MyISAM table on Windows had
        INDEX DIRECTORY or DATA
        DIRECTORY table options, mysqldump
        dumped the directory path names with single-backslash path name
        separators. This would cause syntax errors when importing the
        dump file. mysqldump now changes
        “\” to
        “/” in the path names on
        Windows.
       (Bug#6660)
        SHOW CREATE TABLE now reports
        ENGINE=MEMORY rather than
        ENGINE=HEAP for a MEMORY
        table (unless the MYSQL323 SQL
        mode is enabled).
       (Bug#6659)
        Incorrectly ordered results were returned from a query using a
        FULLTEXT index to retrieve rows and there was
        another index that was usable for ORDER BY.
        For such a query, EXPLAIN showed
        the fulltext join type, but
        showed the other (not FULLTEXT) index in the
        Key column.
       (Bug#6635)
        CREATE TABLE ... LIKE failed on Windows when
        the source or destination table was located in a symlinked
        database directory.
       (Bug#6607)
        Retrieving from a view defined as a
        SELECT that mixed
        UNION ALL and
        UNION DISTINCT
        resulted in a different result than retrieving from the original
        SELECT.
       (Bug#6565)
        Selecting from a view that had an EXISTS or
        NOT EXISTS subquery did not always work
        properly, and selecting columns by name could cause a server
        crash. With SELECT *, crashes did not occur,
        but columns in the outer query were not resolved properly.
       (Bug#6394)
        Fixed a problem in
        NO_BACKSLASH_ESCAPES SQL mode
        for strings that contained both the string quoting character and
        backslash.
       (Bug#6368)
        The CHAR() function was not
        ignoring NULL arguments, contrary to the
        documentation.
       (Bug#6317)
Starting and stopping the slave thread (only) could in some circumstance cause the server to crash. (Bug#6148)
        InnoDB: Honor the
        --tmpdir startup option when
        creating temporary files. Previously, InnoDB
        temporary files were always created in the temporary directory
        of the operating system. On Netware, InnoDB
        will continue to ignore --tmpdir.
       (Bug#5822)
        A HAVING clause that referred to
        RAND() or a user-defined function
        in the SELECT part of a query
        through an alias could cause MySQL to crash or to return an
        incorrect value.
       (Bug#5185)
        Platform and architecture information in version information
        produced for --version option on Windows was
        always Win95/Win98 (i32). More accurately
        determine platform as Win32 or
        Win64 for 32-bit or 64-bit Windows, and
        architecture as ia32 for x86,
        ia64 for Itanium, and axp
        for Alpha.
       (Bug#4445)
        When using the RPAD() function
        (or any function adding spaces to the right) in a query that had
        to be resolved by using a temporary table, all resulting strings
        had rightmost spaces removed (that is,
        RPAD() did not work)
       (Bug#4048)
Host name matching didn't work if a netmask was specified for table-specific privileges. (Bug#3309)
        mysql_fix_privilege_tables now makes it
        possible for mysql privilege tables created
        in MySQL 5.0 to be used with MySQL 4.1. This makes it possible
        to downgrade from 5.0 to 4.1, or to run MySQL 4.1 and 5.0 using
        the same privilege table files for testing purposes.
      
        Giving mysqld a SIGHUP
        caused it to crash.
      
        Prepared statements using
        SUM(DISTINCT...) did not perform
        correctly.
      
        InnoDB: Use native
        tmpfile() function on Netware. All
        InnoDB temporary files are created under
        sys:\tmp. Previously,
        InnoDB temporary files were never deleted on
        Netware.
      
A symlink vulnerability in the mysqlaccess script was reported by Javier Fernandez-Sanguino Pena and Debian Security Audit Team. (CVE-2005-0004)
A number of portability issues relating to overflow in floating point values were corrected.
Prepared statements now gives warnings on prepare.
        The combination of -not and
        trunc* operators in a full-text search did
        not work correctly. Using more than one truncated negative
        search term caused the result to be empty.
      
        Prepared statements did not work correctly with OUTER
        JOIN.
      

User Comments
Add your own comment.