-----BEGIN PGP SIGNED MESSAGE-----
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
* 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
* 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
* 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
* 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
* 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
* 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
* 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.
* 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.
* 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).
* 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.
* 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
Lenz Grimmer <lenz@stripped>
Senior Production Engineer
MySQL GmbH, http://www.mysql.de/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
Comment: For info see http://quantumlab.net/pine_privacy_guard/
-----END PGP SIGNATURE-----
|• MySQL 5.0.1-alpha-snapshot has been released||Lenz Grimmer||3 Aug|