DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(mysql.info) news-5-0-1

Info Catalog (mysql.info) news-5-0-2 (mysql.info) news-5-0-x (mysql.info) news-5-0-0
 
 D.1.20 Changes in release 5.0.1 (27 Jul 2004)
 ---------------------------------------------
 
 * This build passes our test suite and fixes a lot of reported
 bugs found in the previous 5.0.0 release. However, please be aware that
 this is not a `standard MySQL build' in the sense that there are still
 some open critical bugs in our bugs database at
 `http://bugs.mysql.com/' that affect this release as well. We are
 actively fixing these and will make a new release where these are fixed
 as soon as possible. However, this binary should be a good candidate
 for testing new MySQL 5.0 features for future products.
 
 Functionality added or changed:
 
    * *Warning: Incompatible change!* C API change: `mysql_shutdown()'
      now requires a second argument. This is a source-level
      incompatibility that affects how you compile client programs; it
      does not affect the ability of compiled clients to communicate
      with older servers. See  mysql-shutdown.
 
    * When installing a MySQL server as a Windows service, the
      installation command can include a -local-service option following
      the service name to cause the server to run using the
      `LocalService' Windows account that has limited privileges. This
      is in addition to the -defaults-file option that also can be given
      following the service name.
 
    * Added support for read-only and updatable views based on a single
      table or other updatable views. View use requires that you upgrade
      your grant tables to add the view-related privileges. See 
      mysql-fix-privilege-tables.
 
    * Implemented a new `greedy search' optimizer that can significantly
      reduce the time spent on query optimization for some many-table
      joins. (You are affected if not only some particular `SELECT' is
      slow, but even using `EXPLAIN' for it takes a noticeable amount of
      time.) Two new system variables, `optimizer_search_depth' and
      `optimizer_prune_level', can be used to fine-tune optimizer
      behavior.
 
    * A stored procedure is no longer `global.' That is, it now belongs
      to a specific database:
 
         * When a database is dropped, all routines belonging to that
           database are also dropped.
 
         * Procedure names may be qualified, for example, `db.p()'
 
         * When executed from another database, an implicit `USE DB_NAME'
           is in effect.
 
         * Explicit `USE DB_NAME' statements no longer are allowed in a
           stored procedure.
 
      See  stored-procedures.
 
    * Fixed `SHOW TABLES' output field name and values according to
      standard. Field name changed from `Type' to `table_type', values
      are `BASE TABLE', `VIEW' and `ERROR'. (Bug #4603
      (http://bugs.mysql.com/4603))
 
    * Added the `sql_updatable_view_key' system variable.
 
    * Added the -replicate-same-server-id server option.
 
    * Added `Last_query_cost' status variable that reports optimizer
      cost for last compiled query.
 
    * Added the -to-last-log option to `mysqlbinlog', for use in
      conjunction with -read-from-remote-server.
 
    * Added the -innodb-safe-binlog server option, which adds
      consistency guarantees between the content of `InnoDB' tables and
      the binary log. See  binary-log.
 
    * `OPTIMIZE TABLE' for `InnoDB' tables is now mapped to `ALTER
      TABLE' instead of `ANALYZE TABLE'. This rebuilds the table, which
      updates index statistics and frees space in the clustered index.
 
    * `sync_frm' is now a settable global variable (not only a startup
      option).
 
    * For replication of `MEMORY' (`HEAP') tables: Made the master
      automatically write a `DELETE FROM' statement to its binary log
      when a `MEMORY' table is opened for the first time since master's
      startup. This is for the case where the slave has replicated a
      non-empty `MEMORY' table, then the master is shut down and
      restarted: the table is now empty on master; the `DELETE FROM'
      empties it on slave too. Note that even with this fix, between the
      master's restart and the first use of the table on master, the
      slave still has out-of-date data in the table. But if you use the
      -init-file option to populate the `MEMORY' table on the master at
      startup, it ensures that the failing time interval is zero. (Bug
      #2477 (http://bugs.mysql.com/2477))
 
    * When a session having open temporary tables terminates, the
      statement automatically written to the binary log is now `DROP
      TEMPORARY TABLE IF EXISTS' instead of `DROP TEMPORARY TABLE', for
      more robustness.
 
    * The MySQL server now returns an error if `SET SQL_LOG_BIN' is
      issued by a user without the `SUPER' privilege (in previous
      versions it just silently ignored the statement in this case).
 
    * Changed that when the MySQL server has binary logging disabled
      (that is, no -log-bin option was used), then no transaction binary
      log cache is allocated for connections.  This should save
      `binlog_cache_size' bytes of memory (32KB by default) for every
      connection.
 
    * Added the `sync_binlog=N' global variable and startup option,
      which makes the MySQL server synchronize its binary log to disk
      (`fdatasync()') after every Nth write to the binary log.
 
    * Changed the slave SQL thread to print less useless error messages
      (no more message duplication; no more messages when an error is
      skipped because of `slave-skip-errors').
 
    * `DROP DATABASE IF EXISTS', `DROP TABLE IF EXISTS', single-table
      `DELETE', and single-table `UPDATE' now are written to the binary
      log even if they changed nothing on the master (for example, even
      if a `DELETE' matched no rows). The old behavior sometimes caused
      bad surprises in replication setups.
 
    * Replication and `mysqlbinlog' now have better support for the case
      that the session character set and collation variables are changed
      within a given session. See  replication-features.
 
    * Killing a `CHECK TABLE' statement does not result in the table
      being marked as `corrupted' any more; the table remains as if
      `CHECK TABLE' had not even started. See  kill.
 
 Bugs fixed:
 
    * Strange results with index (x, y) ... `WHERE x=VAL_1 AND y>=VAL_2
      ORDER BY PK;' (Bug #3155 (http://bugs.mysql.com/3155))
 
    * Subquery and order by (Bug #3118 (http://bugs.mysql.com/3118))
 
    * `ALTER DATABASE' caused the client to hang if the database did not
      exist. (Bug #2333 (http://bugs.mysql.com/2333))
 
    * `SLAVE START' (which is a deprecated syntax, `START SLAVE' should
      be used instead) could crash the slave. (Bug #2516
      (http://bugs.mysql.com/2516))
 
    * Multiple-table `DELETE' statements were never replicated by the
      slave if there were any -replicate-*-table options. (Bug #2527
      (http://bugs.mysql.com/2527))
 
    * The MySQL server did not report any error if a statement
      (submitted through `mysql_real_query()' or `mysql_stmt_prepare()')
      was terminated by garbage characters. This can happen if you pass
      a wrong `length' parameter to these functions. The result was that
      the garbage characters were written into the binary log. (Bug
      #2703 (http://bugs.mysql.com/2703))
 
    * Replication: If a client connects to a slave server and issues an
      administrative statement for a table (for example, `OPTIMIZE
      TABLE' or `REPAIR TABLE'), this could sometimes stop the slave SQL
      thread. This does not lead to any corruption, but you must use
      `START SLAVE' to get replication going again.  (Bug #1858
      (http://bugs.mysql.com/1858))
 
    * Made clearer the error message that one gets when an update is
      refused because of the -read-only option.  (Bug #2757
      (http://bugs.mysql.com/2757))
 
    * Fixed that -replicate-wild-*-table rules apply to `ALTER DATABASE'
      when the table pattern is `%', as is the case for `CREATE
      DATABASE' and `DROP DATABASE'. (Bug #3000
      (http://bugs.mysql.com/3000))
 
    * Fixed that when a `Rotate' event is found by the slave SQL thread
      in the middle of a transaction, the value of `Relay_Log_Pos' in
      `SHOW SLAVE STATUS' remains correct. (Bug #3017
      (http://bugs.mysql.com/3017))
 
    * Corrected the master's binary log position that `InnoDB' reports
      when it is doing a crash recovery on a slave server. (Bug #3015
      (http://bugs.mysql.com/3015))
 
    * Changed the column `Seconds_Behind_Master' in `SHOW SLAVE STATUS'
      to never show a value of -1. (Bug #2826
      (http://bugs.mysql.com/2826))
 
    * Changed that when a `DROP TEMPORARY TABLE' statement is
      automatically written to the binary log when a session ends, the
      statement is recorded with an error code of value zero (this
      ensures that killing a `SELECT' on the master does not result in a
      superfluous error on the slave). (Bug #3063
      (http://bugs.mysql.com/3063))
 
    * Changed that when a thread handling `INSERT DELAYED' (also known
      as a `delayed_insert' thread) is killed, its statements are
      recorded with an error code of value zero (killing such a thread
      does not endanger replication, so we thus avoid a superfluous
      error on the slave). (Bug #3081 (http://bugs.mysql.com/3081))
 
    * Fixed deadlock when two `START SLAVE' commands were run at the
      same time. (Bug #2921 (http://bugs.mysql.com/2921))
 
    * Fixed that a statement never triggers a superfluous error on the
      slave, if it must be excluded given the -replicate-* options. The
      bug was that if the statement had been killed on the master, the
      slave would stop. (Bug #2983 (http://bugs.mysql.com/2983))
 
    * The -local-load option of `mysqlbinlog' now requires an argument.
 
    * Fixed a segmentation fault when running `LOAD DATA FROM MASTER'
      after `RESET SLAVE'.  (Bug #2922 (http://bugs.mysql.com/2922))
 
    * `mysqlbinlog --read-from-remote-server' read all binary logs
      following the one that was requested. It now stops at the end of
      the requested file, the same as it does when reading a local
      binary log. There is an option -to-last-log to get the old
      behavior. (Bug #3204 (http://bugs.mysql.com/3204))
 
    * Fixed `mysqlbinlog --read-from-remote-server' to print the exact
      positions of events in the "at #" lines.  (Bug #3214
      (http://bugs.mysql.com/3214))
 
    * Fixed a rare error condition that caused the slave SQL thread
      spuriously to print the message `Binlog has bad magic number' and
      stop when it was not necessary to do so.  (Bug #3401
      (http://bugs.mysql.com/3401))
 
    * Fixed `mysqlbinlog' not to forget to print a `USE' statement under
      rare circumstances where the binary log contained a `LOAD DATA
      INFILE' statement. (Bug #3415 (http://bugs.mysql.com/3415))
 
    * Fixed a memory corruption when replicating a `LOAD DATA INFILE'
      when the master had version 3.23. (Bug #3422
      (http://bugs.mysql.com/3422))
 
    * Multiple-table `DELETE' statements were always replicated by the
      slave if there were some -replicate-*-ignore-table options and no
      -replicate-*-do-table options. (Bug #3461
      (http://bugs.mysql.com/3461))
 
    * Fixed a crash of the MySQL slave server when it was built with
      -with-debug and replicating itself. (Bug #3568
      (http://bugs.mysql.com/3568))
 
    * Fixed that in some replication error messages, a very long query
      caused the rest of the message to be invisible (truncated), by
      putting the query last in the message. (Bug #3357
      (http://bugs.mysql.com/3357))
 
    * If `server-id' was not set using startup options but with `SET
      GLOBAL', the replication slave still complained that it was not
      set. (Bug #3829 (http://bugs.mysql.com/3829))
 
    * `mysql_fix_privilege_tables' didn't correctly handle the argument
      of its -password=PASSWORD_VAL option. (Bug #4240
      (http://bugs.mysql.com/4240))
 
    * Fixed potential memory overrun in `mysql_real_connect()' (which
      required a compromised DNS server and certain operating systems).
      (Bug #4017 (http://bugs.mysql.com/4017), CAN-2004-0836
      (http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2004-0836))
 
    * During the installation process of the server RPM on Linux,
      `mysqld' was run as the `root' system user, and if you had
      -log-bin=SOMEWHERE_OUT_OF_VAR_LIB_MYSQL it created binary log
      files owned by `root' in this directory, which remained owned by
      `root' after the installation. This is now fixed by starting
      `mysqld' as the `mysql' system user instead. (Bug #4038
      (http://bugs.mysql.com/4038))
 
    * Made `DROP DATABASE' honor the value of `lower_case_table_names'.
      (Bug #4066 (http://bugs.mysql.com/4066))
 
    * The slave SQL thread refused to replicate `INSERT ...  SELECT' if
      it examined more than 4 billion rows. (Bug #3871
      (http://bugs.mysql.com/3871))
 
    * `mysqlbinlog' didn't escape the string content of user variables,
      and did not deal well when these variables were in non-ASCII
      character sets; this is now fixed by always printing the string
      content of user variables in hexadecimal. The character set and
      collation of the string is now also printed. (Bug #3875
      (http://bugs.mysql.com/3875))
 
    * Fixed incorrect destruction of expression that led to a server
      crash on complex `AND'/`OR' expressions if query was ignored
      (either by a replication server because of -replicate-*-table
      rules, or by any MySQL server because of a syntax error). (Bug
      #3969 (http://bugs.mysql.com/3969), Bug #4494
      (http://bugs.mysql.com/4494))
 
    * If `CREATE TEMPORARY TABLE t SELECT' failed while loading the
      data, the temporary table was not dropped.  (Bug #4551
      (http://bugs.mysql.com/4551))
 
    * Fixed that when a multiple-table `DROP TABLE' failed to drop a
      table on the master server, the error code was not written to the
      binary log. (Bug #4553 (http://bugs.mysql.com/4553))
 
    * When the slave SQL thread was replicating a `LOAD DATA INFILE'
      statement, it didn't show the statement in the output of `SHOW
      PROCESSLIST'. (Bug #4326 (http://bugs.mysql.com/4326))
 
Info Catalog (mysql.info) news-5-0-2 (mysql.info) news-5-0-x (mysql.info) news-5-0-0
automatically generated byinfo2html