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:
          PRIMARY KEY now implies NOT
          NULL. (Bug#390)
        
          The Windows binary packages are now compiled with
          --enable-local-infile to match the Unix build
          configuration.
        
          Removed timing of tests from
          mysql-test-run. time
          does not accept all required parameters on many platforms (for
          example, QNX) and timing the tests is not really required (it
          is not a benchmark anyway).
        
          SHOW MASTER STATUS and
          SHOW SLAVE STATUS required the
          SUPER privilege; now they
          accept REPLICATION CLIENT as
          well. (Bug#343)
        
          Added multi-threaded MyISAM repair
          optimization and
          myisam_repair_threads
          variable to enable it. See
          Section 5.1.3, “Server System Variables”.
        
          Added
          innodb_max_dirty_pages_pct
          variable which controls amount of dirty pages allowed in
          InnoDB buffer pool.
        
          CURRENT_USER() and
          Access denied error messages now report the
          host name exactly as it was specified in the
          GRANT command.
        
Removed benchmark results from the source and binary distributions. They are still available in the BK source tree, though.
          InnoDB tables now support
          ANALYZE TABLE.
        
MySQL now issues an error when it opens a table that was created with MySQL 4.1.
          Option --new now changes binary items
          (0xFFDF) to be treated as binary strings
          instead of numbers by default. This fixes some problems with
          character sets where it is convenient to input the string as a
          binary item. After this change you have to convert the binary
          string to INTEGER with a
          CAST if you want to compare two binary
          items with each other and know which one is bigger than the
          other. SELECT CAST(0xfeff AS UNSIGNED) < CAST(0xff
          AS UNSIGNED). This is the default behavior in MySQL
          4.1. (Bug#152)
        
          Enabled
          delayed_insert_timeout on
          Linux (most modern glibc libraries have a
          fixed pthread_cond_timedwait()). (Bug#211)
        
          Do not create more insert delayed threads than given by
          max_delayed_threads.
          (Bug#211)
        
          Changed UPDATE ... LIMIT to apply the limit
          to rows that were matched, whether or not they actually were
          changed. Previously the limit was applied as a restriction on
          the number of rows changed.
        
Tuned optimizer to favor clustered index over table scan.
          Added warnings to error log indicating why a secure connection
          failed (when running with
          --log-warnings).
        
          Deprecated the options
          --skip-symlink and
          --use-symbolic-links
          and replaced them with
          --symbolic-links.
        
          The default option for
          innodb_flush_log_at_trx_commit
          was changed from 0 to 1 to make InnoDB
          tables ACID by default. See
          Section 13.2.4, “InnoDB Startup Options and System Variables”.
        
          Added a feature to
          SHOW
          KEYS to display keys that are disabled by
          ALTER TABLE DISABLE KEYS command.
        
          When using a nonexistent table type with
          CREATE TABLE, first try if the
          default table type exists before falling back to
          MyISAM.
        
          Added MEMORY as an alias for
          HEAP.
        
          Renamed function rnd to
          my_rnd as the name was too generic and is
          an exported symbol in libmysqlclient
          (thanks to Dennis Haney for the initial patch).
        
          Portability fix: renamed include/dbug.h
          to include/my_dbug.h.
        
          mysqldump no longer silently deletes the
          binary logs when invoked with the
          --master-data or
          --first-slave option; while
          this behavior was convenient for some users, others may suffer
          from it. Now you must explicitly ask for binary logs to be
          deleted by using the new
          --delete-master-logs option.
        
          If the slave is configured (using for example
          --replicate-wild-ignore-table=mysql.%)
          to exclude mysql.user,
          mysql.host, mysql.db,
          mysql.tables_priv and
          mysql.columns_priv from replication, then
          GRANT and
          REVOKE are not replicated.
        
Bugs fixed:
          Logged Access denied error message had
          incorrect Using password value. (Bug#398)
        
          Fixed bug with NATURAL LEFT JOIN,
          NATURAL RIGHT JOIN and RIGHT
          JOIN when using many joined tables. The problem was
          that the JOIN method was not always
          associated with the tables surrounding the
          JOIN method. If you have a query that uses
          many RIGHT JOIN or NATURAL ...
          JOINS you should verify that they work as you
          expected after upgrading MySQL to this version. (Bug#291)
        
          Fixed mysql parser not to erroneously
          interpret “'” or
          “"” characters within
          /* ... */ comment as beginning a quoted
          string.
        
          mysql command-line client no longer looks
          for \* commands inside backtick-quoted
          strings.
        
          Fixed Unknown error when using
          UPDATE ... LIMIT. (Bug#373)
        
          Fixed problem with ANSI mode and GROUP BY
          with constants. (Bug#387)
        
          Fixed bug if one used a multiple-table
          UPDATE and the query required a
          temporary table bigger than
          tmp_table_size. (Bug#286)
        
          Run mysql_install_db with the
          -IN-RPM option for the Mac OS X installation
          to not fail on systems with improperly configured host name
          configurations.
        
          LOAD DATA
          INFILE now reads 000000 as a zero
          date instead of "2000-00-00".
        
          Fixed bug that caused DELETE FROM table WHERE
          const_expression always to delete the whole table
          (even if expression result was false). (Bug#355)
        
          Fixed core dump bug when using
          FORMAT('nan',#). (Bug#284)
        
          Fixed name resolution bug with HAVING ...
          COUNT(DISTINCT ...).
        
          Fixed incorrect result from truncation operator
          (*) in MATCH ...
          AGAINST() in some complex joins.
        
          Fixed a crash in REPAIR ... USE_FRM
          command, when used on read-only table, nonexistent table or a
          table with a crashed index file.
        
          Fixed a crashing bug in mysql monitor
          program. It occurred if program was started with
          --no-defaults, with a prompt
          that contained the host name and a connection to a nonexistent
          database was requested.
        
Fixed problem when comparing a key for a multi-byte character set. (Bug#152)
          Fixed bug in LEFT, RIGHT
          and MID when used with multi-byte character
          sets and some GROUP BY queries. (Bug#314)
        
          Fix problem with ORDER BY being discarded
          for some DISTINCT queries. (Bug#275)
        
          Fixed that SET sql_big_selects = 1 works as
          documented (This corrects a new bug introduced in 4.0)
        
          Fixed some serious bugs in UPDATE ... ORDER
          BY. (Bug#241)
        
          Fixed unlikely problem in optimizing WHERE
          clause with constant expression like in WHERE 1 AND
          (a=1 AND b=1).
        
          Fixed that SET sql_big_selects = 1 works
          again.
        
          Introduced proper backtick quoting for db.table in
          SHOW GRANTS.
        
          FULLTEXT index stopped working after
          ALTER TABLE that converts
          TEXT column to
          CHAR. (Bug#283)
        
          Fixed a security problem with
          SELECT and wildcarded select
          list, when user only had partial column
          SELECT privileges on the table.
        
          Mark a MyISAM table as "analyzed" only when
          all the keys are indeed analyzed.
        
          Only ignore world-writable my.cnf files
          that are regular files (and not, for example, named pipes or
          character devices).
        
          Fixed few smaller issues with SET
          PASSWORD.
        
Fixed error message which contained deprecated text.
          Fixed a bug with two NATURAL JOINs in the
          query.
        
          SUM() didn't return
          NULL when there was no rows in result or
          when all values was NULL.
        
On Unix, symbolic link handling was not enabled by default and there was no way to turn this on.
          Added missing dashes to parameter
          --open-files-limit in
          mysqld_safe. (Bug#264)
        
          Fixed incorrect host name for TCP/IP connections displayed in
          SHOW PROCESSLIST.
        
          Fixed a bug with NAN in
          FORMAT(...) function ...
        
Fixed a bug with improperly cached database privileges.
          Fixed a bug in ALTER TABLE ENABLE / DISABLE
          KEYS which failed to force a refresh of table data
          in the cache.
        
          Fixed bugs in replication of
          LOAD DATA
          INFILE for custom parameters
          (ENCLOSED, TERMINATED
          and so on) and temporary tables. (Bug#183, Bug#222)
        
          Fixed a replication bug when the master is 3.23 and the slave
          4.0: the slave lost the replicated temporary tables if
          FLUSH LOGS
          was issued on the master. (Bug#254)
        
          Fixed a bug when doing LOAD DATA INFILE
          IGNORE: When reading the binary log,
          mysqlbinlog and the replication code read
          REPLACE instead of
          IGNORE. This could make the slave's table
          become different from the master's table. (Bug#218)
        
          Fixed a deadlock when
          relay_log_space_limit was set
          to a too small value. (Bug#79)
        
Fixed a bug in HAVING clause when an alias is used from the select list.
          Fixed overflow bug in MyISAM when a row is
          inserted into a table with a large number of columns and at
          least one BLOB/TEXT column. Bug was caused
          by incorrect calculation of the needed buffer to pack data.
        
          Fixed a bug when SELECT
          @non_existent_variable caused
          an error in the client/server protocol due to
          net_printf() output being sent to the
          client twice.
        
          Fixed a bug in setting the
          sql_big_selects option.
        
          Fixed a bug in SHOW PROCESSLIST
          which only displayed a localhost in the
          "Host" column. This was caused by a glitch
          that used only current thread information instead of
          information from the linked list of threads.
        
Removed unnecessary Mac OS X helper files from server RPM. (Bug#144)
          Allow optimization of multiple-table update for
          InnoDB tables as well.
        
Fixed a bug in multiple-table updates that caused some rows to be updated several times.
          Fixed a bug in mysqldump when it was called
          with --master-data: the
          CHANGE MASTER TO commands
          appended to the SQL dump had incorrect coordinates. (Bug#159)
        
          Fixed a bug when an updating query using
          USER() was replicated on the
          slave; this caused a segmentation fault on the slave.
          (Bug#178). USER() is still
          badly replicated on the slave (it is replicated to
          "").
        


User Comments
Add your own comment.