Neohapsis is currently accepting applications for employment. For more information, please visit our website www.neohapsis.com or email email@example.com
From: Joerg Bruehe (joergmysql.com)
Date: Wed Aug 29 2007 - 09:56:24 CDT
Dear MySQL users,
We are proud to present to you the MySQL Server 5.1.21-beta
release, a new beta version of the popular open source database.
Bear in mind that this is a beta release, and as with 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, we would like to direct your attention to the
product description of MySQL Enterprise at:
The MySQL 5.1.21-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.
Please also note that some of our mirrors are currently experiencing
problems that may result in serving corrupted files. We are working with
the mirror maintainers to resolve this.
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 since the latest released version of MySQL 5.1, the
MySQL 5.1.20-beta release. It can also be viewed online at
Functionality added or changed:
* Incompatible change: In MySQL 5.1.6, when log tables were
implemented, the default log destination for the general query
and slow query log was TABLE. This default has been changed to
FILE, which is compatible with MySQL 5.0, but incompatible
with earlier releases of MySQL 5.1 from 5.1.6 to 5.1.20. If
you are upgrading from MySQL 5.0 to this release, no logging
option changes should be necessary. However, if you are
upgrading from 5.1.6 through 5.1.20 to this release and were
using TABLE logging, use the --log-output=TABLE option
explicitly to preserve your server's table-logging behavior.
* The --syslog option that was introduced in 5.1.20 for
mysqld_safe (to send error output to syslog) did not work
correctly: Error output was buffered and not logged
immediately. This has been corrected. In addition, some
feature changes were made:
+ Important: The default mysqld_safe logging behavior now
is --skip-syslog rather than --syslog, which is
compatible with the default behavior of writing an error
log file for releases prior to 5.1.20.
+ A new option, --syslog-tag=tag, modifies the default tags
written by mysqld_safe and mysqld to syslog to be
mysqld_safe-tag and mysqld-tag rather than the default
tags of mysqld_safe and mysqld.
* Several programs now accept --debug-check and --debug-info
options: mysql, mysqladmin, mysqlbinlog, mysqlcheck,
mysqldump, mysqlimport, mysqlshow, mysqlslap, mysqltest,
mysql_upgrade. (Note: mysql and mysqltest already accepted
--debug-info.) --debug-check prints debugging information at
program exit. --debug-info is similar but also prints memory
and CPU usage statistics. This patch also corrects a problem
for mysql that --debug-info did not display statistics at exit
time. (Bug#30127: http://bugs.mysql.com/30127)
* Transaction support in the FEDERATED storage engine has been
disabled due to issues with multiple active transactions and
sessions on the same FEDERATED table.
* Previously, prepared statements processed using PREPARE and
EXECUTE were not subject to caching in the query cache if they
contained any ? parameter markers. This limitation has been
lifted. (Bug#29318: http://bugs.mysql.com/29318)
* Replication between master and slaves now supports different
column numbers within a table on both master and slave. The
rules for replication where the table definitions are
different has also changed. This supercedes the functionality
for replication from the master table to a slave table with
more columns that was added in MySQL 5.1.12. For more
information, see Section 18.104.22.168, "Replication with Fewer
Columns on the Slave."
* The SQL thread on a slave now is always allowed to enter
InnoDB even if this would exceed the limit imposed by the
innodb_thread_concurrency system variable. In cases of high
load on the slave server (when innodb_thread_concurrency is
reached), this change helps the slave stay more up to date
with the master; in the previous behavior, the SQL thread was
competing for resources with all client threads active on the
slave server. (Bug#25078: http://bugs.mysql.com/25078)
* Incompatible change: Several issues were identified for stored
programs (stored functions and procedures, triggers, and
events) and views containing non-ASCII symbols. These issues
involved conversion errors due to incomplete character set
information when translating these objects to and from stored
format, such as:
+ Parsing the original object definition so that it can be
+ Compiling the stored definition into executable form when
the object is invoked.
+ Retrieval of object definitions from INFORMATION_SCHEMA
+ Displaying the object definition in SHOW statements. This
issue also affected mysqldump, which uses SHOW.
The fix for the problems is to store character set information
from the object creation context so that this information is
available when the object needs to be used later. The context
includes the client character set, the connection character
set and collation, and the collation of the database with
which the object is associated.
As a result of the patch, several tables have new columns:
+ In the mysql database, the proc and event tables now have
these columns: character_set_client,
collation_connection, db_collation, body_utf8.
+ In INFORMATION_SCHEMA, the VIEWS table now has these
columns: CHARACTER_SET_CLIENT, COLLATION_CONNECTION. The
ROUTINES, TRIGGERS, and EVENT tables now have these
columns: CHARACTER_SET_CLIENT, COLLATION_CONNECTION,
These columns store the session values of the
character_set_client and collation_connection system
variables, and the collation of the database with which the
object is associated. The values are those in effect at object
creation time. (The saved database collation is not the value
of the collation_database system variable, which applies to
the default database; the database that contains the object is
not necessarily the default database.)
Several SHOW statements now display additional columns
corresponding to the new table columns. These statements are:
SHOW CREATE EVENT, SHOW CREATE FUNCTION, SHOW CREATE
PROCEDURE, SHOW CREATE VIEW, SHOW EVENTS, SHOW FUNCTION
STATUS, SHOW PROCEDURE STATUS, SHOW TRIGGERS.
A new statement, SHOW CREATE TRIGGER is introduced and is used
by mysqldump for producing CREATE TRIGGER statements.
Subsequent to the patch just described, it was discovered that
the patch broke mysql_upgrade; this has been corrected.
Important: To avoid warnings from the server about the use of
old definitions from any release prior to 5.1.21, you should
dump stored programs and views with mysqldump after upgrading
to 5.1.21, and then reload them to recreate them with new
definitions. Invoke mysqldump with a --default-character-set
option that names the non-ASCII character set that was used
for the definitions when the objects were originally defined.
* NDB Cluster: The server would not compile with NDB support on
AIX 5.2. (Bug#10776: http://bugs.mysql.com/10776)
* NDB Cluster (Replication): Inconsistencies could occur between
the master and the slave when replicating Disk Data tables.
* NDB Cluster (Replication): mysqld would segfault on startup
when the NDB storage engine was enabled and the default
character set was a strictly multi-byte character set such as
UCS2. (Bug#27404: http://bugs.mysql.com/27404)
This issue does not apply to character sets that can contain
single-byte characters in addition to multi-byte characters
such as UTF-8.
Additional issues remain with regard to the use of multi-byte
character sets in MySQL Cluster Replication; see Section
16.10.3, "Known Issues in MySQL Cluster Replication," for more
* NDB Cluster: Warnings and errors generated by
were sent to stdout rather than stderr.
* NDB Cluster (Disk Data): Performing Disk Data schema
operations during a node restart could cause forced shutdowns
of other data nodes. (Bug#29501: http://bugs.mysql.com/29501)
* NDB Cluster (Disk Data): Disk data meta-information that
existed in ndbd might not be visible to mysqld.
* NDB Cluster (Disk Data): The number of free extents was
incorrectly reported for some tablespaces.
* NDB Cluster (Cluster Replication): When executing a statement
where binlog_format=statement, the result of the statement was
logged both as a statement and as rows.
* NDB Cluster: Replica redo logs were inconsistently handled
during a system restart.
* NDB Cluster: When restarting a data node, queries could hang
during that node's start phase 5, and only continue once the
node entered phase 6. (Bug#29364: http://bugs.mysql.com/29364)
* NDB Cluster: When a node failed to respond to a COPY_GCI
signal as part of a global checkpoint, the master node was
killed instead instead of the node that actually failed.
* NDB Cluster: An invalid comparison made during REDO validation
that could lead to an Error while reading REDO log condition.
* NDB Cluster: The wrong data pages were sometimes invalidated
following a global checkpoint.
* NDB Cluster: If at least 2 files were involved in REDO
invalidation, then file 0 of page 0 was not updated and so
pointed to an invalid part of the redo log.
* The server acquired a global mutex for temporary tables,
although such tables are thread-specific. This affected
performance by blocking other threads.
* INSERT DELAYED statements on a master server are replicated as
non-DELAYED inserts on slaves (which is normal, to preserve
serialization), but the inserts on the slave did not use
concurrent inserts. Now INSERT DELAYED on a slave is converted
to a concurrent insert when possible, and to a normal insert
otherwise. (Bug#29152: http://bugs.mysql.com/29152)
* If one thread was performing concurrent inserts, other threads
reading from the same table using equality key searches could
see the index values for new rows before the data values had
been written, leading to reports of table corruption.
* On Windows, client libraries lacked symbols required for
linking. (Bug#30118: http://bugs.mysql.com/30118)
* On Windows, the CMake build process did not produce the
embedded server library or related binaries.
* SESSION_USER() returned garbage data (rather than the correct
value of the empty string) when executed by a slave SQL
thread. (Bug#29878: http://bugs.mysql.com/29878)
* For the SHOW TABLE TYPES statement, the server sent incorrect
output to clients, possibly causing them to crash.
* Coercion of ASCII values to character sets that are a superset
of ASCII sometimes was not done, resulting in illegal mix of
collations errors. These cases now are resolved using
repertoire, a new string expression attribute (see Section
9.6, "String Repertoire").
* REPAIR TABLE ... USE_FRM could corrupt tables.
* FEDERATED tables had an artificially low maximum of key
length. (Bug#26909: http://bugs.mysql.com/26909)
* In some cases, INSERT INTO ... SELECT ... GROUP BY could
insert rows even if the SELECT by itself produced an empty
result. (Bug#29717: http://bugs.mysql.com/29717)
* In a stored function or trigger, when InnoDB detected
deadlock, it attempted rollback and displayed an incorrect
error message (Explicit or implicit commit is not allowed in
stored function or trigger). Now InnoDB returns an error under
these conditions and does not attempt rollback. Rollback is
handled outside of InnoDB above the function/trigger level.
* --myisam-recover="" (empty option value) did not disable
MyISAM recovery. (Bug#29856: http://bugs.mysql.com/29856)
* Very long prepared statements in stored procedures could cause
a server crash. (Bug#29856: http://bugs.mysql.com/29856)
* Index creation could fail due to truncation of key values to
the maximum key length rather than to a mulitiple of the
maximum character length.
* mysql_setpermission tried to grant global-only privileges at
the database level. (Bug#14618: http://bugs.mysql.com/14618)
* An error that happened inside INSERT, UPDATE, or DELETE
statements performed from within a stored function or trigger
could cause inconsistency between master and slave servers.
* An assertion failure occurred within yaSSL for very long keys.
* Repeatedly accessing a view in a stored procedure (for
example, in a loop) caused a small amount of memory to be
allocated per access. Although this memory is deallocated on
disconnect, it could be a problem for a long running stored
procedures that make repeated access of views.
* The IS_UPDATABLE column in the INFORMATION_SCHEMA.VIEWS table
was not always set correctly.
* A slave running with --log-slave-updates would fail to write
INSERT DELAY IGNORE statements to its binary log, resulting in
different binary log contents on the master and slave.
* InnoDB could crash if the server was shut down while
innodb_table_monitor was running.
* If MySQL/InnoDB crashed very quickly after starting up, it
would not force a checkpoint. In this case, InnoDB would skip
crash recovery at next startup, and the database would become
corrupt. Fix: If the redo log scan at InnoDB startup goes past
the last checkpoint, force crash recovery.
* Certain statements with unions, subqueries, and joins could
result in huge memory consumption.
* SHOW statements were being written to the slow query log that
should not have been. (Bug#30000: http://bugs.mysql.com/30000)
* Use of local variables with non-ASCII names in stored
procedures crashed the server.
* INSERT ... VALUES(CONNECTION_ID(), ...) statements were
written to the binary log in such a way that they could not be
properly restored. (Bug#29928: http://bugs.mysql.com/29928)
* Prepared statements containing CONNECTION_ID() could be
written improperly to the binary log.
* mysql_install_db could fail to find script files that it
needs. (Bug#28585: http://bugs.mysql.com/28585)
* On Windows, executables did not include Vista manifests.
* A maximum of 4TB InnoDB free space was reported by SHOW TABLE
STATUS, which is incorrect on systems with more than 4TB
space. (Bug#29097: http://bugs.mysql.com/29097)
* On Windows, the server used 10MB of memory for each connection
thread, resulting in memory exhaustion. Now each thread uses
1MB. (Bug#20815: http://bugs.mysql.com/20815)
* Dropping a temporary InnoDB table that had been locked with
LOCK TABLES caused a server crash.
* Log table locking was redesigned, eliminating several
+ Truncating mysql.slow_log in a stored procedure after use
of a cursor caused the thread to lock.
+ Flushing a log table resulted in warnings.
+ The server would hang when performing concurrent ALTER
TABLE or TRUNCATE TABLE statements against the log
tables. (Bug#25422: http://bugs.mysql.com/25422)
+ Changing the value of the general_log system variable
while a global read lock was in place resulted in
deadlock. (Bug#29129: http://bugs.mysql.com/29129)
* LOCK TABLES did not pre-lock tables used in triggers of the
locked tables. Unexpected locking behavior and statement
failures similar to failed: 1100: Table 'xx' was not locked
with LOCK TABLES could result.
* Creating an event to be executed at a time close to the end of
the allowed range (2038-01-19 03:14:07 UTC) would cause the
server to crash. (Bug#28641: http://bugs.mysql.com/28641)
* On Windows, Instance Manager would crash if an instance object
failed to initialize during startup. This could happen if an
incorrect mysqld path was supplied in the configuration file.
* Instance Manager had a race condition when it received a
shutdown request while a guarded mysqld instance was starting
such that it could fail to stop the mysqld instance.
* Fast ALTER TABLE (that works without rebuilding the table)
acquired duplicate locks in the storage engine. In MyISAM, if
ALTER TABLE was issued under LOCK TABLE, it caused all data
inserted after LOCK TABLE to disappear.
* After the first read of a TEMPORARY table, CHECK TABLE could
report the table as being corrupt.
* The server was blocked from opening other tables while the
FEDERATED engine was attempting to open a remote table. Now
the server does not check the correctness of a FEDERATED table
at CREATE TABLE time, but waits until the table actually is
accessed. (Bug#25679: http://bugs.mysql.com/25679)
* On Mac OS X, shared-library installation pathnames were
incorrect. (Bug#28544: http://bugs.mysql.com/28544)
* For MyISAM tables on Windows, INSERT, DELETE, or UPDATE
followed by ALTER TABLE within LOCK TABLES could cause table
corruption. (Bug#29957: http://bugs.mysql.com/29957)
* When determining which transaction to kill after deadlock has
been detected, InnoDB now adds the number of locks to a
transaction's weight, and avoids killing transactions that
mave modified non-transactional tables. This should reduce the
likelihood of killing long-running transactions containing
SELECT ... FOR UPDATE or INSERT/REPLACE INTO ... SELECT
statements, and of causing partial updates if the target is a
MyISAM table. (Bug#21293: http://bugs.mysql.com/21293)
* When using a FEDERATED table, the value of last_insert_id()
would not correctly update the C API interface, which would
affect the autogenerated ID returned both through the C API
and the MySQL protocol, affecting Connectors that used the
protocol and/or C API.
* Optimization of queries with DETERMINISTIC stored functions in
the WHERE clause was ineffective: A sequential scan was always
used. (Bug#29338: http://bugs.mysql.com/29338)
* SQL_BIG_RESULT had no effect for CREATE TABLE ... SELECT
SQL_BIG_RESULT ... statements.
* For InnoDB tables, MySQL unnecessarily sorted records in
certain cases when the records were retrieved by InnoDB in the
proper order already. (Bug#28591: http://bugs.mysql.com/28591)
* EXPLAIN produced Impossible where for statements of the form
SELECT ... FROM t WHERE c=0, where c was an ENUM column
defined as a primary key.
* On Windows, ALTER TABLE hung if records were locked in share
mode by a long-running transaction.
* A field packet with NULL fields caused a libmysqlclient crash.
* A byte-order issue in writing a spatial index to disk caused
bad index files on some systems.
* mysqldump produced output that incorrectly discarded the
NO_AUTO_VALUE_ON_ZERO value of the SQL_MODE variable after
dumping triggers. (Bug#29788: http://bugs.mysql.com/29788)
* Adding DISTINCT could cause incorrect rows to appear in a
query result. (Bug#29911: http://bugs.mysql.com/29911)
* Killing an INSERT DELAYED thread caused a server crash.
* For updates to InnoDB tables, a TIMESTAMP column with the ON
UPDATE CURRENT_TIMESTAMP attribute could be updated even when
no values actually changed.
* The special "zero" ENUM value was coerced to the normal empty
string ENUM value during a column-to-column copy. This
affected CREATE ... SELECT statements and SELECT statements
with aggregate functions on ENUM columns in the GROUP BY
clause. (Bug#29360: http://bugs.mysql.com/29360)
* Conversion of ASCII DEL (0x7F) to Unicode incorrectly resulted
in QUESTION MARK (0x3F) rather than DEL.
* A left join between two views could produce incorrect results.
* For MEMORY tables, the index_merge union access method could
return incorrect results.
* If query execution involved a temporary table, GROUP_CONCAT()
could return a result with an incorrect character set.
* Slave servers could incorrectly interpret an out-of-memory
error from the master and reconnect using the wrong binary log
position. (Bug#24192: http://bugs.mysql.com/24192)
* Comparison of TIME values using the BETWEEN operator led to
string comparison, producing incorrect results in some cases.
Now the values are compared as integers.
* An incorrect result was returned when comparing string values
that were converted to TIME values with CAST().
* If InnoDB reached its limit on the number of concurrent
transactions (1023), it wrote a descriptive message to the
error log but returned a misleading error message to the
client, or an assertion failure occurred.
* On Windows, the mysql client died if the user entered a
statement and Return after entering Control-C.
* For the general query log, logging of prepared statements
executed via the C API differed from logging of prepared
statements performed with PREPARE and EXECUTE. Logging for the
latter was missing the Prepare and Execute lines.
* Under heavy load with a large query cache, invalidating part
of the cache could cause the server to freeze (that is, to be
unable to service other operations until the invalidation was
complete). (Bug#21074: http://bugs.mysql.com/21074)
* If an operation had an InnoDB table, and two triggers, AFTER
UPDATE and AFTER INSERT, competing for different resources
(such as two distinct MyISAM tables), the triggers were unable
to execute concurrently. In addition, INSERT and UPDATE
statements for the InnoDB table were unable to run
concurrently. (Bug#26141: http://bugs.mysql.com/26141)
* On 64-bit platforms, the filesort code (for queries with GROUP
BY or ORDER BY) could crash due to an incorrect pointer size.
* Using the DATE() function in a WHERE clause did not return any
records after encountering NULL. However, using TRIM or CAST
produced the correct results.
* Using the --skip-add-drop-table option with mysqldump
generated incorrect SQL if the database included any views.
The recreation of views requires the creation and removal of
temporary tables. This option suppressed the removal of those
temporary tables. The same applied to --compact since this
option also invokes --skip-add-drop-table.
* A race condition in the interaction between MyISAM and the
query cache code caused the query cache not to invalidate
itself for concurrently inserted data.
* The full-text parser could enter an infinite loop if it
encountered an illegal multi-byte sequence or a sequence that
has no mapping to Unicode.
* Failure to consider collation when comparing space characters
could lead to incorrect index entry order, making it
impossible to find some index values.
* Several InnoDB assertion failures were corrected.
* InnoDB displayed an incorrect error message when a CREATE
TABLE statement exceeded the InnoDB maximum allowable row
size. (Bug#21101: http://bugs.mysql.com/21101)
* InnoDB produced an unnecessary (and harmless) warning: InnoDB:
Error: trying to declare trx to enter InnoDB, but InnoDB: it
already is declared. (Bug#20090: http://bugs.mysql.com/20090)
* Backup software can cause ERROR_SHARING_VIOLATION or
ERROR_LOCK_VIOLATION conditions during file operations. InnoDB
now retries forever until the condition goes away.
* In strict SQL mode, errors silently stopped the SQL thread
even for errors named using the --slave-skip-errors option.
* MyISAM corruption could occur with the cp932_japanese_ci
collation for the cp932 character set due to incorrect
comparison for trailing space.
* Searching a FULLTEXT index for a word with the boolean mode
truncation operator could cause an infinite loop.
* CHECK TABLE could erroneously report table corruption for a
CSV table if multiple threads were modifying the table at the
same time. (Bug#29253: http://bugs.mysql.com/29253)
* Clients using SSL could hang the server.
* Single-row inserts could report a row count greater than one.
* For a table with a DATE column date_col such that selecting
rows with WHERE date_col = 'date_val 00:00:00' yielded a
non-empty result, adding GROUP BY date_col caused the result
to be empty. (Bug#29729: http://bugs.mysql.com/29729)
* If a stored procedure was created and invoked prior to
selecting a default database with USE, a No database selected
error occurred. (Bug#28551: http://bugs.mysql.com/28551)
* Indexing column prefixes in InnoDB tables could cause table
corruption. (Bug#28138: http://bugs.mysql.com/28138)
* SHOW INNODB STATUS caused an assertion failure under high
load. (Bug#22819: http://bugs.mysql.com/22819)
* If a slave timed out while registering with the master to
which it was connecting, auto-reconnect failed thereafter.
* For the embedded server, the mysql_stmt_store_result() C API
function caused a memory leak for empty result sets.
* mysql-stress-test.pl and mysqld_multi.server.sh were missing
from some binary distributions.
* SELECT ... INTO OUTFILE followed by LOAD DATA could result in
garbled characters when the FIELDS ENCLOSED BY clause named a
delimiter of '0', 'b', 'n', 'r', 't', 'N', or 'Z' due to an
interaction of character encoding and doubling for data values
containing the enclosed-by character.
* A duplicate-key error message could display an incorrect key
value when not all columns of the key were used to select rows
for update. (Bug#28158: http://bugs.mysql.com/28158)
* For some event-creation problems, the server displayed
messages that implied the problems were errors when they were
only warnings. (Bug#27406: http://bugs.mysql.com/27406)
* Error returns from the time() system call were ignored.
* ALTER DATABASE did not require at least one option.
* Creation of a legal stored procedure could fail if no default
database had been selected.
* mysqld_safe produced error messages and did not create the
error log file under some circumstances.
* The thread ID was not reset properly after execution of
mysql_change_user(), which could cause replication failure
when replicating temporary tables.
* The FEDERATED storage engine failed silently for INSERT ... ON
DUPLICATE KEY UPDATE if a duplicate key violation occurred.
FEDERATED does not support ON DUPLICATE KEY UPDATE, so now it
correctly returns an ER_DUP_KEY error if a duplicate key
violation occurs. (Bug#25511: http://bugs.mysql.com/25511)
* For a multiple-row insert into a FEDERATED table that refers
to a remote transactional table, if the insert failed for a
row due to constraint failure, the remote table would contain
a partial commit (the rows preceding the failed one) instead
of rolling back the statement completely. This occurred
because the rows were treated as individual inserts.
Now FEDERATED performs bulk-insert handling such that multiple
rows are sent to the remote table in a batch. This provides a
performance improvement and enables the remote table to
perform statement rollback properly should an error occur.
This capability has the following limitations:
+ The size of the insert cannot exceed the maximum packet
size between servers. If the insert exceeds this size, it
is broken into multiple packets and the rollback problem
+ Bulk-insert handling does not occur for INSERT ... ON
DUPLICATE KEY UPDATE.
* ALTER VIEW is not supported as a prepared statement but was
not being rejected. ALTER VIEW is now prohibited as a prepared
statement or when called within stored routines.
* Calling mysql_options() after mysql_real_connect() could cause
clients to crash. (Bug#29247: http://bugs.mysql.com/29247)
* If an ENUM column contained '' as one of its members
(represented with numeric value greater than 0), and the
column contained error values (represented as 0 and displayed
as ''), using ALTER TABLE to modify the column definition
caused the 0 values to be given the numeric value of the
non-zero '' member. (Bug#29251: http://bugs.mysql.com/29251)
* Aggregations in subqueries that refer to outer query columns
were not always correctly referenced to the proper outer
query. (Bug#27333: http://bugs.mysql.com/27333)
* Use of SHOW BINLOG EVENTS for a non-existent log file followed
by PURGE MASTER LOGS caused a server crash.
* A number of unsupported constructs --- including prohibited
constructs, the UCASE() function, and nested function calls
--- were permitted in partitioning expressions.
* SHOW BINLOG EVENTS displayed incorrect values of End_log_pos
for events associated with transactional storage engines.
* mysqldump created a stray file when a given a too-long
filename argument. (Bug#29361: http://bugs.mysql.com/29361)
* The semantics of BIGINT depended on platform-specific
characteristics. (Bug#29079: http://bugs.mysql.com/29079)
* mysqld failed to exit during shutdown.
* Inserting a negative number into a CSV table could corrupt it.
* Deleting from a CSV table could corrupt it.
* For a statement of the form CREATE t1 SELECT integer_constant,
the server created the column using the DECIMAL data type for
large negative values that are within the range of BIGINT.
* Runtime changes to the log_queries_not_using_indexes system
variable were ignored.
* Under ActiveState Perl, mysql-test-run.pl would not run.
* Under ActiveState Perl, mysql-test-run.pl could kill itself
when attempting to kill other processes.
* Assertion failure could occur for grouping queries that
employed DECIMAL user variables with assignments to them.
* For CAST(expr AS DECIMAL(M,D)), the limits of 65 and 30 on the
precision (M) and scale (D) were not enforced.
* Corrupt data resulted from use of SELECT ... INTO OUTFILE
'file_name' FIELDS ENCLOSED BY 'c', where c is a digit or
minus sign, followed by LOAD DATA INFILE 'file_name' FIELDS
ENCLOSED BY 'c'. (Bug#29442: http://bugs.mysql.com/29442)
* AsText() could fail with a buffer overrun.
* Inserting into InnoDB tables and executing RESET MASTER in
multiple threads cause assertion failure in debug server
binaries. (Bug#28983: http://bugs.mysql.com/28983)
* The index merge union access algorithm could produce incorrect
results with InnoDB tables. The problem could also occur for
queries that used DISTINCT.
* Results for a select query that aliases the column names
against a view could duplicate one column while omitting
another. This bug could occur for a query over a
multiple-table view that includes an ORDER BY clause in its
definition. (Bug#29392: http://bugs.mysql.com/29392)
* gcov coverage-testing information was not written if the
server crashed. (Bug#29543: http://bugs.mysql.com/29543)
* FULLTEXT indexes could be corrupted by certain gbk characters.
* REPLACE, INSERT IGNORE, and UPDATE IGNORE did not work for
FEDERATED tables. (Bug#29019: http://bugs.mysql.com/29019)
* CHECK TABLE for ARCHIVE tables could falsely report table
corruption or cause a server crash.
* SELECT ... FOR UPDATE with partitioned tables could cause a
server crash. (Bug#28026: http://bugs.mysql.com/28026)
* Updates to rows in a partitioned table could update the wrong
column. (Bug#26827: http://bugs.mysql.com/26827)
* Updates to a CSV table could cause a server crash or update
the table with incorrect values.
* Dropping a user-defined function could cause a server crash if
the function was still in use by another thread.
* The server crashed when the size of an ARCHIVE table grew
larger than 2GB. (Bug#15787: http://bugs.mysql.com/15787)
* An assertion failure occurred if a query contained a
conjunctive predicate of the form view_column = constant in
the WHERE clause and the GROUP BY clause contained a reference
to a different view column. The fix also enables application
of an optimization that was being skipped if a query contained
a conjunctive predicate of the form view_column = constant in
the WHERE clause and the GROUP BY clause contained a reference
to the same view column.
* Replication of partitioned tables using the InnoDB storage
engine failed with binlog-format=ROW or binlog-format=MIXED.
* If a storage engine has its own logging capability, then any
statement using both this engine and some other engine not
having its own logging could not be correctly logged, due to
the fact that entries from one engine could be logged before
entries from the other engine were. This did not generate any
error messages when it occurred.
Now, if multiple storage engines are used in a statement and
at least one of them has its own logging capability, then an
error message is generated and the statement is not executed.
Currently, the only storage engine to have its own logging
capability is NDBCLUSTER.
* Using the READ COMMITTED transaction isolation level caused
mixed and statement-based replication to fail.
* The server returned data from SHOW CREATE TABLE statement or a
SELECT statement on an INFORMATION_SCHEMA table using the
* Mixing binary and utf8 columns in a union caused field lengths
to be calculated incorrectly, resulting in truncation.
* LOCK TABLES was not atomic when more than one InnoDB tables
were locked. (Bug#29154: http://bugs.mysql.com/29154)
* Queries that performed a lookup into a BINARY index containing
key values ending with spaces caused an assertion failure for
debug builds and incorrect results for non-debug builds.
* Selecting a column not present in the selected-from table
caused an extra error to be produced by SHOW ERRORS.
* If an INSERT INTO ... SELECT statement inserted into the same
table that the SELECT retrieved from, and the SELECT included
ORDER BY and LIMIT clauses, different data was inserted than
the data produced by the SELECT executed by itself.
* On 64-bit Windows systems, the Config Wizard failed to
complete the setup because 64-bit Windows does not resolve
dynamic linking of the 64-bit libmysql.dll to a 32-bit
application like the Config Wizard.
* For a join with GROUP BY and/or ORDER BY and a view reference
in the FROM list, the query metadata erroneously showed empty
table aliases and database names for the view columns.
* For a ucs2 column, GROUP_CONCAT() did not convert separators
to the result character set before inserting them, producing a
result containing a mixture of two different character sets.
* Index-based range reads could fail for comparisons that
involved contraction characters (such as ch in Czech or ll in
Spanish). (Bug#27345: http://bugs.mysql.com/27345)
* The Windows implementation of pthread_join() was incorrect and
could cause crashes. (Bug#26564: http://bugs.mysql.com/26564)
* Sort order of the collation wasn't used when comparing
trailing spaces. This could lead to incorrect comparison
results, incorrectly created indexes, or incorrect result set
order for queries that include an ORDER BY clause.
* Many threads accessing a CSV table simultaneously could cause
* mysqlbinlog --hexdump generated incorrect output due to
omission of the `#' comment character for some comment lines.
* Index creation could corrupt the table definition in the .frm
file: 1) A table with the maximum number of key segments and
maximum length key name would have a corrupted .frm file, due
to incorrect calculation of the total key length. 2) MyISAM
would reject a table with the maximum number of keys and the
maximum number of key segments in all keys. (It would allow
one less than this total maximum.) Now MyISAM accepts a table
defined with the maximum.
* Dropping the definer of an active event caused the server to
crash. (Bug#28924: http://bugs.mysql.com/28924)
* Executing ALTER EVENT on an event whose definer's event
creation privileges had been revoked cause the server to
crash. (Bug#28873: http://bugs.mysql.com/28873)
* Creating an event using ON SCHEDULE AT CURRENT_TIMESTAMP +
INTERVAL ... could in some cases cause mysqld to crash.
* Under some circumstances, a SELECT ... FROM mysql.event could
cause the server to crash.
* Some functions when used in partitioning expressions could
cause mysqld to crash.
* The SUBSTRING() function returned the the entire string
instead of an empty string when it was called from a stored
procedure and when the length parameter was specified by a
variable with the value `0'.
* The LOCATE() function returned NULL if any of its arguments
evaluated to NULL. Likewise, the predicate, LOCATE(str,NULL)
IS NULL, erroneously evaluated to FALSE.
* A query with DISTINCT in the select list to which the
loose-scan optimization for grouping queries was applied
returned an incorrect result set when the query was used with
the SQL_BIG_RESULT option.
* A network structure was initialized incorrectly, leading to
embedded server crashes.
* Fixed a case of unsafe aliasing in the source that caused a
client library crash when compiled with gcc 4 at high
optimization levels. (Bug#27383: http://bugs.mysql.com/27383)
Joerg Bruehe, Senior Production Engineer
MySQL AB, www.mysql.com
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql