-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi,
MySQL 5.0.1, a new version of the popular Open Source/Free Software Database Management System, has been released. It is now available in source and binary form for a number of platforms from our download pages at http://www.mysql.com/downloads/ and mirror sites. Note that not all mirror sites may be up to date at this point in time - if you can't find this version on some mirror, please try again later or choose another download site. This is a snapshot of the alpha development release, adding new features and fixing recently discovered bugs. Most notably, this release introduces basic support of read only and updateable VIEWs based on single table or other updateable VIEWs, as well as a new "greedy" query optimizer and various improvements in the stored procedure and replication code. NOTE: 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 release' in the sense as there are still some open critical bugs in our bugs database (http://bugs.mysql.com/) that affect this release as well. Therefore this is more of a "snapshot release" of the current state of affairs. We are actively fixing these issues and will make a new release where these are fixed as soon as possible. However, this snapshot gives you an opportunity for testing and evaluating the new MySQL 5.0 features for future products. Please refer to our bug database at http://bugs.mysql.com/ for more details about the individual open and resolved bugs in this version. News from the ChangeLog: Functionality added or changed: * Added support of read only and updateable VIEWs based on single table or other updateable VIEWs. * Implemented a new ``greedy search'' optimizer that can significantly reduce the time spent on optimizing the query in 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. * 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 section "mysql_shutdown()" in the manual. * A stored procedure is no longer "global" - i.e. 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, e.g. `db.p()' * When executed from another database an implicit "use db" is in effect. * Explicit "use db" is no longer allowed in a stored procedure. * 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) * Added sql_updatable_view_key system variable. * Added --replicate-same-server-id server option. * Added Last_query_cost status variable that reports optimizer cost for last compiled query. * Added option --to-last-log to mysqlbinlog, for use in conjunction with --read-from-remote-server. * Added --innodb-safe-binlog server option, which adds consistency guarantees between the content of InnoDB tables and the binary log. See section "The Binary Log" in the manual. * OPTIMIZE TABLE for InnoDB tables is now mapped to ALTER TABLE instead of ANALYZE TABLE. * 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) * 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 binlog cache is allocated for connections (this should save binlog_cache_size bytes of memory (32 kilobytes 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 message 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 are now written to the binary log even if they changed nothing on the master (for example, even if the DELETE matched no row). 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 section "Replication Features and Known Problems" in the manual. Bugs fixed: * Strange results with index (x, y) ... WHERE x=val_1 AND y>=val_2 ORDER BY pk; (Bug #3155) * Subquery and order by (Bug #3118) * ALTER DATABASE caused the client to hang if the database did not exist. (Bug #2333) * SLAVE START (which is a deprecated syntax, START SLAVE should be used instead) could crash the slave. (Bug #2516) * Multiple-table DELETE statements were never replicated by the slave if there were any replicate-*-table options. (Bug #2527) * The MySQL server did not report any error if the query (submitted through mysql_real_query() or mysql_prepare()) was terminated by garbage characters (which can happen if you pass a wrong length parameter to mysql_real_query() or mysql_prepare()); the result was that the garbage characters were written into the binary log. (Bug #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) * Made clearer the error message which one gets when an update is refused because of the read-only option. (Bug #2757) * Fixed that replicate-wild-*-table rules apply to ALTER DATABASE when the table pattern is '%', like it is already the case for CREATE DATABASE and DROP DATABASE. (Bug #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) * Corrected the master's binary log position that InnoDB reports when it is doing a crash recovery on a slave server. (Bug #3015) * Changed the column Seconds_Behind_Master in SHOW SLAVE STATUS to never show a value of -1. (Bug #2826) * Changed that when a DROP TEMPORARY TABLE statement is automatically written to the binlog 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) * 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) * Fixed deadlock when two START SLAVE commands were run at the same time. (Bug #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) * 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) * 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) * Fixed mysqlbinlog --read-from-remote-server to print the exact positions of events in the "at #" lines. (Bug #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) * 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) * Fixed a memory corruption when replicating a LOAD DATA INFILE when the master had version 3.23. (Bug #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) * Fixed a crash of the MySQL slave server when it was built with --with-debug and replicating itself. (BUG #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) * 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) * mysql_fix_privilege_tables didn't correctly handle the argument of its --password=# option. (Bug #4240) * Fixed potential memory overrun in mysql_real_connect() (which required a compromised DNS server and certain operating systems). (Bug #4017) * 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) * Made DROP DATABASE honour the value of lower_case_table_names. (Bug #4066) * The slave SQL thread refused to replicate INSERT ... SELECT if it examined more than 4 billion rows. (Bug #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) * Fixed incorrect destruction of expression which led to crash of server 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, Bug #4494) Bye, LenZ - -- Lenz Grimmer <[EMAIL PROTECTED]> Senior Production Engineer MySQL GmbH, http://www.mysql.de/ Hamburg, Germany -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) Comment: For info see http://quantumlab.net/pine_privacy_guard/ iD8DBQFBD10BSVDhKrJykfIRAmnEAKCAsb2woagrTQrJt5M7gYXfFcTunQCfXx8Y FDOpqieB+GRGTqFw4u6ar4M= =wNCu -----END PGP SIGNATURE----- -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]