Bugs fixed:
* InnoDB; Partitioning: The CREATE_TIME column of the INFORMATION_SCHEMA.TABLES table now shows the correct table creation time for partitioned InnoDB tables. The CREATE_TIME column of the INFORMATION_SCHEMA.PARTITIONS table now shows the correct partition creation time for a partition of partitioned InnoDB tables.
The UPDATE_TIME column of the INFORMATION_SCHEMA.TABLES table now shows when a partitioned InnoDB table was last updated by an INSERT, DELETE, or UPDATE. The UPDATE_TIME column of the INFORMATION_SCHEMA.PARTITIONS table now shows when a partition of a partitioned InnoDB table was last updated.
* InnoDB: An assertion was raised on shutdown due to XA PREPARE transactions holding explicit locks.
* InnoDB: Removal of a foreign key object from the data dictionary cache during error handling caused the server to exit.
* InnoDB: SHOW ENGINE INNODB STATUS output showed negative reservation and signal count values due to a counter overflow error.
* InnoDB: Estimates that were too low for the size of merge chunks in the result sorting algorithm caused a server exit.
* SHOW VARIABLES mutexes were being locked twice, resulting in a server exit.
* A Provides rule in RPM .spec files misspelled “mysql-embedded” as “mysql-emdedded”.
* Under certain conditions, the libedit command-line library could write outside an array boundary and cause a client program crash.
* Host value matching for the grant tables could fail to use the most specific of values that contained wildcard characters.
* A user with a name of event_scheduler could view the Event Scheduler process list without the PROCESS privilege.
* SHOW GRANTS after connecting using a proxy user could display the password hash of the proxied user.
* For a prepared statement with an ORDER BY that refers by column number to a GROUP_CONCAT() expression that has an outer reference, repeated statement execution could cause a server exit.
* Loading corrupt spatial data into a MyISAM table could cause the server to exit during index building.
* Certain queries for the INFORMATION_SCHEMA TABLES and COLUMNS tables could lead to excessive memory use when there were large numbers of empty InnoDB tables.
* MySQL failed to compile using OpenSSL 0.9.8e.
InnoDB: An ALTER TABLE ... ADD FOREIGN KEY operation could cause a serious error.
InnoDB: With a transaction isolation level less than or equal to READ COMMITTED, gap locks were not taken when scanning a unique secondary index to check for duplicates. As a result, duplicate check logic failed allowing duplicate key values in the unique secondary index.
InnoDB: During recovery, a segmentation fault would occur when marking a table as corrupt.
yaSSL client code did not validate the encryption size or session ID length, which could cause the client to exit.
MySQL installation from RPM packages could fail if Postfix had been installed using yum.
yaSSL could fail preauthorization if the client supplied inaccurate buffer lengths.
Competition between threads could lead to timeout failure trying to rotate the audit log file.
On Linux (OEL6), if Sun DTrace was installed, the MySQL build failed.
LPAD() and RPAD() could cause a server exit if the pad string argument was not well formed.
The optimizer could create a zero-length column for a temporary table, causing a server exit.
Functionality Added or Changed
On Solaris, mysql_config --libs now includes -R/path/to/library so that libraries can be found at runtime.
Bugs Fixed
InnoDB: A regression introduced by Bug 14329288 would result in a performance degradation when a compressed table does not fit into memory.
InnoDB: The maximum value for innodb_thread_sleep_delay is now 1000000 microseconds. The previous maximum value (4294967295 microseconds on 32-bit and 18446744073709551615 microseconds on 64-bit) was unnecessarily large. Because the maximum value of innodb_thread_sleep_delay is limited by the value set for innodb_adaptive_max_sleep_delay (when set to a non-zero value), the maximum value for innodb_thread_sleep_delay is now the same as the maximum value for innodb_adaptive_max_sleep_delay.
InnoDB: In debug builds, creating a unique index on a binary column, with input data containing duplicate keys, would cause an assertion.
InnoDB: InnoDB would fail to start when innodb_data_file_path specified the data file size in kilobytes by appending K to the size value.
InnoDB: An insert buffer merge would cause an assertion error due to incorrectly handled ownership information for externally stored BLOBs.
InnoDB: Assertion failure in thread thread_num in file ibuf0ibuf.cc line 4080
InnoDB: Failing assertion: rec_get_deleted_flag(rec, page_is_comp(page))
InnoDB: Decreasing the auto_increment_increment value would have no affect on the next auto-increment value.
Replication: The server did not handle correctly the insertion of a row larger than 4 GB when using row-based replication.
Replication: When using row-based replication, an additional auto-increment column on the slave version of a table was not updated correctly; a zero was inserted instead.
Replication: Statements involving the Performance Schema tables should not be written to the binary log, because the content of these tables is applicable only to a given MySQL Server instance, and may differ greatly between different servers in a replication topology. The database administrator should be able to configure (INSERT, UPDATE, or DELETE) or flush (TRUNCATE TABLE) performance schema tables on a single server without affecting others. However, when replicating from a MySQL 5.5 master to a MySQL 5.5 or later slave, warnings about unsafe statements updating Performance Schema tables were elevated to errors. For MySQL 5.6 and later slaves, this prevented the simultaneous use of performance_schema and GTIDs (see Replication with Global Transaction Identifiers, in the MySQL 5.6 Manual).
This fix causes all updates on tables in the performance_schema database to be filtered on the master and not replicated, regardless of the type of logging that is in effect. Prior to this fix, statements using were handled by being marked as unsafe for replication, which caused warnings during execution; the statements were nonetheless written to the binary log, regardless of the logging format in effect.
Existing replication behavior for tables in the INFORMATION_SCHEMA database is not changed by this fix.
For more information, see MySQL Performance Schema.
Compilation failed if MySQL was configured with CFLAGS set to include a -Werror option with an argument.
A shared libmysqld embedded server library was not built on Linux.
While printing the server version, the mysql client did not check for buffer overflow in a string variable.
Contraction information in a collation could be mishandled, resulting in incorrect decisions about whether a character is part of a contraction, and miscalculation of contraction weights.
DROP TRIGGER succeeded even with the read_only system variable enabled.
Updating the Performance Schema setup_instruments table on a replication master caused a slave to exit.
Due to a race condition, it was possible for two threads to end up with the same query ID for different queries.
When run by root, mysqld --help --verbose exited with a nonzero error code after displaying the help message.
MySQL client programs from a Community Edition distribution could not connect using SSL to a MySQL server from an Enterprise Edition. This was due to a difference in certificate handling by yaSSL and OpenSSL (used for Community and Enterprise, respectively). OpenSSL expected a blank certificate to be sent when not all of the --ssl-ca, --ssl-cert, and --ssl-key options were specified, and yaSSL did not do so. To resolve this, yaSSL has been modified to send a blank certificate when an option is missing.
A deadlock error occurring during subquery execution could cause an assertion to be raised.
The Performance Schema stage/sql/Waiting to get readlock instrument is no longer used and has been removed.
For system variables that take a string value, SET statements permitted an unquoted value, but values that contained dots were parsed incorrectly and only part of the value was assigned. For example, SET GLOBAL slow_query_log_file = my_slow.log assigned the value my_slow. Now such values must be quoted or an error occurs.
On Windows, mysql_install_db.pl could be run only from within the bin directory under the installation directory.
The internal interface of the Thread Pool plugin has changed. Old versions of the plugin will work with current versions of the server, but versions of the server older than 5.5.28 will not work with current versions of the plugin.
Bugs Fixed
InnoDB: Certain information_schema tables originally introduced in MySQL 5.6 are now also available in MySQL 5.5 and MySQL 5.1: INNODB_BUFFER_PAGE, INNODB_BUFFER_PAGE_LRU, and INNODB_BUFFER_POOL_STATS.
InnoDB: When a SELECT ... FOR UPDATE, UPDATE, or other SQL statement scanned rows in an InnoDB table using a < or <= operator in a WHERE clause, the next row after the affected range could also be locked. This issue could cause a lock wait timeout for a row that was not expected to be locked. The issue occurred under various isolation levels, such as READ COMMITTED and REPEATABLE READ.
Partitioning: For tables using PARTITION BY HASH or PARTITION BY KEY, when the partition pruning mechanism encountered a multi-range list or inequality using a column from the partitioning key, it continued with the next partitioning column and tried to use it for pruning, even if the previous column could not be used. This caused partitions which possibly matched one or more of the previous partitioning columns to be pruned away, leaving partitions that matched only the last column of the partitioning key.
This issue was triggered when both of the following conditions were met:
The columns making up the table's partitioning key were used in the same order as in the partitioning key definition by a SELECT statement's WHERE clause as in the column definitions;
The WHERE condition used with the last column of the partitioning key was satisfied only by a single value, while the condition testing some previous column from the partitioning key was satisfied by a range of values.
An example of a statement creating a partitioned table and a query against this for which the issue described above occurred is shown here:
CREATE TABLE t1 (
c1 INT,
c2 INT,
PRIMARY KEY(c2, c1)
) PARTITION BY KEY() # Use primary key as partitioning key
PARTITIONS 2;
SELECT * FROM t1 WHERE c2 = 2 AND c1 <> 2;
This issue is resolved by ensuring that partition pruning skips any remaining partitioning key columns once a partition key column that cannot be used in pruning is encountered.
Partitioning: The buffer for the row currently read from each partition used for sorted reads was allocated on open and freed only when the partitioning handler was closed or destroyed. For SELECT statements on tables with many partitions and large rows, this could cause the server to use excessive amounts of memory.
This issue has been addressed by allocating buffers for reads from partitioned tables only when they are needed and freeing them immediately once they are no longer needed. As part of this fix, memory is now allocated for reading from rows only in partitions that have not been pruned (see Section 18.4, “Partition Pruning”).
Replication: On 64-bit Windows platforms, values greater than 4G for the max_binlog_cache_size and max_binlog_stmt_cache_size system variables were truncated to 4G. This caused LOAD DATA INFILE to fail when trying to load a file larger than 4G in size, even when max_binlog_cache_size was set to a value greater than this.
Replication: In master-master replication with --log-slave-updates enabled, setting a user variable and then performing inserts using this variable caused the Exec_master_log_position column in the output of SHOW SLAVE STATUS not to be updated.
The RPM spec file now also runs the test suite on the new binaries, before packaging them.
The libmysqlclient_r client library exported symbols from yaSSL that conflict with OpenSSL. If a program linked against that library and libcurl, it could crash with a segmentation fault.
The argument for LIMIT must be an integer, but if the argument was given by a placeholder in a prepared statement, the server did not reject noninteger values such as '5'.
The Thread Pool plugin did not respect the wait_timeout timeout for client sessions.
CHECK TABLE and REPAIR TABLE could crash if a key definition differed in the .frm and .MYI files of a MyISAM table. Now the server produces an error.
A query for a FEDERATED table could return incorrect results when the underlying table had a compound index on two columns and the query included an AND condition on the columns.
mysqlhotcopy failed for databases containing views.
The argument to the --ssl-key option was not verified to exist and be a valid key. The resulting connection used SSL, but the key was not used.
Adding a LIMIT clause to a query containing GROUP BY and ORDER BY could cause the optimizer to choose an incorrect index for processing the query, and return more rows than required.
mysqlbinlog did not accept input on the standard input when the standard input was a pipe.
* The default thread-handling model in MySQL Server executes statements using
one thread per client connection.
* Commercial distributions of MySQL now include two plugins that enable MySQL
Server to use external authentication methods to authenticate MySQL users
* Important Change: Replication: The RESET SLAVE statement has been extended
with an ALL keyword.
* A new utility, mysql_plugin, enables MySQL administrators to manage which
plugins a MySQL server loads.
* Bugs fixed.
* CMake configuration support on Linux now provides a boolean ENABLE_GCOV
option to control whether to include support for gcov.
* InnoDB now permits concurrent reads while creating a secondary index.
* Client programs now display more information for SSL errors to aid in
diagnosis and debugging of connection problems.
* In the audit plugin interface, the event_class member was removed from the
mysql_event_general structure and the calling sequence for the notification
function changed. Originally, the second argument was a pointer to the event
structure. The function now receives this information as two arguments: an
event class number and a pointer to the event. Corresponding to these
changes, MYSQL_AUDIT_INTERFACE_VERSION was increased to 0x0300.
* The plugin_audit.h header file, and the NULL_AUDIT example plugin in the
plugin/audit_null directory have been modified per these changes. See
Section 21.2.4.7, “Writing Audit Plugins”.
* Bug fixes.
* Fixed bugs: Illegal mix of collations
* Problem: comparison of a DATETIME sp variable and NOW() led to Illegal mix of
collations error when character_set_connection=utf8.
* Error happened in Arg_comparator::set_compare_func(), because the first
argument was errouneously converted to utf8, while the second argument was
not.
* Fix: separate agg_arg_charsets_for_comparison() into two functions:
- agg_arg_charsets_for_comparison() - for pure comparison, when we don't need
to return any string result and therefore don't need to convert arguments
to @@character_set_connection:
SELECT a = b;
- agg_arg_charsets_for_string_results_with_comparison() - when we need to
return a string result, but we also need to do comparison internally:
SELECT REPLACE(a,b,c)
If all arguments are numbers:
SELECT REPLACE(123,2,3) -> 133
we convert arguments to @@character_set_connection.
popular database language in the world. MySQL is a client-server implementation
that consists of a server daemon `mysqld' and many different client
programs/libraries.
The main goals of MySQL are speed and robustness.
The base upon which MySQL is built is a set of routines that have been used in
a highly demanding production environment for many years. While MySQL is still
in development it already offers a rich and highly useful function set.
The official way to pronounce 'MySQL' is 'My Ess Que Ell' (Not MY-SEQUEL).
This package contains the MySQL client programs and libraries.