コンパイル時の不手際のため、MySQL 5.1.12のバイナリ配布にはNDBクラスタやパーティショニングは含まれませんでした。ご不便をお掛けし恐縮です。バージョン5.1.14.へ更新してください。ソースからコンパイルする場合には、--with-ndbcluster
、--with-partition
オプションとともにconfigureを実行して下さい。
This is a new Beta development release, fixing recently discovered bugs.
この項目は前回のMySQL公式リリース以降に適用されたすべての変更とバグ修正を説明します。更に頻繁でありご使用のバージョンと機能に合わせた更新情報を希望される場合には、MySQLエンタープライズ(商用版MySQL)への登録をお考えください。詳細は、http://www.mysql.com/products/enterpriseをご覧下さい。
Functionality added or changed:
Incompatible change: Support
for the BerkeleyDB (BDB
) engine has been
dropped from this release. Any existing tables that are in BDB
format will not be readable from within MySQL from 5.1.12 or
newer. You should convert your tables to another storage
engine before upgrading to 5.1.12.
Incompatible change: The
namespace for scheduled events has changed, such that events
are no longer unique to individual users. This also means that
a user with the EVENT
privilege on a given
database can now view, alter, or drop any events defined on
that database.
If you used scheduled events in an earlier MySQL 5.1 release, you should rename any of them having the same name and defined on the same database but belonging to different users — so that all events in a given database have unique names — before upgrading to 5.1.12 (or newer).
For additional information, see 項19.5. 「The Event Scheduler and MySQL Privileges」.
Incompatible change: The
permitted values for and behaviour of the
event_scheduler
system variable have
changed. Permitted values are now ON
,
OFF
, and DISABLED
, with
OFF
being the default. It is not possible
to change its value to or from DISABLED
while the server is running.
For details, see 項19.1. 「Event Scheduler Overview」.
Incompatible change: The
plugin interface has changed: The
st_mysql_plugin
structure has a new
license
member to indicate the license
type. (The allowable values are defined in
mysql/plugin.h
.) This change is not
backward compatible, so the API version
(MYSQL_PLUGIN_INTERFACE_VERSION
) has
changed. For additional information, see
項25.2.5. 「Writing Plugins」.
Incompatible change: The full-text parser plugin interface has changed in two ways:
The MYSQL_FTPARSER_PARAM
structure has
a new flags
member. This is zero if
there are no special flags, or
MYSQL_FTFLAGS_NEED_COPY
, which means
that mysql_add_word()
must save a copy
of the word (that is, it cannot use a pointer to the word
because the word is in a buffer that will be overwritten.)
This flag might be set or reset by MySQL before calling
the parser plugin, by the parser plugin itself, or by the
mysql_parse()
function.
The mysql_parse()
and
mysql_add_word()
functions now take a
MYSQL_FTPARSER_PARAM
as their first
argument, not a
MYSQL_FTPARSER_PARAM::mysql_ftparam
as
before.
These changes are not backward compatible, so the API version
(MYSQL_FTPARSER_INTERFACE_VERSION
) has
changed. For additional information, see
項25.2.5. 「Writing Plugins」.
Incompatible change: In the
INFORMATION_SCHEMA.EVENTS
table, the
EVENT_DEFINITION
column now contains the
SQL executed by a scheduled event.
The EVENT_BODY
column now contains the
language used for the statement or statements shown in
EVENT_DEFINITION
. In MySQL 5.1, the value
shown in EVENT_BODY
is always
SQL
.
These changes were made to bring this table into line with the
INFORMATION_SCHEMA.ROUTINES
table, and that
table's ROUTINE_BODY
and
ROUTINE_DEFINITION
columns. (Bug#16992)
Incompatible change: MySQL
Cluster node and system restarts formerly required that all
fragments use the same local checkpoint (LCP); beginning with
this version, it is now possible for different fragments to
use different LCPs during restarts. This means that data node
filesystems must be rebuilt as part of any upgrade to this
version by restarting all data nodes with the
--initial
option. (Bug#21271, Bug#21478)
See 項14.5.2. 「クラスタのアップグレードおよびダウングレードの互換性」, and related sections of the Manual before upgrading a MySQL Cluster to version 5.1.12 or later.
Incompatible change: A number of MySQL constructs are now prohibited in partitioning expressions, beginning with this release. These include:
A number of MySQL functions.
You can find a complete list of these functions under Partitioning Limitation.
The bit operators |
,
&
, ^
,
<<
, >>
,
and ~
.
Nested function calls.
Calls to stored routines, UDFs, or plugins.
Character-to-integer conversions involving non-8-bit
character sets or any of the
latin1_german2_ci
,
latin2_czech_cs
, or
cp1250_czech_cs
collations.
These restrictions were added in part as a result of Bug#18198 and related bug reports.
For more information about these and other restrictions on partitioned tables in MySQL, see 項15.5. 「パーティショニングの制約と制限」.
Binary MySQL distributions no longer include a mysqld-max server. Instead, distributions contain a binary that includes the features previously included in the mysqld-max binary.
The default binary log format (as used during replication) is now Mixed based, automatically using a combination of row-based and statement based log events as appropriate.
The general query log and slow query logs now can be enabled
or disabled at runtime with the general_log
and slow_query_log
system variables, and
the name of the log files can be changed by setting the
general_log_file
and
slow_query_log_file
system variables. See
項4.11.3. 「一般クエリ ログ」, and
項4.11.5. 「スロー クエリ ログ」.
The output generated by the server when using the
--xml
option has changed with regard to null
values. It now matches the output from mysqldump
--xml
. That is, a column containing
a NULL
value is now reported as
<field name="column_name
" xsi:nil="true" />
whereas a column containing the string value
'NULL'
is reported as
<field name="column_name
">NULL</field>
and a column containing an empty string is reported as
<field name="column_name
">>/field>
The following statements now can be executed as prepared
statements (using PREPARE
plus
EXECUTE
):
CACHE INDEX CHANGE MASTER CHECKSUM {TABLE | TABLES} {CREATE | RENAME | DROP} DATABASE {CREATE | RENAME | DROP} USER FLUSH {TABLE | TABLES | TABLES WITH READ LOCK | HOSTS | PRIVILEGES | LOGS | STATUS | MASTER | SLAVE | DES_KEY_FILE | USER_RESOURCES} GRANT REVOKE KILL LOAD INDEX INTO CACHE RESET {MASTER | SLAVE | QUERY CACHE} SHOW BINLOG EVENTS SHOW CREATE {PROCEDURE | FUNCTION | EVENT | TABLE | VIEW} SHOW {AUTHORS | CONTRIBUTORS | WARNINGS | ERRORS} SHOW {MASTER | BINARY} LOGS SHOW {MASTER | SLAVE} STATUS SLAVE {START | STOP} INSTALL PLUGIN UNINSTALL PLUGIN
The Instance Manager --passwd
option has been
renamed to --print-password-line
. Other
options were added to enable management of the IM password
file from the command line: --add-user
,
--drop-user
, --edit-user
,
--list-users
,
--check-password-file
,
--clean-password-file
,
--username
, and --password
.
The --mysql-safe-compatible
option was added
to cause the Instance Manner to act similarly to
mysqld_safe.
On Windows, typing Control-C caused the mysql client to crash. Now it causes mysql to attempt to kill the current statement. If this cannot be done, or Control-C is typed again before the statement is killed, mysql exits. (Bug#17926; see also Bug#1989)
TEXT
and BLOB
columns do
not support DEFAULT
values. However, when a
default of ''
was specified, the
specification was silently ignored. This now results in a
warning, or an error in strict mode. (Bug#19498)
The mysql client now allows
\l
in the prompt
command
argument to insert the current delimiter into the prompt. (Bug#14448)
Log table changes: By default, the log tables use the
CSV
storage engine, as before. But now the
log tables can be altered to use the MyISAM
storage engine. You cannot use ALTER TABLE
to alter a log table that is in use. The log must be disabled
first. No engines other than CSV
or
MyISAM
are legal for the log tables. The
use of DROP TABLE
for log tables is
similarly restricted: It cannot be used to drop a log table
that is in use. The log must be disabled first. (These changes
also correct a deadlock that occurred for an attempt to drop
an in-use log table.) (Bug#18559)
The LEFT()
and RIGHT()
functions return NULL
if any argument is
NULL
. (Bug#11728)
EXPLAIN EXTENDED
now shows a
filtered
column that is an estimated
percentage of the examined rows that will be joined with the
previous tables. (Bug#14940)
For mysqlshow, if a database name argument
contains wildcard characters (such as
‘_
’) but matches a single
database name exactly, treat the name as a literal name. This
allows a command such as mysqlshow
information_schema work without having to escape the
wildcard character. (Bug#19147)
If a DROP VIEW
statement named multiple
views, it stopped with an error if a non-existent view was
named and did not drop the remaining views. Now it continues
on and reports an error at the end, similar to DROP
TABLE
. (Bug#16614)
SHOW CREATE TABLE
now shows constraints for
InnoDB
tables. (Bug#16614)
Added the --set-charset
option to
mysqlbinlog to allow the character set to
be specified for processing binary log files. (Bug#18351)
NDB Cluster
: Backup messages are no longer
printed to the Cluster log.
NDB Cluster
: The HELP
command in the Cluster management client now provides
command-specific help. For example, HELP
RESTART
in ndb_mgm provides
detailed information about the START
command. (Bug#19620)
NDB Cluster
: Inserting into an
NDB
table failed when the table had no
primary key but had a unique key added after table was created
on one or more NOT NULL
columns. This
occurred when the unique key had been adding using either
ALTER TABLE
or CREATE UNIQUE
KEY
. (Bug#22838)
NDB Cluster
: The
ndb_config utility now accepts
-c
as a short form of the
--ndb-connectstring
option. (Bug#22295)
NDB Cluster
: Added the --bind-address
option for ndbd. This allows a data node
process to be bound to a specific network interface. (Bug#22195)
NDB Cluster
: The
Ndb_number_of_storage_nodes
system variable
was renamed to Ndb_number_of_data_nodes
.
(Bug#20848)
Added the --ndb-use-copying-alter-table
option to mysqld to provide a fallback in
case of problems with online ALTER TABLE
operations on NDBCluster
tables.
Added the SHOW CONTRIBUTORS
statement.
It is no longer possible to create partitioned tables using
the CSV
storage engine.
NDB Cluster
: The status variables
Ndb_connected_host
and
Ndb_connected_port
were renamed to
Ndb_config_from_host
and
Ndb_config_from_port
, respectively.
NDB Cluster
: A number of erroneous,
misleading, or missing error messages have been corrected.
(Bug#17297 & Bug#19543)
NDB Cluster
: It is no longer possible to
create Cluster tables using any partitioning type other than
[LINEAR
] KEY
. Attempting
to do so now raises an error.
The ExtractValue()
function now produces an
error when passed an XML fragment that is not well-formed.
(Bug#18201)
(Previously, the function allowed invalid XML fragments to be used.)
There were several issues regarding how SHOW
STATUS
affected some status variables and logging
which could impact monitoring the MySQL Server. The behavior
of this statement has been modified in two ways:
SHOW STATUS
is no longer logged to the
slow query log.
SHOW STATUS
no longer updates any
session status variables, except for
com_show_status
.
However, SHOW STATUS
continues to update
global status variables to allow
monitoring of what the server is actually doing. This is
because SHOW STATUS
creates temporary
tables that may affect performance if it is called excessively
often. (Bug#10210, Bug#19764)
The mysqldumpslow script has been moved from client RPM packages to server RPM packages. This corrects a problem where mysqldumpslow could not be used with a client-only RPM install, because it depends on my_print_defaults which is in the server RPM. (Bug#20216)
The bundled yaSSL library was upgraded to version 1.3.7.
The bundled yaSSL library licensing has added a FLOSS
exception similar to MySQL to resolve licensing
incompatibilities with MySQL. (See the
extra/yassl/FLOSS-EXCEPTIONS
file in a
MySQL source distribution for details.) (Bug#16755)
mysqlslap threads now try to connect up to 10 times if the initial connect attempt fails. (Bug#21297)
For a successful dump, mysqldump now writes a SQL comment to the end of the dump file in the following format:
-- Dump completed on YYYY-MM-DD hh:mm:ss
The mysqld and mysqlmanager manpages have been reclassified from volume 1 to volume 8. (Bug#21220)
In the INFORMATION_SCHEMA.ROUTINES
table
the ROUTINE_DEFINITION
column now is
defined as NULL
rather than NOT
NULL
. Also, NULL
rather than the
empty string is returned as the column value if the user does
not have sufficient privileges to see the routine definition.
(Bug#20230)
configure now defines the symbol
DBUG_ON
in config.h
to
indicate whether the source tree is configured to be compiled
with debugging support. (Bug#19517)
The MySQL distribution now compiles on UnixWare 7.13. (Bug#20190)
The mysql client used the default character
set if it automatically reconnected to the server, which is
incorrect if the character set had been changed. To enable the
character set to remain synchronized on the client and server,
the mysql command
charset
(or \C
) that
changes the default character set and now also issues a
SET NAMES
statement. The changed character
set is used for reconnects. (Bug#11972)
The STATE
column of the
INFORMATION_SCHEMA.PROCESSLIST
table was
increased from 30 to 64 characters to accommodate longer state
values. (Bug#21652)
TIMESTAMP
columns that are NOT
NULL
now are reported that way by SHOW
COLUMNS
and INFORMATION_SCHEMA
.
(Bug#20910)
INFORMATION_SCHEMA
contains new tables,
GLOBAL_STATUS
,
SESSION_STATUS
,
GLOBAL_VARIABLES
, and
SESSION_VARIABLES
, that correspond to the
output from the SHOW {GLOBAL|SESSION}
STATUS
and SHOW {GLOBAL|SESSION}
VARIABLES
statements.
The BINARY
keyword now is forbidden as a
data type attribute in stored routines (for example,
DECLARE v1 VARCHAR(25) BINARY
), because
DECLARE
does not support collations, and in
this context BINARY
specifies the binary
collation of the variable's character set. (Bug#20701)
The source distribution has been updated so that the UDF example can be compiled under Windows with CMake. See 項25.3.4.5. 「Compiling and Installing User-Defined Functions」. (Bug#19121)
LOAD DATA INFILE
no longer causes an
implicit commit for all storage storage engines. It now causes
an implicit commit only for tables using the
NDB
storage engine. (Bug#11151)
The LOAD DATA FROM MASTER
and LOAD
TABLE FROM MASTER
statements are deprecated. See
項12.6.2.2. 「LOAD DATA FROM MASTER
構文」, for recommended
alternatives. (Bug#18822, Bug#9125, Bug#12187, Bug#14399,
Bug#15025, Bug#20596)
mysqldump now has a
--flush-privileges
option. It causes
mysqldump to emit a FLUSH
PRIVILEGES
statement after dumping the
mysql
database. This option should be used
any time the dump contains the mysql
database and any other database that depends on the data in
the mysql
database for proper restoration.
(Bug#21424)
The default value of the tmp_table_size
system variable was lowered from 32MB to 16MB because it is
bounded by the value of
max_heap_table_size
, which has a default of
16MB. (Bug#18875)
The number of InnoDB
threads is no longer
limited to 1,000 on Windows. (Bug#22268)
Memory consumption of the InnoDB
data
dictionary cache was roughly halved by cleaning up the data
structures. (Bug#20877)
Using --with-debug
to configure MySQL with
debugging support enables you to use the
--debug="d,parser_debug"
option when you
start the server. This causes the Bison parser that is used to
process SQL statements to dump a parser trace to the server's
standard error output. Typically, this output is written to
the error log.
A new system variable, lc_time_names
,
specifies the locale that controls the language used to
display day and month names and abbreviations. This variable
affects the output from the DATE_FORMAT()
,
DAYNAME()
and
MONTHNAME()
functions. See
項4.10.9. 「MySQL サーバのローケル サポート」.
Bugs fixed:
Security fix: On Linux, and possibly other platforms using case-sensitive filesystems, it was possible for a user granted rights on a database to create or access a database whose name differed only from that of the first by the case of one or more letters. (CVE-2006-4226, Bug#17647)
Security fix: If a user has
access to MyISAM
table
t
, that user can create a
MERGE
table m
that accesses t
. However, if the
user's privileges on t
are
subsequently revoked, the user can continue to access
t
by doing so through
m
. If this behavior is undesirable,
you can start the server with the new
--skip-merge
option to disable the
MERGE
storage engine. (Bug#15195)
Security fix: A stored
routine created by one user and then made accessible to a
different user using GRANT EXECUTE
could be
executed by that user with the privileges of the routine's
definer. (CVE-2006-4227, Bug#18630)
Incompatible change: For
utf8
columns, the full-text parser
incorrectly considered several non-word punctuation and
whitespace characters as word characters, causing some
searches to return incorrect results. (Bug#19580)
The fix involves a change to the full-text parser, so any
tables that have FULLTEXT
indexes on
utf8
columns must be repaired with
REPAIR TABLE
:
REPAIR TABLE tbl_name
QUICK;
An invalid GRANT
statement for which
Ok
was returned on a replication master
caused an error on the slave and replication to fail. (Bug#6774)
InnoDB
locking was improved by removing a
gap lock for the case that you try to delete the same row
twice within a transaction. (Bug#13544)
Deleting entries from a large MyISAM
index
could cause index corruption when it needed to shrink. Deletes
from an index can happen when a record is deleted, when a key
changes and must be moved, and when a key must be un-inserted
because of a duplicate key. This can also happen in
REPAIR TABLE
when a duplicate key is found
and in myisamchk when sorting the records
by an index. (Bug#22384)
Setting myisam_repair_threads
caused any
repair operation on a MyISAM
table to fail
to update the cardinality of indexes, instead making them
always equal to 1. (Bug#18874)
ALTER EVENT
statements including only a
COMMENT
clause failed with a syntax error
on two platforms: Linux for S/390, and OS X 10.4 for 64-bit
PPC. (Bug#23423)
For row-based replication, log rotation could occur at an improper time. (Bug#21474)
For row-based replication, the BINLOG
command did not lock tables properly, causing a crash for some
table types. (Bug#19459)
The parser rejected queries that selected from a table twice
using a UNION
within a subquery. The parser
now supports arbitrary subquery, join, and parenthesis
operations within EXISTS
subqueries. A
limitation still exists for scalar subqueries: If the subquery
contains UNION
, the first
SELECT
of the UNION
cannot be within parentheses. For example, SELECT
(SELECT a FROM t1 UNION SELECT b FROM t2)
will work,
but SELECT ((SELECT a FROM t1) UNION (SELECT b FROM
t2))
will not. (Bug#14654)
Incorrect type aggregation for IN
and
CASE
expressions could lead to an incorrect
result. (Bug#18360)
When using row based replication, a CREATE
TABLE...SELECT
statement would be replicated, even
if the table creation failed on the master (for example, due
to a duplicate key failure). (Bug#20265)
The optimizer did not take advantage of indexes on columns
used for the second or third arguments of
BETWEEN
. (Bug#18165)
Subqueries with aggregate functions but no
FROM
clause could return incorrect results.
(Bug#21540)
The CSV
storage engine failed to detect
some table corruption. (Bug#22080)
For multiple-table UPDATE
statements,
storage engines were not notified of duplicate-key errors.
(Bug#21381)
Successive invocations of a COUNT(*)
query
containing a join on two MyISAM
tables and
a WHERE
clause of the form WHERE
(
yielded different results. (Bug#21019)
table1
.column1
=
table2
.column2
)
OR
table2
.column2
IS NULL
It was possible to provide the
ExtractValue()
function with input
containing 「tags」 that were not valid XML; for
example, it was possible to use tag names beginning with a
digit, which are disallowed by the W3C's XML 1.0
specification. Such cases caused the function to return
「junk」 output rather than an error message
signalling the user as to the true nature of the problem. (Bug#20854)
The presence of a subquery in the ON
clause
of a join in a view definition prevented the
MERGE
algorithm from being used for the
view in cases where it should be allowed. (Bug#21646)
BIT
columns were not replicated properly
under row-based replication. (Bug#22550)
Conversion of values inserted into a BIT
column could affect adjacent columns. (Bug#22271)
The URL into the online manual that is printed in the stack trace message by the server was out of date. (Bug#21449)
Incorrect results could be obtained from re-execution of a
parametrized prepared statement or a stored routine with a
SELECT
that uses LEFT
JOIN
with a second table having only one row. (Bug#21081)
PROCEDURE ANALYSE()
returned incorrect
values of M
FLOAT(
and
M
,
D
)DOUBLE(
. (Bug#20305)
M
,
D
)
Join conditions using partial indexes on
utf8
columns of InnoDB
tables incorrectly ignored rows where the length of the actual
value was greater than the length of the partial index. (Bug#19960)
On an INSERT
into an updatable but
non-insertable view, an error message was issued stating that
the view was not updatable. Now the message says the view is
not insertable-into. (Bug#5505)
INSERT DELAYED
did not honor SET
INSERT_ID
or the auto_increment_*
system variables. (Bug#20627, Bug# 20830)
For character sets having a mbmaxlen
value
of 2, any ALTER TABLE
statement changed
TEXT
columns to
MEDIUMTEXT
. (Bug#21620)
A query that used GROUP BY
and an
ALL
or ANY
quantified
subquery in a HAVING
clause could trigger
an assertion failure. (Bug#21853)
For an ENUM
column that used the
ucs2
character set, using ALTER
TABLE
to modify the column definition caused the
default value to be lost. (Bug#20108)
An UPDATE
that referred to a key column in
the WHERE
clause and activated a trigger
that modified the column resulted in a loop. (Bug#20670)
A loaded storage engine plugin did not load after a server restart. (Bug#21610)
Creating a TEMPORARY
table with the same
name as an existing table that was locked by another client
could result in a lock conflict for DROP TEMPORARY
TABLE
because the server unnecessarily tried to
acquire a name lock. (Bug#21096)
After FLUSH TABLES WITH READ LOCK
followed
by UNLOCK TABLES
, attempts to drop or alter
a stored routine failed with an error that the routine did not
exist, and attempts to execute the routine failed with a lock
conflict error. (Bug#21414)
mysql_com.h
unnecessarily referred to the
ulong
type. (Bug#22227)
Incorporated some portability fixes into the definition of
__attribute__
in
my_global.h
. (Bug#2717)
Linking the pthreads
library to
single-threaded MySQL libraries caused
dlopen()
to fail at runtime on HP-UX. (Bug#18267)
Loading a plugin caused any an existing plugin with the same name to be lost. (Bug#20615)
In the package of pre-built time zone tables that is available
for download at
http://dev.mysql.com/downloads/timezones.html, the tables
now explicitly use the utf8
character set
so that they work the same way regardless of the system
character set value. (Bug#21208)
The build process incorrectly tried to overwrite
sql/lex_hash.h
. This caused the build to
fail when using a shadow link tree pointing to original
sources that were owned by another account. (Bug#18888)
mysql_ftdump produced bad counts for common words. (Bug#22326)
The optimizer could make an incorrect index choice for indexes with a skewed key distribution. (Bug#22393)
When records are merged from the insert buffer and the page
needs to be reorganized, InnoDB
used
incorrect column length information when interpreting the
records of the page. This caused a server crash due to
apparent corruption of secondary indexes in
ROW_FORMAT=COMPACT
that contain prefix
indexes of fixed-length columns. Data files should not be
corrupted, but the crash was likely to repeat every time the
server was restarted. (Bug#21638)
Instance Manager didn't close the client socket file when starting a new mysqld instance. mysqld inherited the socket, causing clients connected to Instance Manager to hang. (Bug#12751)
Using GROUP_CONCAT()
on the result of a
subquery in the FROM
clause that itself
used GROUP_CONCAT()
could cause a server
crash. (Bug#22015)
Instance Manager had a race condition involving mysqld PID file removal. (Bug#22379)
Execution of a prepared statement that uses an
IN
subquery with aggregate functions in the
HAVING
clause could cause a server crash.
(Bug#22085)
Selecting from a MERGE
table could result
in a server crash if the underlying tables had fewer indexes
than the MERGE
table itself. (Bug#21617,
Bug#22937)
A locking safety check in InnoDB
reported a
spurious error stored_select_lock_type is 0 inside
::start_stmt()
for INSERT ...
SELECT
statements in
innodb_locks_unsafe_for_binlog
mode. The
safety check was removed. (Bug#10746)
make install tried to build files that should already have been built by make all, causing a failure if installation was performed using a different account than the one used for the initial build. (Bug#19738)
The source distribution would not build on Windows due to a
spurious dependency on ib_config.h
. (Bug#22224)
It was possible for a stored routine with a
non-latin1
name to cause a stack overrun.
(Bug#21311)
The server returns a more informative error message when it
attempts to open a MERGE
table that has
been defined to use non-MyISAM
tables. (Bug#10974)
Within stored routines, some error messages were printed incorrectly. A non-null-terminated string was passed to a message-printing routine that expected a null-terminated string. (Bug#20778)
SUBSTR()
results sometimes were stored
improperly into a temporary table when multi-byte character
sets were used. (Bug#20204)
Certain malformed INSERT
statements could
crash the mysql client. (Bug#21142)
EXPLAIN EXTENDED
now shows a
filtered
column that is an estimated
percentage of the examined rows that will be joined with the
previous tables. This was added while dealing with a problem
of MySQL choosing the wrong index for some queries. (Bug#14940)
On Mac OS X, zero-byte read()
or
write()
calls to an SMB-mounted filesystem
could return a non-standard return value, leading to data
corruption. Now such calls are avoided. (Bug#12620)
With TRADITIONAL
SQL mode, assignment of
out-of-bound values and rounding of assigned values was done
correctly, but assignment of the same numbers represented as
strings sometimes was handled differently. (Bug#6147)
The source distribution failed to compile when configured with
the --without-geometry
option. (Bug#12991)
The source distribution failed to compile when configured with
the --with-libwrap
option. (Bug#18246)
The feature of being able to recover a temporary table named
#sql_
in
id
InnoDB
by creating a table named
rsql_
was broken by the introduction of the new identifier encoding
in MySQL 5.1.6 (Bug#21313)
id
_recover_innodb_tmp_table
ALTER EVENT
in the body of a stored
procedure led to a crash when the procedure was called. This
affected only those ALTER EVENT
statements
which changed the interval of the event. (Bug#22397)
A DATE
can be represented as an integer
(such as 20060101
) or as a string (such as
'2006.01.01'
). When a
DATE
(or TIME
) column is
compared in one SELECT
against both
representations, constant propagation by the optimizer led to
comparison of DATE
as a string against
DATE
as an integer. This could result in
integer comparisons such as 2006
against
20060101
, erroneously producing a false
result. (Bug#21475)
When a statement used a stored function that inserted into an
AUTO_INCREMENT
column, the generated
AUTO_INCREMENT
value was not written into
the binary log, so a different value could in some cases be
inserted on the slave. (Bug#20341)
A stored procedure that used
LAST_INSERT_ID()
did not replicate properly
using statement-based binary logging. (Bug#20339)
Use of the --no-pager
option caused
mysql to crash. (Bug#19363)
For INSERT ... ON DUPLICATE KEY UPDATE
, use
of
VALUES(
within the col_name
)UPDATE
clause sometimes was
handled incorrectly. (Bug#21555)
When event_scheduler
was set to
DISABLED
, its value was not displayed
correctly by SHOW VARIABLES
or
SELECT @@global.event_scheduler
. (Bug#22662)
Row equalities (such as WHERE (a,b) = (c,d)
were not taken into account by the optimizer, resulting in
slow query execution. Now they are treated as conjunctions of
equalities between row elements. (Bug#16081)
If the binary logging format was changed between the times when a locked table was modified and when it was unlocked, the binary log contents were incorrect. (Bug#20863)
Column names supplied for a view created on a master server could be lost on a slave server. (Bug#19419)
For a MyISAM
table locked with
LOCK TABLES ...WRITE
, queries optimized
using the index_merge
method did not show
rows inserted with the lock in place. (Bug#20256)
Table aliases in multiple-table DELETE
statements sometimes were not resolved. (Bug#21392)
A query result could be sorted improperly when using
ORDER BY
for the second table in a join.
(Bug#21302)
The --collation-server
server option was
being ignored. With the fix for this problem, if you choose a
non-default character set with
--character-set-server
, you should also use
--collation-server
to specify the collation.
(Bug#15276)
A function result in a comparison was replaced with a constant by the optimizer under some circumstances when this optimization was invalid. (Bug#21698)
A subquery that uses an index for both the
WHERE
and ORDER BY
clauses produced an empty result. (Bug#21180)
If the auto_increment_offset
setting causes
MySQL to generate a value larger than the column's maximum
possible value, the INSERT
statement is
accepted in strict SQL mode, whereas but should fail with an
error. (Bug#20573)
Queries containing a subquery that used aggregate functions could return incorrect results. (Bug#16792)
Row-based replication failed when the query cache was enabled on the slave. (Bug#17620)
The
index_merge
/Intersection
optimizer could have a memory overrrun when the number of
table columns covered by an index is sufficiently large,
possibly resulting in a server crash. (Bug#16201)
The MD5()
, SHA1()
, and
ENCRYPT()
functions should return a binary
string, but the result sometimes was converted to the
character set of the argument. MAKE_SET()
and EXPORT_SET()
now use the correct
character set for their default separators, resulting in
consistent result strings which can be coerced according to
normal character set rules. (Bug#20536)
EXPLAIN
sometimes returned an incorrect
select_type
for a SELECT
from a view, compared to the select_type
for the equivalent SELECT
from the base
table. (Bug#5500)
An InnoDB
mutex was not aquired and
released under the same condition, leading to deadlock in some
rare situations involving XA transactions. (Bug#21833)
With row-based replication, replicating a statement to a slave where the table had additional columns relative to the master table did not work. (Bug#19069)
For a MyISAM
table with a
FULLTEXT
index, compression with
myisampack or a check with
myisamchk after compression resulted in
table corruption. (Bug#19702)
With max_sp_recursion
set to 0, a stored
procedure that executed a SHOW CREATE
PROCEDURE
statement for itself triggered a recursion
limit exceeded error, though the statement involves no
recursion. (Bug#21416)
mysqldump did not add version-specific
comments around WITH PARSER
and
TABLESPACE ... STORAGE DISK
clauses for
CREATE TABLE
statements, causing the dump
file to fail when loaded into older servers. (Bug#20841)
BIN()
, OCT()
, and
CONV()
did not work with BIT values. (Bug#15583)
The optimizer could produce an incorrect result after
AND
with collations such as
latin1_german2_ci
,
utf8_czech_ci
, and
utf8_lithianian_ci
. (Bug#9509)
The server could crash for the second execution of a function
containing a SELECT
statement that uses an
aggregating IN
subquery. (Bug#21493)
UPGRADE
was treated as a reserved word,
although it is not. (Bug#21772)
Database and table names have a maximum length of 64 characters (even if they contain multi-byte characters), but were being truncated to 64 bytes. (Bug#21432)
Usernames have a maximum length of 16 characters (even if they contain multi-byte characters), but were being truncated to 16 bytes. (Bug#20393)
A query could produce different results with and without and
index, if the WHERE
clause contained a
range condition that used an invalid
DATETIME
constant. (Bug#16249)
COUNT(*)
queries with ORDER
BY
and LIMIT
could return the
wrong result. (Bug#21787)
Note: This problem was
introduced by the fix for Bug#9676, which limited the rows
stored in a temporary table to the LIMIT
clause. This optimization is not applicable to non-group
queries with aggregate functions. The current fix disables the
optimization in such cases.
Memory overruns could occur for certain kinds of subqueries. (Bug#21477)
Adding ORDER BY
to a SELECT
DISTINCT(
query
could produce incorrect results. (Bug#21456)
expr
)
Memory used by scheduled events was not freed when the events were dropped. (Bug#18683)
A scheduled event that took longer to execute than the length
of time scheduled between successive executions could
「skip」 executions. For example, an event defined
with EVERY 1 SECOND
— but which
required longer than 1 second to complete — might be
executed only once every 2 seconds. (Bug#16417)
When used in the DO
clause of a
CREATE EVENT
statement, the statements
CREATE EVENT
, CREATE
FUNCTION
, and CREATE PROCEDURE
caused the server to crash. (These statements are not
permitted inside CREATE EVENT
.) (Bug#16409, Bug#18896)
A subselect used in the ON SCHEDULE
clause
of a CREATE EVENT
or ALTER
EVENT
statement caused the server to crash, rather
than producing an error as expected. (Bug#16394)
mysql displayed an empty string for
NULL
values. (Bug#21618)
mysql_upgrade produced a malformed
upgrade_defaults
file by overwriting the
[client]
group header with a
password
option. This prevented
mysqlcheck from running successfully when
invoked by mysql_upgrade. (Bug#21011)
mysql_config --libmysqld-libs did not
produce any SSL options necessary for linking
libmysqld
with SSL support enabled. (Bug#21239)
yaSSL had a conflicting definition for
socklen_t
on hurd-i386 systems. (Bug#22326)
On Windows, inserting into a MERGE
table
after renaming an underlying MyISAM
table
caused a server crash. (Bug#20789)
character_set_results
can be
NULL
to signify 「no
conversion,」 but some code did not check for
NULL
, resulting in a server crash. (Bug#21913)
If a partitioned InnoDB
table contained an
AUTO_INCREMENT
column, a
SHOW
statement could cause an assertion
failure with more than one connection. (Bug#20493)
Running InnoDB
with many concurrent threads
could cause memory corruption and a seg fault due to a bug
introduced in MySQL 5.1.11. (Bug#20213)
Using DROP TABLE
with concurrent queries
causes mysqld
to crash. (Bug#21784)
The ExtractValue()
function did not accept
XML tag names containing a period (.
)
character. (Bug#20795)
For table-format output, mysql did not always calculate columns widths correctly for columns containing multi-byte characters in the column name or contents. (Bug#17939)
Identifiers with embedded escape characters were not handled
correctly by some SHOW
statements due to
some old code that was doing some extra unescaping. (Bug#19874)
InnoDB
was slow with more than 100,000
.idb
files. (Bug#21112)
SHOW INNODB STATUS
contained some duplicate
output. (Bug#21113)
After an INSERT ... ON DUPLICATE KEY UPDATE
statement that updated an existing row,
LAST_INSERT_ID()
could return a value not
in the table. (Bug#11460)
Selecting from INFORMATION_SCHEMA.FILES
could crash the server. (Bug#21676)
Using cursors with READ COMMITTED
isolation
level could cause InnoDB
to crash. (Bug#19834)
A server or network failure with an open client connection would cause the client to hang even though the server was no longer available. (Bug#9678)
Using ALTER TABLE ... REORGANIZE PARTITIONS
to reduce the number of subpartitions to 1 caused the server
to crash. (Bug#21210)
NDB Cluster
: Data nodes added while the
cluster was running in single user mode were all assigned node
ID 0, which could later cause multiple node failures. Adding
of nodes in single user mode is no longer possible. (Bug#20395)
NDB Cluster
: Attempting to create an
NDB
table on a MySQL with an existing
non-Cluster table with the same name in the same database
could result in data loss or corruption. Now, if such a table
is encountered during autodiscovery, a warning is written to
the error log of the affected mysqld, and
the local table is overwritten. (Bug#21378)
NDB Cluster
(NDB API): Inacivity timeouts
for scans were not correctly handled. (Bug#23107)
NDB Cluster
(NDB API): Attempting to read a
nonexistent tuple using Commit
mode for
NdbTransaction::execute()
caused node
failures. (Bug#22672)
NDB Cluster
(NDB API): The inclusion of
my_config.h
in
NdbApi.h
required anyone wishing to write
NDB API applications against MySQL 5.1 to have a complete copy
of the 5.1 sources. (Bug#21253)
NDB Cluster
(NDB API): The
NdbOperation::getBlobHandle()
method, when
called with the name of a nonexistent column, caused a
segmentation fault. (Bug#21036)
NDB Cluster
: The --help
output from NDB
binaries did not include
file-related options. (Bug#21994)
NDB Cluster
: The node recovery algorithm
was missing a version check for tables in the
ALTER_TABLE_COMMITTED
state (as opposed to
the TABLE_ADD_COMMITTED
state, which has
the version check). This could cause inconsistent schemas
across nodes following node recovery. (Bug#21756)
NDB Cluster
: The output for the
--help
option used with
NDB
executable programs
(ndbd, ndb_mgm,
ndb_restore, ndb_config,
and so on) referred to the Ndb.cfg
file,
instead of my.cnf
. (Bug#21585)
NDB Cluster
: Partition distribution keys
were updated only for the primary and starting replicas during
node recovery. This could lead to node failure recovery for
clusters having an odd number of replicas. (Bug#21535)
Note: We recommend values for
NumberOfReplicas
that are even powers of 2,
for best results.
NDB Cluster
: The ndb_mgm
management client did not set the exit status on errors,
always returning 0 instead. (Bug#21530)
NDB Cluster
: Cluster logs were not rotated
following the first rotation cycle. (Bug#21345)
NDB Cluster
: Condition pushdown did not
work correctly with DATETIME
columns. (Bug#21056)
NDB Cluster
: Under some circumstances,
local checkpointing would hang, keeping any unstarted nodes
from being started. (Bug#20895)
NDB Cluster
: Using an invalid node ID with
the management client STOP
command could
cause ndb_mgm to hang. (Bug#20575)
NDB Cluster
: In some cases where
SELECT COUNT(*)
from an
NDB
table should have yielded an error,
MAX_INT
was returned instead. (Bug#19914)
NDB Cluster
: Following the restart of an
MGM node, the Cluster management client did not automatically
reconnect. (Bug#19873)
NDB Cluster
: Error messages given when
trying to make online changes parameters such as
NoOfReplicas
thast can only be changed via
a complete shutdown and restart of the cluster did not
indicate the true nature of the problem. (Bug#19787)
NDB Cluster
: ndb_restore
did not always make clear that it had recovered successfully
from temporary errors while restoring a cluster backup. (Bug#19651)
NDB Cluster
: In rare situations with
resource shortages, a crash could result from insufficient
IndexScanOperations
. (Bug#19198)
NDB Cluster
: ndb_mgm -e show |
head would hang after displaying the first 10 lines
of output. (Bug#19047)
NDB Cluster
: The error returned by the
cluster when too many nodes were defined did not make clear
the nature of the problem. (Bug#19045)
NDB Cluster
: A problem with takeover during
a system restart caused ordered indexes to be rebuilt
incorrectly. This also adversely affected Cluster Replication.
(Bug#15303)
NDB Cluster
: Some queries involving joins
on very large NDB
tables could crash the
MySQL server. (Bug#21059)
NDB Cluster
(Disk Data):
mysqldump did not back up tablespace or log
file group information for Disk Data tables correctly.
(Specifically, UNDO_BUFFER_SIZE
and
INITIAL_SIZE
values were misreported.)
Trying to restore from such a backup would produce error 1296
(Got error 1504 'Out of logbuffer memory' from
NDB). (Bug#20809)
NDB Cluster
(Disk Data): The
INFORMATION_SCHEMA.FILES
table showed
incorrect values in the EXTENT_SIZE
,
FREE_EXTENTS
, and
TOTAL_EXTENTS
columns for UNDO log files.
(Bug#20073)
NDB Cluster
(Disk Data): Deletes from Disk
Data tables used a non-optimal scan to find the rows to be
deleted, resulting in poor performance. The fix causes disk
order rather than memory order to be used, and can improve
performance of Disk Data deletes by up to ~300% in some cases.
(Bug#17929)
NDB Cluster
: A scan timeout returned Error
4028 (Node failure caused abort of
transaction) instead of Error 4008
(Node failure caused abort of
transaction...). (Bug#21799)
NDB Cluster
: The message Error 0
in readAutoIncrementValue(): no Error was written
to the error log whenever SHOW TABLE STATUS
was performed on a Cluster table that did not have an
AUTO_INCREMENT
column. (Bug#21033)
NDB Cluster
(Direct APIs): The
storage/ndb
directory was missing from
the server binary distribution, making it impossible to
compile NDB
API and MGM API applications.
This directory can be found as
/usr/include/storage/ndb
after installing
that distribution. (Bug#21955)
NDB Cluster
: ndb_size.pl
and ndb_error_reporter were missing from
RPM packages. (Bug#20426)
The ndb_mgm program was included in both
the MySQL-ndb-tools
and
MySQL-ndb-management
RPM packages,
resulting in a conflict if both were installed. Now
ndb_mgm is included only in
MySQL-ndb-tools
. (Bug#21058)
libmysqld
produced some warnings to
stderr
which could not be silenced. These
warnings now are suppressed. (Bug#13717)
If a column definition contained a character set declaration,
but a DEFAULT
value began with an
introducer, the introducer character set was used as the
column character set. (Bug#20695)
If a query had a condition of the form
,
which participated in equality propagation and also was used
for tableX
.key
=
tableY
.key
ref
access, then early
ref
-access NULL
filtering was not peformed for the condition. This could make
query execution slower. (Bug#19649)
The optimizer sometimes produced an incorrect row-count
estimate after elimination of const
tables.
This resulted in choosing extremely inefficient execution
plans in same cases when distribution of data in joins were
skewed. (Bug#21390)
Query results could be incorrect if the
WHERE
clause contained
t.
, where
key_part
NOT IN
(val_list
)val_list
is a list of more than
1000 constants. (Bug#21282)
STR_TO_DATE()
sometimes would return
NULL
if the %D
format
specifier was not the last specifier in the format string.
(Bug#20987)
On Windows, a definition for
mysql_set_server_option()
was missing from
the C client library. (Bug#16513)
The myisam_stats_method
variable was
mishandled when set from an option file or on the command
line. (Bug#21054)
The optimizer assumed that if (a=x AND b=x)
is true, (a=x AND b=x) AND a=b
is also
true. But that is not always so if a
and
b
have different data types. (Bug#21159)
InnoDB
did not honor IGNORE
INDEX
, which prevented using IGNORE
INDEX
in cases where an index sort would be slower
than a filesort. (Bug#21174)
For connections that required a SUBJECT
value, a check was performed to verify that the value was
correct, but the connection was not refused if not. (Bug#20411)
Some Linux-x86_64-icc packages (of previous releases) mistakenly contained 32-bit binaries. Only ICC builds are affected, not gcc builds. Solaris and FreeBSD x86_64 builds are not affected. (Bug#22238)
INSERT ... SELECT
sometimes generated a
spurious Column count doesn't match value
count
error. (Bug#21774)
Some user-level level errors were being written to the server's error log, which is for server errors. (Bug#20402)
to the client could have an empty column name. When using
tables created under MySQL 4.1 with a 5.0 server, if the
tables contained VARCHAR
columns, for some
queries the metadata sent to the client could have an empty
column name. (Bug#14897)
On 64-bit systems, use of the cp1250
character set with a primary key column in a
LIKE
clause caused a server crash for
patterns having letters in the range 128..255. (Bug#19741)
ORDER BY RAND() LIMIT 1
always set a user
variable to the last possible value from the table. (Bug#16861)
N'xxx'
and _utf8'xxx'
were not treated as equivalent because
N'xxx'
failed to unescape backslashes
(\
) and doubled apostrophe/single quote
characters (''
). (Bug#17313)
A subquery in the WHERE
clause of the outer
query and using IN
and GROUP
BY
returned an incorrect result. (Bug#16255)
When NOW()
was used in a
BETWEEN
clause of the definition for a
view, it was replaced with a constant in the view. (Bug#15950)
A stored procedure with a CONTINUE
handler
that encountered an error continued to execute a statement
that caused an error, rather with the next statement following
the the one that caused the error. (Bug#8153)
libmysqlclient
defined a symbol
BN_bin2bn
which belongs to OpenSSL. This
could break applications that also linked against OpenSSL's
libcrypto
library. The fix required
correcting an error in a build script that was failing to add
rename macros for some functions. (Bug#21930)
Queries that used the index_merge
and
sort_union
methods to access an
InnoDB
table could produce inaccurate
results. This issue was introduced in MySQL 5.1.10 when a new
handler and bitmap interface was implemented. (Bug#21277)
The SELECT
privilege was required for an
insert on a view, instead of the INSERT
privilege. (Bug#21261)
Note: This fixes a regression that was introduced by the fix for Bug#20989.
Running SHOW MASTER LOGS
at the same time
as binary log files were being switched would cause
mysqld
to hang. (Bug#21965)
Building mysql
on Windows with CMake 2.4
would fail to create libmysqld
correctly.
(Bug#20907)
The server's handling of the number of partitions or
subpartitions specified in a PARTITIONS
or
SUBPARTITIONS
clause was changed. Beginning
with this release, the number of partitions must:
be a positive, non-zero integer
not have any leading zeroes
not be an expression
Also beginning with this version, no attempt is made to
convert, truncate, or evaluate a PARTITIONS
or SUBPARTITIONS
value; instead, the
CREATE TABLE
or ALTER
TABLE
statement containing the
PARTITIONS
or
SUBPARTITIONS
clause now fails with an
appropriate error message. (Bug#15890)
A misleading error message was displayed when attempting to define a unique key that was not valid for a partitioned table. (Bug#21862)
Errors could be generated during the execution of certain prepared statements that ran queries on partitioned tables. (Bug#21658)
Using relative paths for DATA DIRECTORY
or
INDEX DIRECTORY
with a partitioned table
generated a warning rather than an error, and caused
「junk」 files to be created in the server's data
directory. (Bug#21350)
Using EXPLAIN PARTITIONS
with a query on a
table whose partitioning expression was based on the value of
a DATE
column could sometimes cause the
server to crash. (Bug#21339)
Running SHOW TABLE STATUS
on any
InnoDB
table having at least one record
could crash the server. Note that this was not due to any
issue in the InnoDB
storage engine, but
rather with AUTO_INCREMENT
handling in the
partitioning code — however, the table did not have to
have an AUTO_INCREMENT
column for the bug
to manifest. (Bug#21173)
Some ALTER TABLE
statements affecting a
table's subpartitioning could hang. (Bug#21143)
Scheduled events that invoked stored procedures executing DDL operations on partitioned tables could crash the server. (Bug#20548)
The yaSSL library bundled with
libmysqlclient
had some conflicts with
OpenSSL. Now macros are used to rename the conflicting symbols
to have a prefix of ya
. (Bug#19810)
It is possible to create MERGE
tables into
which data cannot be inserted (by not specifying a
UNION
clause. However, when an insert was
attempted, the error message was confusing. Now an error
occurs indicating that the table is read-only. (Bug#17766)
User-created tables having a name beginning with
#sql
were not visible to SHOW
TABLES
and could collide with internal temporary
table names. Now they are not hidden and do not collide. (Bug#1405)
A NUL
byte within a prepared statement
string caused the rest of the string not to be written to the
query log, allowing logging to be bypassed. (Bug#21813)
mysql_upgrade created temporary files in a possibly insecure way. (Bug#21224)
Some prepared statements caused a server crash when executed a second time. (Bug#21166)
With query_cache_type
set to 0,
RESET QUERY CACHE
was very slow and other
threads were blocked during the operation. Now a cache reset
is faster and non-blocking. (Bug#21051)
When DROP DATABASE
or SHOW OPEN
TABLES
was issued while concurrently issuing
DROP TABLE
(or RENAME
TABLE
, CREATE TABLE LIKE
or any
other statement that required a name lock) in another
connection, the server crashed. (Bug#19403, Bug#21216)
Use of zero-length variable names caused a server crash. (Bug#20908)
Prepared statements caused general log and server memory corruption. (Bug#14346)
mysqldump incorrectly tried to use
LOCK TABLES
for tables in the
INFORMATION_SCHEMA
database. (Bug#21527)
Use of the --prompt
option or
prompt
command caused
mysql to be unable to connect to the
Instance Manager. (Bug#17485)
The server crashed if it tried to access a
CSV
table for which the data file had been
removed. (Bug#15205)
CREATE USER
did not respect the
16-character username limit. (Bug#10668)
Creating a partitioned table that used the
InnoDB
storage engine and then restarting
mysqld with --skip-innodb
caused MySQL to crash. (Bug#20871)
In mixed-format binary logging mode, stored functions,
triggers, and views that use functions in their body that
require row-based logging did not replicate reliably because
the logging did not switch from statement-based to row-based
format. For example, INSERT INTO t SELECT FROM
v
, where v
is a view that selects
UUID()
could cause problems. This
limitation has been removed. (Bug#20930)
For user-defined functions created with CREATE
FUNCTION
, the DEFINER
clause is
not legal, but no error was generated. (Bug#21269)
mysqld --flush failed to flush
MyISAM
table changes to disk following an
UPDATE
statement for which no updated
column had an index. (Bug#20060)
In mixed-format binary logging mode, stored functions,
triggers, and views that use functions in their body that
require row-based logging did not replicate reliably because
the logging did not switch from statement-based to row-based
format. For example, INSERT INTO t SELECT FROM
v
, where v
is a view that selects
UUID()
could cause problems. This
limitation has been removed. (Bug#20930)
When not running in strict mode, the server failed to convert
the invalid years portion of a DATE
or
DATETIME
value to '0000'
when inserting it into a table. (Bug#19370)
The dropping of a temporary table whose name contained a
backtick ('`
') character was not correctly
written to the binary log, which also caused it not to be
replicated correctly. (Bug#19188)
Intermediate tables created during the execution of an
ALTER TABLE
statement were visible in the
output of SHOW TABLES
. (Bug#18775)
When setting a column to its implicit default value as the
result of inserting a NULL
into a
NOT NULL
column as part of a multi-row
insert or LOAD DATA
operation, the server
returned a misleading warning message. (Bug#14770)
The --with-collation
option was not honored
for client connections. (Bug#7192)
Users who had the SHOW VIEW
privilege for a
view and privileges on one of the view's base table could not
see records in INFORMATION_SCHEMA
tables
relating to the base table. (Bug#20543)
An issue with yaSSL prevented Connector/J clients from connecting to the server using a certificate. (Bug#19705)
Some server errors were not reported to the client, causing both to try to read from the connection until a hang or crash resulted. (Bug#16581)
FEDERATED
tables raised invalid duplicate
key errors when attempting on one server to insert rows having
the same primary key values as rows that had been deleted from
the linked table on the other server. (Bug#18764)
The C API failed to return a status message when invoking a stored procedure. (Bug#15752)
AUTHORS
and CONTRIBUTORS
were not treated as reserved words. (Bug#19939)
Stored procedures did not use the character set defined for the database in which they were created. (Bug#16676)
CREATE PROCEDURE
, CREATE
FUNTION
, CREATE TRIGGER
, and
CREATE VIEW
statements containing
multi-line comments (/* ... */
) could not
be replicated. (Bug#20438)
The final parenthesis of a CREATE INDEX
statement occurring in a stored procedure was omitted from the
binary log when the stored procedure was called. (Bug#19207)
Attempting to insert a string of greater than 4096 bytes into
a FEDERATED
table resulted in the error
ERROR 1296 (HY000) at line 2: Got error 10000
'Error on remote system: 1054: Unknown column
'string-value
' from
FEDERATED. This error was raised regardless of the
type of column involved (VARCHAR
,
TEXT
, and so on.) (Bug#17608)
Performance during an import on a table with a trigger that called a stored procedure was severely degraded. (Bug#21013)
Repeated DROP TABLE
statements in a stored
procedure could sometimes cause the server to crash. (Bug#19399)
On 64-bit Windows, a missing table generated error 1017, not the correct value of 1146. (Bug#21396)
The same trigger error message was produced under two conditions: The trigger duplicated an existing trigger name, or the trigger duplicated an existing combination of action and event. Now different messages are produced for the two conditions so as to be more informative. (Bug#10946)
The value returned by a stored function returning a string value was not of the declared character set. (Bug#16211)
FLUSH TABLES
followed by a LOCK
TABLES
statement to lock a log table and a non-log
table caused an infinite loop and high CPU use. Now
FLUSH TABLES
ignores log tables. To flush
the log tables, use FLUSH LOGS
instead.
(Bug#20139)
If a filename was specified for the --log
or
--log-slow_queries
options but the server was
logging to tables and not files, the server produced no error
message. (Bug#17599)
mysqlcheck tried to check views instead of ignoring them. (Bug#16502)
Long multiple-row INSERT
statements could
take a very long time for some multi-byte character sets. (Bug#15811)
For mysql, escaping with backslash sometimes did not work. (Bug#20103)
Under certain circumstances,
AVG(
returned a value but
key_val
)MAX(
returned an empty set due to incorrect application of
key_val
)MIN()/MAX()
optimization. (Bug#20954)
Using aggregate functions in subqueries yielded incorrect
results under certain circumstances due to incorrect
application of MIN()/MAX()
optimization.
(Bug#20792)
A query using WHERE
did not
return consistent results on successive invocations. The
column
= constant
OR
column
IS NULLcolumn
in each part of the
WHERE
clause could be either the same
column, or two different columns, for the effect to be
observed. (Bug#21019)
The PASSWORD()
function returned invalid
results when used in some UNION
queries.
(Bug#16881)
USE
did not refresh database privileges
when employed to re-select the current database. (Bug#10979)
A query using WHERE NOT
(
yielded a
different result from the same query using the same
column
< ANY
(subquery
))column
and
subquery
with WHERE
(
. (Bug#20975)
column
> ANY
(subquery
))
A user variable set to a value selected from an unsigned column was stored as a signed value. (Bug#7498)
SELECT
statements using GROUP
BY
against a view could have missing columns in the
output when there was a trigger defined on one of the base
tables for the view. (Bug#20466)
A SELECT
with a subquery that was bound to
the outer query over multiple columns returned different
results when a constant was used instead of one of the
dependant columns. (Bug#18925)
InnoDB
: Quoted Unicode identifiers were not
handled correctly. This included names of tables, columns, and
foreign keys. (Bug#18800)
A stored procedure that created and invoked a prepared statement was not executed when called in a mysqld init-file. (Bug#17843)
Using the extended syntax for TRIM()
— that is, TRIM(... FROM ...)
—
in a SELECT
statement defining a view
caused an invalid syntax error when selecting from the view.
(Bug#17526)
Assignments of values to variables of type
TEXT
were handled incorrectly in stored
routines. (Bug#17225)
When performing a GROUP_CONCAT()
, the
server transformed BLOB
columns
VARCHAR
columns, which could cause
erroneous results when using Connector/J and possibly other
MySQL APIs. (Bug#16712)
The type of the value returned by the
VARIANCE()
function varied according to the
type of the input value. The function should always return a
DOUBLE
value. (Bug#10966)
Performing an INSERT
on a view that was
defined using a SELECT
that specified a
collation and a column alias caused the server to crash (Bug#21086).
A query of the form shown here caused the server to crash:
SELECT * FROM t1 NATURAL JOIN ( t2 JOIN ( t3 NATURAL JOIN t4, t5 NATURAL JOIN t6 ) ON (t3.id3 = t2.id3 AND t5.id5 = t2.id5) );
myisam_ftdump would fail when trying to open a MyISAM index file that you did not have write permissions to access, even though the command would only be reading from the file. (Bug#17122)
REPLACE ... SELECT
for a view required the
INSERT
privilege for tables other than the
table being modified. (Bug#20989)
mysqldump sometimes did not select the correct database before trying to dump views from it, resulting in an empty result set that caused mysqldump to die with a segmentation fault. (Bug#21014)
With mixed-format binary logging, INSERT
DELAYED
statements were logged using statement-based
logging, and they did not replicate properly for statements
that used values such as UUID()
,
RAND()
, or user-defined variables that
require row-based logging. To correct this, the
DELAYED
handler thread how switches to
row-based logging if the logging format is mixed. (Bug#20633,
Bug#20649)
Using EXPLAIN PARTITIONS
with a
UNION
query could crash the server. This
could occur whether or not the query actually used any
partitioned tables. (Bug#20484)
Partition pruning could cause incorrect results from queries,
such missing rows, when the partitioning expression relied on
a BIGINT UNSIGNED
column. (Bug#20257)
The implementation for UNCOMPRESS()
did not
indicate that it could return NULL
, causing
the optimizer to do the wrong thing. (Bug#18539)
TIMESTAMPDIFF()
examined only the date and
ignored the time when the requested difference unit was months
or quarters. (Bug#16226)
perror did not properly report
NDB
error codes. (Bug#16561)
mysqlimport sends a set
@@character_set_database=binary
statement to the
server, but this is not understood by pre-4.1 servers. Now
mysqlimport encloses the statement within a
/*!40101 ... */
comment so that old servers
will ignore it. (Bug#15690)
The character set was not being properly initialized for
CAST()
with a type like CHAR(2)
BINARY
, which resulted in incorrect results or even
a server crash. (Bug#17903)
For ODBC compatibility, MySQL supports use of WHERE
for
col_name
IS NULLDATE
or DATETIME
columns
that are NOT NULL
, to allow column values
of '0000-00-00'
or '0000-00-00
00:00:00'
to be selected. However, this was not
working for WHERE
clauses in
DELETE
statements. (Bug#8143)
The --master-data
option for
mysqldump requires certain privileges, but
mysqldump generated a truncated dump file
without producing an appropriate error message or exit status
if the invoking user did not have those privileges. (Bug#21215)
ALTER VIEW
did not retain existing values
of attributes that had been originally specified but were not
changed in the ALTER VIEW
statement. (Bug#21080)
mysql crashed for very long arguments to
the connect
command. (Bug#21042)
perror crashed on Solaris due to
NULL
return value of
strerror()
system call. (Bug#20145)
The query
command for
mysqltest did not work. (Bug#19890)
For certain queries, the server incorrectly resolved a reference to an aggregate function and crashed. (Bug#20868)
When executing a SELECT
with ORDER
BY
on a view that is constructed from a
SELECT
statement containing a stored
function, the stored function was evaluated too many times.
(Bug#19862)
A SELECT
that used a subquery in the
FROM
clause that did not select from a
table failed when the subquery was used in a join. (Bug#21002)
Subqueries on INFORMATION_SCHEMA
tables
could erroneously return an empty result. (Bug#21231)
Issuing a SHOW CREATE FUNCTION
or
SHOW CREATE PROCEDURE
statement without
sufficient privileges could crash the mysql
client. (Bug#20664)
In a view defined with SQL SECURITY
DEFINER
, the CURRENT_USER()
function returned the invoker, not the definer. (Bug#20570)
DATE_ADD()
and
DATE_SUB()
returned NULL
when the result date was on the day
'9999-12-31'
. (Bug#12356)
For a DATE
parameter sent via a
MYSQL_TIME
data structure,
mysql_stmt_execute()
zeroed the hour,
minute, and second members of the structure rather than
treating them as read-only. (Bug#20152)
The DATA DIRECTORY
table option did not
work for TEMPORARY
tables. (Bug#8706)
If the files for an open table were removed at the OS level (external to the server), the server exited with an assertion failure. (Bug#16532)
Some memory leaks in the libmysqld
embedded
server were corrected. (Bug#16017)
With the auto_increment_increment
system
variable set larger than 1, if the next generated
AUTO_INCREMENT
value would be larger than
the column's maximum value, the value would be clipped down to
that maximum value and inserted, even if the resulting value
would not be in the generated sequence. This could cause
problems for master-master replication. Now the server clips
the value down to the previous value in the sequence, which
correctly produces a duplicate-key error if that value already
exists in the column. (Bug#20524)
If a table on a slave server had a higher
AUTO_INCREMENT
counter than the
corresponding master table (even though all rows of the two
tables were identical), in some cases
REPLACE
or INSERT ... ON DUPLICATE
KEY UPDATE
would not replicate properly using
statement-based logging. (Different values would be inserted
on the master and slave.) (Bug#20188)
mysqlslap did not enable the
CLIENT_MULTI_RESULTS
flag when connecting,
which is necessary for executing stored procedures. (Bug#20365)
When creating a table using CREATE...SELECT
and a stored procedure, there would be a mismatch between the
binary log and transaction cache which would cause a server
crash. (Bug#21039)
When run with the --use-threads
option,
mysqlimport returned a random exit code.
(Bug#21188)
The effect of a stored function or trigger that caused
AUTO_INCREMENT
values to be generated for
multiple tables was not logged properly if statement-based
logging was used. Only the first table's value was logged,
causing replication to fail. Under mixed logging format, this
is dealt with by switching to row-based logging for the
function or trigger. For statement-based logging, this remains
a problem. (Bug#19630)
Changing the definition of a DECIMAL
column
with ALTER TABLE
caused loss of column
values. (Bug#18014)
Under heavy load (executing more than 1024 simultaneous complex queries), a problem in the code that handles internal temporary tables could lead to writing beyond allocated space and memory corruption. Use of more than 1024 simultaneous cursors server wide also could lead to memory corruption. (This applies both to stored procedure and C API cursors.) (Bug#21206)
A race condition during slave server shutdown caused an assert failure. (Bug#20850)
mysqldump produced a malformed dump file when dumping multiple databases that contained views. (Bug#20221)
Partitions were represented internally as the wrong data type,
which led in some cases to failures of queries such as
SELECT COUNT(*) FROM INFORMATION_SCHEMA.PARTITIONS
WHERE PARTITION_NAME =
'
. (Bug#20340)
partition_name
'
Searches against a ZEROFILL
column of a
partitioned table could fail when the
ZEROFILL
column was part of the table's
partitioning key. (Bug#20733)
In mixed binary logging mode, a temporary switch from
statement-based logging to row-based logging occurs when
storing a row that uses a function such as
UUID()
into a temporary table. However,
temporary table changes are not written to the binary log
under row-based logging, so the row does not exist on the
slave. A subsequent select from the temporary table to a
non-temporary table using statement-based logging works
correctly on the master, but not on the slave where the row
does not exist. The fix for this is that replication does not
switch back from row-based logging to statement-based logging
until there are no temporary tables for the session. (Bug#20499)
Re-executing a stored procedure with a complex stored procedure cursor query could lead to a server crash. (Bug#15217)
Views created from prepared statements inside of stored
procedures were created with a definition that included both
SQL_CACHE
and
SQL_NO_CACHE
. (Bug#17203)
Updating a column of a FEDERATED
table to
NULL
sometimes failed. (Bug#16494)
Performing INSERT ... SELECT ... JOIN ...
USING
without qualifying the column names caused
ERROR 1052 "column 'x' in field list is
ambiguous"
even in cases where the column references
were unambiguous. (Bug#18080)
Closing of temporary tables failed if binary logging was not enabled. (Bug#20919)
For statements that have a DEFINER
clause
such as CREATE TRIGGER
or CREATE
VIEW
, long usernames or hostnames could cause a
buffer overflow. (Bug#16899)
mysqldump would not dump views that had
become invalid because a table named in the view definition
had been dropped. Instead, it quit with an error message. Now
you can specify the --force
option to cause
mysqldump to keep going and write a SQL
comment containing the view definition to the dump output.
(Bug#17371)
InnoDB
(Partitioning): Updating an
InnoDB
table using HASH
partitioning with a composite primary key would cause the
server to hang. (Bug#20852)
Old partition and subpartition files were not always removed
following ALTER TABLE ... REORGANIZE
PARTITION
statements. (Bug#20770)
Merging multiple partitions having subpartitions into a single
partition with subpartitions, or splitting a single partition
having subpartitions into multiple partitions with
subpartitions, could sometimes crash the server. These issues
were associated with a failure reported in the
partition_range
test. (Bug#20766, Bug#20767, Bug#20893, Bug#21357)
Some queries using ORDER BY ... DESC
on
subpartitioned tables could crash the server. (Bug#20389)
Referring to a stored function qualified with the name of one database and tables in another database caused a 「table doesn't exist」 error. (Bug#18444)
For NDB
and possibly
InnoDB
tables, a BEFORE
UPDATE
trigger could insert incorrect values. (Bug#18437)
For multiple INSERT DELAYED
statements
executed in a batch by the delayed-insert handler thread, not
all rows were written to the binary log. (Bug#20821)
Triggers on tables in the mysql
database
caused a server crash. Triggers for tables in this database
now are disallowed. (Bug#18005, Bug#18361)
The length of the pattern string prefix for
LIKE
operations was calculated incorrectly
for multi-byte character sets. As a result, the the scanned
range was wider than necessary if the prefix contained any
multi-byte characters, and rows could be missing from the
result set. (Bug#16674, Bug#18359)
Very complex SELECT
statements could create
temporary tables that were too big, but for which the
temporary files did not get removed, causing subsequent
queries to fail. (Bug#11824)
Multiple-table updates with FEDERATED
tables could cause a server crash. (Bug#19773)
On Windows, terminating mysqld with Control-C could result in a crash during shutdown. (Bug#18235)
Renaming a database to itself caused a server crash. (Bug#19392)
For spatial data types, the server formerly returned these as
VARSTRING
values with a binary collation.
Now the server returns spatial values as
BLOB
values. (Bug#10166)
Using tables from MySQL 4.x in MySQL 5.x, in particular those
with VARCHAR
fields and using
INSERT DELAYED
to update data in the table
would result in either data corruption or a server crash. (Bug#16611, Bug#16218, Bug#17294)
Using SELECT
and a table join while running
a concurrent INSERT
operation would join
incorrect rows. (Bug#14400)
Using SELECT
on a corrupt
MyISAM
table using the dynamic record
format could cause a server crash. (Bug#19835)
Checking a MyISAM
table (using
CHECK TABLE
) having a spatial index and
only one row would wrongly indicate that the table was
corrupted. (Bug#17877)
A Table ... doesn't exist error could occur for statements that called a function defined in another database. (Bug#17199)
SHOW GRANTS FOR CURRENT_USER
did not return
definer grants when executed in DEFINER
context (such as within a stored prodedure defined with
SQL SECURITY DEFINER
), it returned the
invoker grants. (Bug#15298)
Portions of statements related to partitioning were not
surrounded by version-specific comments by
mysqldump
, breaking backwards compatibility
for dump files. (Bug#19488)
A DELETE FROM table
with no
WHERE
clause (deleting all rows) running
concurrently with INSERT
statements on a
storage engine with row-level locking (such as
NDB
) could produce inconsistent results
when using statement-based replication. (Bug#19066)
Concatenating the results of multiple constant subselects produced incorrect results. (Bug#16716)
The use of MIN()
and
MAX()
on columns with a partial index
produced incorrect results in some queries. (Bug#18206)
The WITH CHECK OPTION
was not enforced when
a REPLACE
statement was executed against a
view. (Bug#19789)
For SELECT ... FOR UPDATE
statements that
used DISTINCT
or GROUP
BY
over all key parts of a unique index (or primary
key), the optimizer unnecessarily created a temporary table,
thus losing the linkage to the underlying unique index values.
This caused a Result set not updatable
error. (The temporary table is unnecessary because under these
circumstances the distinct or grouped columns must also be
unique.) (Bug#16458)
A buffer overwrite error in Instance Manager caused a crash. (Bug#20622)
Re-execution of a prepared multiple-table
DELETE
statement that involves a trigger or
stored function can result in a server crash. (Bug#19634)
On Windows, corrected a crash stemming from differences in Visual C runtime library routines from POSIX behavior regarding invalid file descriptors. (Bug#18275)
Creation of a view as a join of views or tables could fail if the views or tables are in different databases. (Bug#20482)
Use of MIN()
or MAX()
with GROUP BY
on a ucs2
column could cause a server crash. (Bug#20076)
INSERT INTO ... SELECT ... LIMIT 1
could be
slow because the LIMIT
was ignored when
selecting candidate rows. (Bug#9676)
Queries on tables that were partitioned by
KEY
and had a VARCHAR
column as the partitioning key produced an empty result set.
(Bug#20086)
The omission of leading zeros in dates could lead to erroneous results when these were compared with the output of certain date and time functions. (Bug#16377)
An invalid comparison between keys in partial indexes over
multi-byte character fields could lead to incorrect result
sets if the selected query execution plan used a range scan by
a partial index over a UTF8
character
field. This also caused incorrect results under similar
circumstances with many other character sets. (Bug#14896)
A prepared statement that altered partitioned table within a stored procedure failed with the error Unknown prepared statement handler. (Bug#17138)
A query selecting records from a single partition of a
partitioned table and using ORDER BY
(where
ic
DESCic
represents an indexed column)
could cause errors or crash the server. (Bug#20583)
NDB Cluster
(Disk Data): On some platforms,
ndbd compiled with gcc 4
would crash when attempting to run CREATE LOGFILE
GROUP
. (Bug#21981)
NDB Cluster
: Setting
TransactionDeadlockDetectionTimeout
to a
value greater than 12000 would cause scans to deadlock, time
out, fail to release scan records, until the cluster ran out
of scan records and stopped processing. (Bug#21800)
NDB Cluster
: Data was stored unevenly
between partitions due to all BLOB
data
being placed in partition 0. (Bug#21690)
NDB Cluster
: The server provided a
non-descriptive error message when encountering a fatally
corrupted REDO log. (Bug#21615)
NDB Cluster
: A partial rollback could lead
to node restart failures. (Bug#21536)
NDB Cluster
: The failure of a unique index
read due to an invalid schema version could be handled
incorrectly in some cases, leading to unpredictable results.
(Bug#21384)
NDB Cluster
: In a cluster with more than 2
replicas, a manual restart of one of the data nodes could fail
and cause the other nodes in its nodegroup to shut down. (Bug#21213)
NDB Cluster
: When the redo buffer ran out
of space, a Pointer too large error was
raised and the cluster could become unusable until restarted
with --initial
. (Bug#20892)
NDB Cluster
: In some situations with a high
disk-load, writing of the redo log could hang, causing a crash
with the error message GCP STOP
detected. (Bug#20904)
NDB Cluster
: A vague error message was
returned when reading of both schema files occurred during a
restart of the cluster. (Bug#20860)
NDB Cluster
: The server did not honor the
value set for ndb_cache_check_time
in the
my.cnf
file. (Bug#20708)
NDB Cluster
: The server failed with a
non-descriptive error message when out of data memory. (Bug#18475)
NDB Cluster
(Direct APIss): Invoking the
MGM API function ndb_mgm_listen_event()
caused a memory leak. (Bug#21671)
NDB Cluster
: The management client
ALL STATUS
command could sometimes report
the status of some data nodes incorrectly. (Bug#13985)
NDB Cluster
(Disk Data): Trying to create a
Disk Data table using a nonexistent tablespace or trying to
drop a nonexistent data file from a tablespace produced an
uninformative error message. (Bug#21751)
NDB Cluster
(Disk Data): Errors could occur
when dropping a data file during a node local checkpoint. (Bug#21710)
NDB Cluster
(Disk Data): Creating a
tablespace and log file group, then attempting to restart the
cluster without using the --initial
option
and without having created any Disk Data tables could cause a
forced shutdown of the cluster and raise a configuration
error. (Bug#21172)
NDB Cluster
: Responses to the ALL DUMP 1000
management client command were printed multiple times in the
cluster log for each cluster node. (Bug#21044)
A memory leak was found when running
ndb_mgm -e "SHOW"
. (Bug#21670)
NDB Cluster
(Direct APIs): The MGM API
function ndb_logevent_get_fd()
was not
actually implemented. (Bug#21129)
NDB Cluster
: Restarting a data node while
DDL operations were in progress on the cluster could cause
other data nodes to fail. This could also lead to
mysqld hanging or crashing under some
circumstances. (Bug#21017, Bug#21050)
NDB Cluster
: A cluster data node could
crash when an ordered index became full before the table
containing the index was full. (Bug#14935)
NDB Cluster
: The repeated creating and
dropping of a table would eventually lead to
NDB
Error 826, Too many tables
and attributes ... Insufficient space. (Bug#20847)
NDB Cluster
: REPLACE
statements did not work correctly on an NDB
table having both a primary key and a unique key. In such
cases, proper values were not set for columns which were not
explicitly referenced in the statement. (Bug#20728)
NDB Cluster
: Trying to create or drop a
table while a node was restarting caused the node to crash.
This is now handled by raising an error. (Bug#18781)
NDB Cluster
: A race condition could in some
cirumstances following a DROP TABLE
. (Bug#20897)
NDB Cluster
: Running
ndbd
--nowait-nodes=
where id
id
was the node ID of a node
that was already running would fail with an invalid error
message. (Bug#20419)
NDB Cluster
: When stopping and restarting
multiple data nodes, the last node to be restarted would
sometimes hang in Phase 100. (Bug#19645)
NDB Cluster
: The
DATA_LENGTH
and
AVG_ROW_LENGTH
columns of the
INFORMATION_SCHEMA.TABLES
table did not
report the size of variable-width column values correctly.
(Bug#18413)
See 項21.2. 「INFORMATION_SCHEMA TABLES
テーブル」, for more information.
NDB Cluster
: When attempting to restart the
cluster following a data import, the cluster would fail during
Phase 4 of the restart with Error 2334: Job buffer
congestion. (Bug#20774)
NDB Cluster
: A node failure during a scan
could sometime cause the node to crash when restarting too
quickly following the failure. (Bug#20197)
NDB Cluster
: It was possible to use port
numbers greater than 65535 for ServerPort
in the config.ini
file. (Bug#19164)
NDB Cluster
(Replication): In some cases, a
large number of MySQL servers sending requests to the cluster
simultaneously could cause the cluster to crash. This could
also be triggered by many NDB API clients making simultaneous
event subscriptions or unsubscriptions. (Bug#20683)
NDB Cluster
(Direct APIs):
NdbScanOperation::readTuples()
and
NdbIndexScanOperation::readTuples()
ignored
the batch
parameter. (Bug#20252)
NDB Cluster
: Cluster system status
variables were not updated. (Bug#11459)
NDB Cluster
(Disk Data): Trying to create
Disk Data tables when running the cluster in diskless mode
would crash the cluster's data nodes. (Bug#20008)
Note: Disk Data tables are now disabled when running in diskless mode.
NDB Cluster
(Disk Data): A data file
created on one tablespace could be dropped using
ALTER TABLESPACE ... DROP DATAFILE
on a
different tablespace. (Bug#20053)
NDB Cluster
: Truncating a table on one
mysqld caused other
mysqld processes in the cluster to return
ERROR 1412 (HY000): Table definition has changed,
please retry transaction on subsequent queries.
(Bug#20705)
NDB Cluster
: The cluster's data nodes would
fail while trying to load data when
NoOfFrangmentLogFiles
was equal to 1. (Bug#19894)
NDB Cluster
: A problem with error handling
when ndb_use_exact_count
was enabled could
lead to incorrect values returned from queries using
COUNT()
. A warning is now returned in such
cases. (Bug#19202)
NDB Cluster
: Restarting a failed node could
crash the cluster. (Bug#18782)
NDB Cluster
(Disk Data): The failure of a
CREATE TABLESPACE
or CREATE
LOGFILE GROUP
statement did not revert all changes
made prior to the point of failure. (Bug#16341)
NDB Cluster
: Creating tables with
variable-size columns caused DataMemory
to
be used but not freed when the tables were dropped. (Bug#20007)
NDB Cluster
: Restoring a backup made using
ndb_restore failed when the backup had been
taken from a cluster whose data memory was full. (Bug#19852)
NDB Cluster
: An excessive number of
ALTER TABLE
operations could cause the
cluster to fail with NDB error code 773 (Out of
string memory, please modify StringMemory). (Bug#19275)
NDB Cluster
: TEXT
columns in Cluster tables having both an explicit primary key
and a unique key were not correctly updated by
REPLACE
statements. (Bug#19906)
NDB Cluster
: Running out of DataMemory
could sometimes crash ndbd and
mysqld processes. (Bug#19185)
NDB Cluster
(Replication): A node failure
could send duplicate events, causing a
mysqld replicating tables containing
BLOB
s to crash.
NDB Cluster
(Disk Data):
INFORMATION_SCHEMA.FILES
records for
UNDO
files showed incorrect values in the
EXTENT_SIZE
,
FREE_EXTENTS
, and
TOTAL_EXTENTS
columns. (Bug#20073)
NDB Cluster
: An internal formatting error
caused some management client error messages to be unreadable.
(Bug#20016)
NDB Cluster
: Running management client
commands while mgmd was in the process of
disconnecting could cause the management server to fail. (Bug#19932)
NDB Cluster
(NDBAPI): Update operations on
blobs were not checked for illegal operations.
Note: Read locks with blob update operations are now upgraded from read committed to read shared.
NDB Cluster
: The management client
ALL STOP
command shut down
mgmd processes (as well as
ndbd processes). (Bug#18966)
NDB Cluster
: Renaming of table columns was
not supported as fast a ALTER TABLE
for NDB
tables. (Bug#20456)
NDB Cluster
: Under some circumstances,
repeated DDL operations on one mysqld
could
cause failure of a second mysqld
attached
to the same cluster. (Bug#19770)
NDB Cluster
(Replication): One or more of
the mysqld processes could fail when
subjecting a Cluster replication setup with multiple
mysqld processes on both the master and
slave clusters to high loads. (Bug#19768)
NDB Cluster
: LOAD DATA
LOCAL
failed to ignore duplicate keys in Cluster
tables. (Bug#19496)
NDB Cluster
: Repeated
CREATE
- INSERT
-
DROP
operations tables could in some
circumstances cause the MySQL table definition cache to become
corrupt, so that some mysqld processes
could access table information but others could not. (Bug#18595)
NDB Cluster
(Disk Data): Running a large
nbumber of scans on Disk Data could cause subsequent scans to
perform poorly. (Bug#20334)
NDB Cluster
(Disk Data): An issue with disk
allocation could sometimes cause a forced shutdown of the
cluster when running a mix of memory and Disk Data tables.
(Bug#18780)
NDB Cluster
: The mgm
client command ALL CLUSTERLOG
STATISTICS=15;
had no effect. (Bug#20336)
NDB Cluster
: Under certain conditions, a
starting node could miss transactions, leading to
inconsistencies between the primary and backup replicas. (Bug#19929)
NDB Cluster
: An uncommitted row could
sometimes be checkpointed and thus incorrectly included in a
backup. (Bug#19928)
NDB Cluster
: A DELETE
of
many rows immediately followed by an INSERT
on the same table could cause the ndbd
process on the backup replica to crash. (Bug#19293)
NDB Cluster
: TRUNCATE
TABLE
failed to reset the
AUTO_INCREMENT
counter. (Bug#18864)
NDB Cluster
: SELECT ... FOR
UPDATE
failed to lock the selected rows. (Bug#18184)
NDB Cluster
: New mysqld
processes were allowed to connect without a restart of the
cluster, causing the cluster to crash. (Bug#13266)
NDB Cluster
: The failure of a data node
when preparing to commit a transaction (that is, while the
node's status was CS_PREPARE_TO_COMMIT
)
could cause the failure of other cluster data nodes. (Bug#20185)
NDB Cluster
: Renaming a table in such a way
as to move it to to a different database failed to move the
table's indexes. (Bug#19967)
NDB Cluster
: SHOW ENGINE NDB
STATUS
could sometimes return an incorrect value of
0
for the latest epoch, which could cause
problems with synchronising the binlog. (Bug#20142)
NDB Cluster
: A CREATE
TABLE
statement involving foreign key constraints
raised an error rather than being silently ignored (see
項12.1.8. 「CREATE TABLE
構文」). (Bug#18483)
This bug affected Cluster in MySQL 5.1 only.
NDB Cluster
(Replication): Data definition
and data manipulation statements on different tables were not
serialised correctly in the binlog. For example, there was no
guarantee that a CREATE TABLE
statement and
an update on a different table would occur in the same order
in the binlog as they did on the cluster being replicated.
(Bug#18947)
NDB Cluster
: Resources for unique indexes
on Cluster table columns were incorrectly allocated, so that
only one-fourth as many unique indexes as indicated by the
value of UniqueHashIndexes
could be
created. (Bug#19623)
A cast problem caused incorrect results for prepared statements that returned float values when MySQL was compiled with gcc 4.0. (Bug#19694)
Some queries that used ORDER BY
and
LIMIT
performed quickly in MySQL 3.23, but
slowly in MySQL 4.x/5.x due to an optimizer problem. (Bug#4981)
mysql_upgrade was missing from binary MySQL distributions. (Bug#18516, Bug#20403, Bug#20556)
It was possible using ALTER EVENT ... RENAME
...
to move an event to a database on which the user
did not have the EVENT
privilege. (Bug#18897)
A number of dependency issues in the RPM
bench
and test
packages
caused installation of these packages to fail. (Bug#20078)
Queries using an indexed column as the argument for the
MIN()
and MAX()
functions following an ALTER TABLE .. DISABLE
KEYS
statement returned Got error 124
from storage engine until ALTER TABLE ...
ENABLE KEYS
was run on the table. (Bug#20357)
A redundant table map event could be generated in the binary log when there were no actual changes to a table being replicated. In addition, a slave failed to stop when attempting to replicate a table that did not exist on the slave. (Bug#18948)
Multiple calls to a stored procedure that altered a
partitioned MyISAM
table would cause the
server to crash. (Bug#19309)
Adding an index to a partitioned table that had been created
using AUTO_INCREMENT =
caused the
value
AUTO_INCREMENT
value to be reset. (Bug#19281)
A CREATE TABLE
that produced a
The PARTITION function returns the wrong
type error also caused an Incorrect
information in file to be printed to
STDERR
, and a junk file to be left in the
database directory. (Bug#16000)
Nested natural joins worked executed correctly when executed
as a non-prepared statement could fail with an
Unknown column '
error when executed as a prepared
statement, due to a name resolution problem. (Bug#15355)
col_name
'
in 'field list'
The max_length
metadata value for columns
created from CONCAT()
could be incorrect
when the collation of an argument differed from the collation
of the CONCAT()
itself. In some contexts
such as UNION
, this could lead to
truncation of the column contents. (Bug#15962)
The MD5() and SHA() functions treat their arguments as case-sensitive strings. But when they are compared, their arguments were compared as case-insensitive strings, which leads to two function calls with different arguments (and thus different results) compared as being identical. This can lead to a wrong decision made in the range optimizer and thus to an incorrect result set. (Bug#15351)
For BOOLEAN
mode full-text searches on
non-indexed columns, NULL
rows generated by
a LEFT JOIN
caused incorrect query results.
(Bug#14708)
If the general log table reached a large enough file size
(27GB), SELECT COUNT(*)
on the table caused
a server crash. (Bug#17589)
Identifiers could not contain bytes with a value of 255, though that should be allowed as of the identifier-encoding changes made in MySQL 5.1.6. (Bug#12982)
BIT
columns in a table could cause joins
that use the table to fail. (Bug#18895)
A UNION
over more than 128
SELECT
statements that use an aggregate
function failed. (Bug#18175)
InnoDB
unlocked its data directory before
committing a transaction, potentially resulting in
non-recoverable tables if a server crash occurred before the
commit. (Bug#19727)
Multiple-table DELETE
statements containing
a subquery that selected from one of the tables being modified
caused a server crash. (Bug#19225)
With settings of read_buffer_size
>= 2G
and read_rnd_buffer_size
>=2G,
LOAD DATA INFILE
failed with no error
message or caused a server crash for files larger than 2GB.
(Bug#12982)
REPLACE
statements caused activation of
UPDATE
triggers, not
DELETE
and INSERT
triggers. (Bug#13479)
The thread for INSERT DELAYED
rows was
maintaining a separate AUTO_INCREMENT
counter, resulting in incorrect values being assigned if
DELAYED
and non-DELAYED
inserts were mixed. (Bug#20195)
mysqldump wrote an extra pair of
DROP DATABASE
and CREATE
DATABASE
statements if run with the
--add-drop-database
option and the database
contained views. (Bug#17201)
Shutting down a slave in a replication scenario where temporary tables are in use would cause the slave to produce a core dump. (Bug#19881)
When a statement is executed that does not generate any rows, an extra table map event and associated binrows event would be generated and written to the binary log. (Bug#19995)
File size specifications for InnoDB data files were case sensitive. (Bug#19609)
Compilation on Windows would fail if row based replication was
disabled using
--without-row-based-replication
. (Bug#16837)
InnoDB did not increment the
handler_read_prev
counter. (Bug#19542)
In the INFORMATION_SCHEMA.FILES
table, the
INITIAL_SIZE
,
MAXIMUM_SIZE
, and
AUTOEXTEND_SIZE
columns incorrectly were
being stored as VARCHAR
rather than
BIGINT
. (Bug#19544).
For mysqld, Valgrind revealed problems that
were corrected: Possible uninitialized data in a string
comparison (Bug#20783); memory corruption in replication
slaves when switching databases (Bug#19022); syscall write
parameter pointing to uninitialized byte (Bug#20579);
uninitialized doublewrite memory in InnoDB
(Bug#20791).
For ndb_mgmd, Valgrind revealed problems that were corrected: A memory leak (Bug#19318); a dependency on an uninitialized variable (Bug#20333).
An update that used a join of a table to itself and modified the table on both sides of the join reported the table as crashed. (Bug#18036)
SSL connections using yaSSL on OpenBSD could fail. (Bug#19191)
Following a failed attempt to add an index to an
ARCHIVE
table, it was no longer possible to
drop the database in which the table had been created. (Bug#17310)
Using ALTER TABLE ... ENGINE =
, where
x
x
was not a storage engine
supported by the server, would cause mysqld
to crash. (Bug#20397)
Defining a table partitioned by LIST
with a
single PARTITION ... VALUES IN (NULL)
clause could lead to server crashes, particularly with queries
having WHERE
conditions comparing the
partitioning key with a constant. (Bug#19801 / Bug#20268)
Values greater than 2 gigabytes used in the VALUES LESS THAN clause of a table partitioned by RANGE were treated as negative numbers. (Bug#16002)
The fill_help_tables.sql
file did not
load properly if the ANSI_QUOTES
SQL mode
was enabled. (Bug#20542)
The fill_help_tables.sql
file did not
contain a SET NAMES 'utf8'
statement to
indicate its encoding. This caused problems for some settings
of the MySQL character set such as big5
.
(Bug#20551)
The --default-storage-engine
server option
did not work. (Bug#20168)
The MySQL server startup script /etc/init.d/mysql (created from mysql.server) is now marked to ensure that the system services ypbind, nscd, ldap, and NTP are started first (if these are configured on the machine). (Bug#18810)
For a reference to a non-existent index in FORCE
INDEX
, the error message referred to a column, not
an index. (Bug#17873)
The EGNINE
clause was displayed in the
output of SHOW CREATE TABLE
for partitioned
tables when the SQL mode included
no_table_options
. (Bug#19695)
ALTER TABLE ... COALESCE PARTITION
did not
delete the files associated with the partitions that were
removed. (Bug#19305)
ALTER TABLE ... REBUILD PARTITION
could
cause the server to hang or crash. (Bug#19122)
Some yaSSL public function names conflicted with those from
OpenSSL, causing conflicts for applications that linked
against both OpenSSL and a version of
libmysqlclient
that was built with yaSSL
support. The yaSSL public functions now are renamed to avoid
this conflict. (Bug#19575)
CHECK TABLE
on a MyISAM
table briefly cleared its AUTO_INCREMENT
value, while holding only a read lock. Concurrent inserts to
that table could use the wrong
AUTO_INCREMENT
value. CHECK
TABLE
no longer modifies the
AUTO_INCREMENT
value. (Bug#19604)
If there is a global read lock, CREATE
DATABASE
, RENAME DATABASE
, and
DROP DATABASE
could deadlock. (Bug#19815)
EXPLAIN PARTITIONS
would produce illegible
output in the partitions
column if the
length of text to be displayed in that column was too long.
This could occur when very many partitions were defined for
the table, partitions were given very long names, or due to a
combination of the two. (Bug#19684)
Trying to execute a query having a WHERE
clause using
on a
partitioned table whose partitioning or subpartitioning
function used the integer column
int_col
=
"string_value
" OR
int_col
IS NULLint_col
would crash the server.
(Bug#19055)
On Linux, libmysqlclient
when compiled with
yaSSL using the icc compiler had a spurious
dependency on C++ libraries. (Bug#20119)
In MySQL 5.1.11, the --with-openssl
and
--with-yassl
options were replaced by
--with-ssl
. But no message was issued if the
old options were given. Now configure
produces a message indicating that the new option should be
used and exits. (Bug#20002)
Grant table modifications sometimes did not refresh the
in-memory tables if the hostname was ''
or
not specified. (Bug#16297)
Invalid escape sequences in option files caused MySQL programs that read them to abort. (Bug#15328)
Using ALTER TABLE
on a subpartitioned table
caused the server to crash. (Bug#19067)
For a table having LINEAR HASH
subpartitions, the LINEAR
keyword did not
appear in the SUBPARTITION_METHOD
column of
the INFORMATION_SCHEMA.PARTITIONS
table.
(Bug#20161)
Race conditions on certain platforms could cause the Instance Manager to fail to initialize. (Bug#19391)
ALTER TABLE
on a table created prior to
5.0.3 would cause table corruption if the ALTER
TABLE
did one of the following:
Change the default value of a column.
Change the table comment.
Change the table password.
An ALTER TABLE
operation that does not need
to copy data, when executed on a table created prior to MySQL
4.0.25, could result in a server crash for subsequent accesses
to the table. (Bug#19192)
The binary log lacked character set information for table name when dropping temporary tables. (Bug#14157)
A B-TREE
index on a
MEMORY
table erroneously reported duplicate
entry error for multiple NULL
values. (Bug#12873)
Race conditions on certain platforms could cause the Instance Manager to try to restart the same instance multiple times. (Bug#18023)
OPTIMIZE TABLE
and REPAIR
TABLE
yielded incorrect messages or warnings when
used on partitioned tables. (Bug#17455)
Selecting data from a MEMORY
table with a
VARCHAR
column and a
HASH
index over it returned only the first
row matched. (Bug#18233)
RPM packages had spurious dependencies on Perl modules and other programs. (Bug#13634)