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:
          Added default_week_format
          system variable. The value is used as the default mode for the
          WEEK() function.
        
          mysqld now reads an additional option file
          group having a name corresponding to the server's release
          series: [mysqld-4.0] for 4.0.x servers,
          [mysqld-4.1] for 4.1.x servers, and so
          forth. This allows options to be specified on a
          series-specific basis.
        
          The CONCAT_WS() function no
          longer skips empty strings. (Bug#586).
        
          InnoDB now supports indexing a prefix of a
          column. This means, in particular, that
          BLOB and
          TEXT columns can be indexed in
          InnoDB tables, which was not possible
          before.
        
          A documentation change: Function
          INTERVAL(NULL, ...) returns
          -1.
        
          Enabled INSERT from
          SELECT when the table into
          which the records are inserted is also a table listed in the
          SELECT.
        
          Allow CREATE TABLE and
          INSERT from any
          UNION.
        
          The SQL_CALC_FOUND_ROWS option now always
          returns the total number of rows for any
          UNION.
        
          Removed --table option from
          mysqlbinlog to avoid repeating
          mysqldump functionality.
        
          Comment lines in option files can now start from the middle of
          a line, too (like basedir=c:\mysql # installation
          directory).
        
Changed optimizer slightly to prefer index lookups over full table scans in some boundary cases.
          Added thread-specific
          max_seeks_for_key variable
          that can be used to force the optimizer to use keys instead of
          table scans even if the cardinality of the index is low.
        
          Added optimization that converts LEFT JOIN
          to normal join in some cases.
        
A documentation change: added a paragraph about failover in replication (how to use a surviving slave as the new master, how to resume to the original setup). See Section 14.10, “Replication FAQ”.
          A documentation change: added warning notes about safe use of
          the CHANGE MASTER TO statement.
          See Section 12.5.2.1, “CHANGE MASTER TO Syntax”.
        
MySQL now issues a warning (not an error, as in 4.0.13) when it opens a table that was created with MySQL 4.1.
          Added --nice option to
          mysqld_safe to allow setting the niceness
          of the mysqld process. (Thanks to Christian
          Hammers for providing the initial patch.) (Bug#627)
        
          Added --read-only option to
          cause mysqld to allow no updates except
          from slave threads or from users with the
          SUPER privilege. (Original
          patch from Markus Benning).
        
          SHOW BINLOG EVENTS FROM x where
          x is less than 4 now silently converts
          x to 4 instead of printing an error. The
          same change was done for CHANGE MASTER TO
          MASTER_LOG_POS=x and CHANGE MASTER TO
          RELAY_LOG_POS=x.
        
          mysqld now only adds an interrupt handler
          for the SIGINT signal if you start it with
          the new --gdb option. This is
          done because some MySQL users encountered strange problems
          when they accidentally sent SIGINT to
          mysqld threads.
        
          RESET SLAVE now clears the
          Last_Errno and
          Last_Error fields in the output of
          SHOW SLAVE STATUS.
        
          Added max_relay_log_size
          variable; the relay log is rotated automatically when its size
          exceeds max_relay_log_size.
          But if max_relay_log_size is
          0 (the default),
          max_binlog_size is used (as
          in older versions).
          max_binlog_size still applies
          to binary logs in any case.
        
          FLUSH LOGS
          now rotates relay logs in addition to the other types of logs
          it rotates.
        
Bugs fixed:
          Comparison/sorting for latin1_de character
          set was rewritten. The old algorithm could not handle cases
          like "sä" > "ßa". See
          Section 9.2, “Using the German Character Set”. In rare cases it
          resulted in table corruption.
        
Fixed a problem with the password prompt on Windows. (Bug#683)
          ALTER TABLE ... UNION=(...) for
          MERGE table is now allowed even if some
          underlying MyISAM tables are read only.
          (Bug#702)
        
          Fixed a problem with CREATE TABLE t1 SELECT
          x'41'. (Bug#801)
        
Removed some incorrect lock warnings from the error log.
          Fixed memory overrun when doing REPAIR
          TABLE on a table with a multiple-part auto_increment
          key where one part was a packed
          CHAR.
        
          Fixed a probable race condition in the replication code that
          could potentially lead to
          INSERT statements not being
          replicated in the event of a
          FLUSH LOGS
          command or when the binary log exceeds
          max_binlog_size. (Bug#791)
        
          Fixed a crashing bug in INTERVAL and
          GROUP BY or DISTINCT.
          (Bug#807)
        
Fixed bug in mysqlhotcopy so it actually aborts for unsuccessful table copying operations. Fixed another bug so that it succeeds when there are thousands of tables to copy. (Bug#812)
Fixed problem with mysqlhotcopy failing to read options from option files. (Bug#808)
          Fixed bugs in optimizer that sometimes prevented MySQL from
          using FULLTEXT indexes even though it was
          possible (for example, in SELECT * FROM t1 WHERE
          MATCH a,b AGAINST("index") > 0).
        
          Fixed a bug with “table is full” in
          UNION operations.
        
          Fixed a security problem that enabled users with no privileges
          to obtain information on the list of existing databases by
          using SHOW TABLES and similar
          commands.
        
Fixed a stack problem on UnixWare/OpenUnix.
Fixed a configuration problem on UnixWare/OpenUNIX and OpenServer.
          Fixed a problem with
          max_user_connections.
        
          HANDLER without an index now
          works properly when a table has deleted rows. (Bug#787)
        
          Fixed a bug with LOAD DATA in
          mysqlbinlog. (Bug#670)
        
          Fixed that SET CHARACTER SET DEFAULT works.
          (Bug#462)
        
          Fixed MERGE table behavior in
          ORDER BY ... DESC queries. (Bug#515)
        
          Fixed server crash on
          PURGE
          MASTER LOGS or
          SHOW MASTER
          LOGS when the binary log is off. (Bug#733)
        
Fixed password-checking problem on Windows. (Bug#464)
          Fixed the bug in comparison of a
          DATETIME column and an integer
          constant. (Bug#504)
        
Fixed remote mode of mysqlbinlog. (Bug#672)
          Fixed ERROR 1105: Unknown error that
          occurred for some SELECT
          queries, where a column that was declared as NOT
          NULL was compared with an expression that took
          NULL value.
        
          Changed timeout in
          mysql_real_connect() to use
          poll() instead of
          select() to work around problem with many
          open files in the client.
        
          Fixed incorrect results from MATCH ...
          AGAINST used with a LEFT JOIN
          query.
        
The maximum value for system variables was limited to 4294967295 when specified on the command line.
          Fixed a bug that sometimes caused spurious “Access
          denied” errors in HANDLER ... READ
          statements, when a table is referenced via an alias.
        
          Fixed portability problem with safe_malloc,
          which caused MySQL to give "Freeing wrong aligned pointer"
          errors on SCO 3.2.
        
          ALTER TABLE ... ENABLE/DISABLE KEYS could
          cause a core dump when done after an
          INSERT DELAYED statement on the
          same table.
        
Fixed problem with conversion of localtime to GMT where some times resulted in different (but correct) timestamps. Now MySQL should use the smallest possible timestamp value in this case. (Bug#316)
          Fixed a bug (accidentally introduced by us but present only in
          version 4.0.13) that made
          INSERT ...
          SELECT into an AUTO_INCREMENT
          column not replicate well. This bug is in the master, not in
          the slave. (Bug#490)
        
          Fixed a bug: When an
          INSERT ...
          SELECT statement inserted rows into a
          nontransactional table, but failed at some point (for example,
          due to a “Duplicate key” error), the query was
          not written to the binary log. Now it is written to the binary
          log, with its error code, as all other queries are. About the
          slave-skip-errors option for how to handle
          partially completed queries in the slave, see
          Section 14.8, “Replication and Binary Logging Options and Variables”. (Bug#491)
        
          SET foreign_key_checks = 0 was not
          replicated properly. The fix probably will not be backported
          to 3.23.
        
          On a slave, LOAD
          DATA INFILE which had no IGNORE
          or REPLACE clause on the
          master, was replicated with IGNORE.
          Although this is not a problem if the master and slave data
          are identical (a LOAD that produces no
          duplicate conflicts on the master produces none on the slave
          anyway), which is true in normal operation, it is better for
          debugging not to silently add the IGNORE.
          That way, you can get an error message on the slave and
          discover that for some reason, the data on master and slave
          are different and investigate why. (Bug#571)
        
          On a slave, LOAD
          DATA INFILE printed an incomplete “Duplicate
          entry '%-.64s' for key %d'” message (the key name and
          value were not mentioned) in case of duplicate conflict (which
          does not happen in normal operation). (Bug#573)
        
          When using a slave compiled with --debug,
          CHANGE MASTER TO RELAY_LOG_POS could cause
          a debug assertion failure. (Bug#576)
        
          When doing a LOCK TABLES WRITE on an
          InnoDB table, commit could not happen, if
          the query was not written to the binary log (for example, if
          --log-bin was not used, or
          binlog-ignore-db was used). (Bug#578)
        
          If a 3.23 master had open temporary tables that had been
          replicated to a 4.0 slave, and the binary log got rotated,
          these temporary tables were immediately dropped by the slave
          (which caused problems if the master used them subsequently).
          This bug had been fixed in 4.0.13, but in a manner which
          caused an unlikely inconvenience: If the 3.23 master died
          brutally (power failure), without having enough time to
          automatically write DROP TABLE
          statements to its binary log, then the 4.0.13 slave would not
          notice the temporary tables have to be dropped, until the
          slave mysqld server is restarted. This
          minor inconvenience is fixed in 3.23.57 and 4.0.14 (meaning
          the master must be upgraded to 3.23.57 and the slave to 4.0.14
          to remove the inconvenience). (Bug#254)
        
          If MASTER_POS_WAIT() was
          waiting, and the slave was idle, and the slave SQL thread
          terminated, MASTER_POS_WAIT()
          would wait forever. Now when the slave SQL thread terminates,
          MASTER_POS_WAIT() immediately
          returns NULL (“slave
          stopped”). (Bug#651)
        
          After RESET SLAVE; START SLAVE;, the
          Relay_Log_Space value displayed by
          SHOW SLAVE STATUS was too big
          by four bytes. (Bug#763)
        
          If a query was ignored on the slave (because of
          --replicate-ignore-table and
          other similar rules), the slave still checked if the query got
          the same error code (0, no error) as on the master. So if the
          master had an error on the query (for example,
          “Duplicate entry” in a multiple-row insert), then
          the slave stopped and warned that the error codes didn't
          match. (Bug#797)
        


User Comments
Add your own comment.