|| ||Mads Martin Joergensen <mmj-AT-mysql.com>|
|| ||MySQL 5.1.16 Beta has been released|
|| ||Thu, 1 Mar 2007 19:41:42 +0100|
Dear MySQL users,
We are proud to present to you the MySQL Server 5.1.16 Beta
release, a new Beta version of the popular open source database.
Bear in mind that this is a beta release, and as any other pre-production
release, caution should be taken when installing on production level
systems or systems with critical data. For production level systems
using 5.0, pay attention to the product description of MySQL Enterprise
The MySQL 5.1.16 Beta release is now available in source and binary form
for a number of platforms from our download pages at
and mirror sites. Note that not all mirror sites may be up to date at
this point in time, so if you can't find this version on some mirror,
please try again later or choose another download site.
We welcome and appreciate your feedback, bug reports, bug fixes,
The following section lists the changes from version to version in the
MySQL source code through the latest released version of MySQL 5.1, the
MySQL 5.1.15-beta. It can also be viewed online at
Functionality added or changed:
* Incompatible change: TRUNCATE TABLE now requires the DROP
privilege rather than the DELETE privilege.
* NDB Cluster (Cluster APIs) / Incompatible change: The
AbortOption type is now a member of the NdbOperation class;
its values and behavior have also changed.
NdbTransaction::AbortOption can no longer be used, and
applications written against the NDB API may need to be
rewritten and recompiled to accomodate these changes.
See The NdbOperation::AbortOption Type
tion.html), for more information.
* NDB Cluster (Cluster APIs): A new
ndb_mgm_get_clusterlog_loglevel() function was added to the
For more information, see ndb_mgm_get_clusterlog_loglevel()
* NDB Cluster: Previously, when a data node failed more than 8
times in succession to start, this caused a forced shutdown of
the cluster. Now, when a data node fails to start 7
consecutive times, the node will not start again until it is
started with the --initial option, and a warning to this
effect is written to the error log.
* NDB Cluster: A number of new and more descriptive error
messages covering transporter errors were added.
* NDB Cluster: In the event that all cluster management and API
nodes are configured with ArbitrationRank=0, ndb_mgmd now
issues the following warning when starting: Cluster
configuration warning: Neither MGM nor API nodes are
configured with arbitrator, may cause complete cluster
shutdown in case of host failure.
* The localhost anonymous user account created during MySQL
installation on Windows now has no global privileges. Formerly
this account had all global privileges. For operations that
require global privileges, the root account can be used
instead. (Bug#24496: http://bugs.mysql.com/24496)
* In the INFORMATION_SCHEMA REFERENTIAL_CONSTRAINTS table, the
UNIQUE_CONSTRAINT_NAME column incorrectly named the referenced
table. Now it names the referenced constraint, and a new
column, REFERENCED_TABLE_NAME, names the referenced table.
* RAND() now allows non-constant initializers (such as a column
name) as its argument. In this case, the seed is initialized
with the value for each invocation of RAND(). (One implication
of this is that for equal argument values, RAND() will return
the same value each time.)
* The bundled yaSSL library was upgraded to version 1.5.8.
* CONNECTION is no longer treated as a reserved word.
* NDB Cluster: The InvalidUndoBufferSize error used the same
error code (763) as the IncompatibleVersions error.
InvalidUndoBufferSize now uses its own error code (779).
* NDB Cluster: Takeover for local checkpointing due to multiple
failures of master nodes was sometimes incorrect handled.
* NDB Cluster: The LockPagesInMemory parameter was not read
until after distributed communication had already started
between cluster nodes. When the value of this parameter was 1,
this could sometimes result in data node failure due to missed
heartbeats. (Bug#26454: http://bugs.mysql.com/26454)
* NDB Cluster: Under some circumstances, following the restart
of a management, all cluster data nodes would connect to it
normally, but some of them subsequently failed to log any
events to the management node.
* NDB Cluster: An error was produced when SHOW TABLE STATUS was
used on an NDB table that had no AUTO_INCREMENT column.
Note this improves on and supersedes an earlier fix that was made
for this issue in MySQL 5.1.12.
* NDB Cluster: When a node failed due to there being
insufficient disk space to perform a local checkpoint, there
was no indication that this was the source of the problem.
Such a condition now produces an appropriate error message.
* NDB Cluster (Cluster APIs): libndbclient.so was not versioned.
* NDB Cluster: The ndb_size.tmpl file (necessary for using the
ndb_size.pl script) was missing from binary distributions.
* NDB Cluster (Cluster APIs / Disk Data): A delete and a read
peformed in the same operation could cause one or more of the
cluster's data nodes to crash. This could occur when the
operation affected more than 5 columns concurrently, or when
one or more of the columns was of the VARCHAR type and was
stored on disk. (Bug#25794: http://bugs.mysql.com/25794)
* NDB Cluster (Replication): The error message Last_Errno:
4294967295, Error in Write_rows event now supplies a valid
error code. (Bug#19896: http://bugs.mysql.com/19896)
* NDB Cluster (Replication): Under some circumstances, the
binlog thread could shut down while the slave SQL thread was
still using it. (Bug#26015: http://bugs.mysql.com/26015,
* NDB Cluster: A query with an IN clause against an NDB table
employing explicit user-defined partitioning did not always
return all matching rows.
* A memory leak could cause problems during a node or cluster
shutdown or failure. (Bug#25997: http://bugs.mysql.com/25997)
* NDB Cluster: An appropriate error message was not provided
when there was insufficient REDO log file space for the
cluster to start. (Bug#25801: http://bugs.mysql.com/25801)
* NDB Cluster: An UPDATE using an IN clause on an NDB table on
which there was a trigger caused mysqld to crash.
* NDB Cluster: A memory allocation failure in the cluster
Subscription Manager could cause the cluster to crash.
* NDB Cluster: In the event that cluster backup parameters such
as BackupWriteSize were incorrectly set, no appropriate error
was issued to indicate that this was the case.
* If the duplicate key value was present in the table, INSERT
... ON DUPLICATE KEY UPDATE reported a row count indicating
that a record was updated, even when no record actually
changed due to the old and new values being the same. Now it
reports a row count of zero.
* Some UPDATE statements were slower than in previous versions
when the search key could not be converted to a valid value
for the type of the search column.
* The WITH CHECK OPTION clause for views was ignored for updates
of multiple-table views when the updates could not be
performed on fly and the rows to update had to be put into
temporary tables first.
* Using ORDER BY or GROUP BY could yield different results when
selecting from a view and selecting from the underlying table.
* Storing values specified as hexadecimal values 64 or more bits
long into BIT(64), BIGINT, or BIGINT UNSIGNED columns did not
raise any warning or error if the value was out of range.
* Inserting DEFAULT into a column with no default value could
result in garbage in the column. Now the same result occurs as
when inserting NULL into a NOT NULL column.
* The presence of ORDER BY in a view definition prevented the
MERGE algorithm from being used to resolve the view even if
nothing else in the definition required the TEMPTABLE
algorithm. (Bug#12122: http://bugs.mysql.com/12122)
* ISNULL(DATE(NULL)) and ISNULL(CAST(NULL AS DATE)) erroneously
returned false. (Bug#23938: http://bugs.mysql.com/23938)
* If a slave server closed its relay log (for example, due to an
error during log rotation), the I/O thread did not recognize
this and still tried to write to the log, causing a server
crash. (Bug#10798: http://bugs.mysql.com/10798)
* Using an INFORMATION_SCHEMA table with ORDER BY in a subquery
could cause a server crash.
* Collation for LEFT JOIN comparisons could be evaluated
incorrectly, leading to improper query results.
* For the IF() and COALESCE() function and CASE expressions,
large unsigned integer values could be mishandled and result
in warnings. (Bug#22026: http://bugs.mysql.com/22026)
* The number of setsockopt() calls performed for reads and
writes to the network socket was reduced to decrease system
call overhead. (Bug#22943: http://bugs.mysql.com/22943)
* A WHERE clause that used BETWEEN for DATETIME values could be
treated differently for a SELECT and a view defined as that
SELECT. (Bug#26124: http://bugs.mysql.com/26124)
* ORDER BY on DOUBLE values could change the set of rows
returned by a query. (Bug#19690: http://bugs.mysql.com/19690)
* LOAD DATA INFILE did not work with pipes.
* DISTINCT queries that were executed using a loose scan for an
InnoDB table that had been emptied caused a server crash.
* ALTER TABLE caused loss of CASCADE clauses for InnoDB tables.
* Type conversion errors during formation of index search
conditions were not correctly checked, leading to incorrect
query results. (Bug#22344: http://bugs.mysql.com/22344)
* Within a stored routine, accessing a declared routine variable
with PROCEDURE ANALYSE() caused a server crash.
* Use of already freed memory caused SSL connections to hang
forever. (Bug#19209: http://bugs.mysql.com/19209)
* mysql.server stop timed out too quickly (35 seconds) waiting
for the server to exit. Now it waits up to 15 minutes, to
ensure that the server exits.
* A yaSSL program named test was installed, causing conflicts
with the test system utility. It is no longer installed.
* perror crashed on some platforms due to failure to handle a
NULL pointer. (Bug#25344: http://bugs.mysql.com/25344)
* mysql_stmt_fetch() did an invalid memory deallocation when
used with the embedded server.
* mysql_kill() caused a server crash when used on an SSL
connection. (Bug#25203: http://bugs.mysql.com/25203)
* The readline library wrote to uninitialized memory, causing
mysql to crash. (Bug#19474: http://bugs.mysql.com/19474)
* yaSSL was sensitive to the presence of whitespace at the ends
of lines in PEM-encoded certificates, causing a server crash.
* The SEC_TO_TIME() and QUARTER() functions sometimes did not
handle NULL values correctly.
* The optimizer used a filesort rather than a const table read
in some cases when the latter was possible.
* With ONLY_FULL_GROUP_BY enables, the server was too strict:
Some expressions involving only aggregate values were rejected
as non-aggregate (for example, MAX(a) - MIN(a)).
* Indexes disabled with ALTER TABLE ... DISABLE KEYS could in
some cases be used by specifying FORCE INDEX.
* The arguments of the ENCODE() and the DECODE() functions were
not printed correctly, causing problems in the output of
EXPLAIN EXTENDED and in view definitions.
* An error in the name resolution of nested JOIN ... USING
constructs was corrected.
* A return value of -1 from user-defined handlers was not
handled well and could result in conflicts with server code.
* The server might fail to use an appropriate index for DELETE
when ORDER BY, LIMIT, and a non-restricting WHERE are present.
* Use of ON DUPLICATE KEY UPDATE defeated the usual restriction
against inserting into a join-based view unless only one of
the underlying tables is used.
* View definitions that used the ! operator were treated as
containing the NOT operator, which has a different precedence
and can produce different results.
* Some queries against INFORMATION_SCHEMA that used subqueries
failed. (Bug#23299: http://bugs.mysql.com/23299).
* For a UNIQUE index containing many NULL values, the optimizer
would prefer the index for col IS NULL conditions over other
more selective indexes.
* GROUP BY and DISTINCT did not group NULL values for columns
that have a UNIQUE index.
* ALTER TABLE ... ENABLE KEYS acquired a global lock, preventing
concurrent execution of other statements that use tables.
* For an InnoDB table with any ON DELETE trigger, TRUNCATE TABLE
mapped to DELETE and activated triggers. Now a fast truncation
occurs and triggers are not activated.
* For ALTER TABLE, using ORDER BY expression could cause a
server crash. Now the ORDER BY clause allows only column names
to be specified as sort criteria (which was the only
documented syntax, anyway).
* readline detection did not work correctly on NetBSD.
* The --with-readline option for configure does not work for
commercial source packages, but no error message was printed
to that effect. Now a message is printed.
* If an ORDER BY or GROUP BY list included a constant expression
being optimized away and, at the same time, containing
single-row subselects that return more that one row, no error
was reported. If a query requires sorting by expressions
containing single-row subselects that return more than one
row, execution of the query may cause a server crash.
* To enable installation of MySQL RPMs on Linux systems running
RHEL 4 (which includes SE-Linux) additional information was
provided to specify some actions that are allowed to the MySQL
binaries. (Bug#12676: http://bugs.mysql.com/12676)
* Queries that evaluate NULL IN (SELECT ... UNION SELECT ...)
could produce an incorrect result (FALSE instead of NULL).
* Within stored routines or prepared statements, inconsistent
results occurred with multiple use of INSERT ... SELECT ... ON
DUPLICATE KEY UPDATE when the ON DUPLICATE KEY UPDATE clause
erroneously tried to assign a value to a column mentioned only
in its SELECT part. (Bug#24491: http://bugs.mysql.com/24491)
* Expressions of the form (a, b) IN (SELECT a, MIN(b) FROM t
GROUP BY a) could produce incorrect results when column a of
table t contained NULL values while column b did not.
* Expressions of the form (a, b) IN (SELECT c, d ...) could
produce incorrect results if a, b, or both were NULL.
* An AFTER UPDATE trigger on an InnoDB table with a composite
primary key caused the server to crash.
* A query that contained an EXIST subquery with a UNION over
correlated and uncorrelated SELECT queries could cause the
server to crash. (Bug#25219: http://bugs.mysql.com/25219)
* A query with ORDER BY and GROUP BY clauses where the ORDER BY
clause had more elements than the GROUP BY clause caused a
memory overrun leading to a crash of the server.
* Certain joins using Range checked for each record in the query
execution plan could cause the server to crash.
* If a prepared statement accessed a view, access to the tables
listed in the query after that view was checked in the
security context of the view.
* A nested query on a partitioned table returned fewer records
than on the corresponding non-partitioned table, when the
subquery affected more than one partition.
* Passing a NULL value to a user-defined function from within a
stored procedure crashes the server.
Mads Martin Joergensen, Release Manager
MySQL AB, Odense, Denmark -- www.mysql.com
to post comments)