持續蓬勃發展的資料庫軟體Mysql官方日前釋出了各平台的Mysql 5.0.21版本,繼不久前才推出的Mysql 5.0.21只差14天,也是和Mysql 4.1一樣,針對安全性方面和bug的更新。另外,測試中的Mysql 5.1,最新的版本是一個月推出的5.1.9 ,尚未有新版本release。
Mysql 5.0.21更新下載頁面
Mysql 5.0.21功能與bug更新列表
這次更新與修正的內容如下:
Functionality added or changed:
*
Security enhancement: Added the global max_prepared_stmt_count system variable to limit the total number of prepared statements in the server. This limits the potential for denial-of-service attacks based on running the server out of memory by preparing huge numbers of statements. The current number of prepared statements is available through the prepared_stmt_count system variable. (Bug#16365)
*
The MySQL-shared-compat-5.0.X-.i386.rpm shared compatibility RPMs no longer contain libraries for MySQL 5.1. This avoids a conflict because the 5.0 and 5.1 libraries share the same soname number. It contains libraries for 3.23, 4.0, 4.1, and 5.0. (Bug#19288)
*
Creating a table in an InnoDB database with a column name that matched the name of an internal InnoDB column (including DB_ROW_ID, DB_TRX_ID, DB_ROLL_PTR and DB_MIX_ID) would cause a crash. MySQL now returns error 1005 (cannot create table) with errno set to -1. (Bug#18934)
*
NDB Cluster: It is now possible to perform a partial start of a cluster. That is, it is now possible to bring up the cluster without running ndbd –initial on all configured data nodes first. (Bug#18606)
*
NDB Cluster: It is now possible to install MySQL with Cluster support to a non-default location and change the search path for font description files using either the –basedir or –character-sets-dir options. (Previously in MySQL 5.0, ndbd searched only the default path for character sets.)
*
In result set metadata, the MYSQL_FIELD.length value for BIT columns now is reported in number of bits. For example, the value for a BIT(9) column is 9. (Formerly, the value was related to number of bytes.) (Bug#13601)
*
The default for the innodb_thread_concurrency system variable was changed to 8. (Bug#15868)
Bugs fixed:
*
Security fix: A malicious client, using specially crafted invalid login or COM_TABLE_DUMP packets was able to read uninitialized memory, which potentially, though unlikely in MySQL, could have led to an information disclosure. (CVE-2006-1516, CVE-2006-1517) Thanks to Stefano Di Paola <stefano.dipaola@wisec.it> for finding and reporting this bug.
*
Security fix: A malicious client, using specially crafted invalid COM_TABLE_DUMP packets was able to trigger an exploitable buffer overflow on the server. (CVE-2006-1518) Thanks to Stefano Di Paola <stefano.dipaola@wisec.it> for finding and reporting this bug.
*
NDB Cluster: A simultaneous DROP TABLE and table update operation utilising a table scan could trigger a node failure. (Bug#18597)
*
mysql-test-run could not be run as root. (Bug#17002)
*
MySQL-shared-compat-5.0.13-0.i386.rpm, MySQL-shared-compat-5.0.15-0.i386.rpm, MySQL-shared-compat-5.0.18-0.i386.rpm, MySQL-shared-compat-5.0.19-0.i386.rpm, MySQL-shared-compat-5.0.20-0.i386.rpm, and MySQL-shared-compat-5.0.20a-0.i386.rpm incorrectly depended on glibc 2.3 and could not be installed on a glibc 2.2 system. (Bug#16539)
*
IA-64 RPM packages for Red Hat and SuSE Linux that were built with the icc compiler incorrectly depended on icc runtime libraries. (Bug#16662)
*
Updates to a MEMORY table caused the size of BTREE indexes for the table to increase. (Bug#18610)
*
REPAIR TABLE did not restore the length for packed keys in tables created under MySQL 4.x. (Bug#17810)
*
After calling FLUSH STATUS, the max_used_connections variable did not increment for existing connections and connections which use the thread cache. (Bug#15933)
*
MySQL would not compile on Linux distributions that use the tinfo library. (Bug#18912)
*
Within a trigger, CONNECTION_ID() did not return the connection ID of the thread that caused the trigger to be activated. (Bug#16461)
*
The yaSSL library returned a cipher list in a manner incompatible with OpenSSL. (Bug#18399)
*
For single-SELECT union constructs of the form (SELECT … ORDER BY order_list1 [LIMIT n]) ORDER BY order_list2, the ORDER BY lists were concatenated and the LIMIT clause was ignored. (Bug#18767)
*
CREATE VIEW statements would not be replicated to the slave if the –replicate-wild-ignore-table rule was enabled. (Bug#18715)
*
Index corruption could occur in cases when key_cache_block_size was not a multiple of myisam_block_size (for example, with key_cache_block_size=1536 and myisam_block_size=1024). (Bug#19079)
*
LAST_INSERT_ID() in a stored function or trigger returned zero. . (Bug#15728)
*
Use of CONVERT_TZ() in a view definition could result in spurious syntax or access errors. (Bug#15153)
*
UNCOMPRESS(NULL) could cause subsequent UNCOMPRESS() calls to return NULL for legal non-NULL arguments. (Bug#18643)
*
Conversion of a number to a CHAR UNICODE string returned an invalid result. (Bug#18691)
*
DELETE and UPDATE statements that used large NOT IN (value_list) clauses could use large amounts of memory. (Bug#15872)
*
Prevent recursive views caused by using RENAME TABLE on a view after creating it. (Bug#14308)
*
A LOCK TABLES statement that failed could cause MyISAM not to update table statistics properly, causing a subsequent CHECK TABLE to report table corruption. (Bug#18544)
*
For a reference to a non-existent stored function in a stored routine that had a CONTINUE handler, the server continued as though a useful result had been returned, possibly resulting in a server crash. (Bug#18787)
*
InnoDB did not use a consistent read for CREATE … SELECT when innodb_locks_unsafe_for_binlog was set. (Bug#18350)
*
InnoDB could read a delete mark from its system tables incorrectly. (Bug#19217)
*
Corrected a syntax error in mysql-test-run.sh. (Bug#19190)
*
A missing DBUG_RETURN() caused the server to emit a spurious error message: missing DBUG_RETURN or DBUG_VOID_RETURN macro in function "open_table". (Bug#18964)
*
DROP DATABASE did not drop stored routines associated with the database if the database name was longer than 21 characters. (Bug#18344)
*
Avoid trying to include <asm/atomic.h> when it doesn't work in C++ code. (Bug#13621)
*
Executing SELECT on a large table that had been compressed within myisampack could cause a crash. (Bug#17917)
*
NDB Cluster: When attempting to create an index on a BIT or BLOB column, Error 743: Unsupported character set in table or index was returned instead of Error 906: Unsupported attribute type in index.
*
Within stored routines, usernames were parsed incorrectly if they were enclosed within quotes. (Bug#13310)
*
Casting a string to DECIMAL worked, but casting a trimmed string (using LTRIM() or RTRIM()) resulted in loss of decimal digits. (Bug#17043)
*
NDB Cluster: On slow networks or CPUs, the management client SHOW command could sometimes erroneously show all data nodes as being master nodes belonging to nodegroup 0. (Bug#15530)
*
If the second or third argument to BETWEEN was a constant expression such as '2005-09-01 – INTERVAL 6 MONTH and the other two arguments were columns, BETWEEN was evaluated incorrectly. (Bug#18618)
*
If the first argument to BETWEEN was a DATE or TIME column of a view and the other arguments were constants, BETWEEN did not perform conversion of the constants to the appropriate temporary type, resulting in incorrect evaluation. (Bug#16069)
*
Server and clients ignored the –sysconfdir option that was passed to configure. (Bug#15069)
*
NDB Cluster: In a 2-node cluster with a node failure, restarting the node with a low value for StartPartialTimeout could cause the cluster to come up partitioned (“split-brain” issue). (Bug#16447)
A similar issue could occur when the cluster was first started with a sufficiently low value for this parameter. (Bug#18612)
*
NDB Cluster: On systems with multiple network interfaces, data nodes would get “stuck” in startup phase 2 if the interface connecting them to the management server was working on node startup while the interface interconnecting the data nodes experienced a temporary outage. (Bug#15695)
*
NDB Cluster: Unused open handlers for tables in which the metadata had changed were not properly closed. This could result in stale results from Cluster tables following an ALTER TABLE. (Bug#13228)
*
NDB Cluster: Uninitialised internal variables could lead to unexpected results. (Bug#11033, Bug#11034)
*
For InnoDB tables, an expression of the form col_name BETWEEN col_name2 – INTERVAL x DAY AND col_name2 + INTERVAL x DAY when used in a join returned incorrect results. (Bug#14360)
*
INSERT DELAYED into a view caused an infinite loop. (Bug#13683)
*
Lettercase in database name qualifiers was not consistently handled properly in queries when lower_case_table_names was set to 1. (Bug#15917)
*
The optimizer could cause a server crash or use a non-optimal subset of indexes when evaluating whether to use Index Merge/Intersection variant of index_merge optimization. (Bug#19021)
*
The presence of multiple equalities in a condition after reading a constant table could cause the optimizer not to use an index. This resulted in certain queries being much slower than in MySQL 4.1. (Bug#16504)
*
A recent change caused the mysql client not to display NULL values correctly and to display numeric columns left-justified rather than right-justified. The problems have been corrected. (Bug#18265)
*
mysql_reconnect() sent a SET NAMES statement to the server, even for pre-4.1 servers that do not understand the statement. (Bug#18830)
*
COUNT(*) on a MyISAM table could return different results for the base table and a view on the base table. (Bug#18237)
*
DELETE with LEFT JOIN for InnoDB tables could crash the server if innodb_locks_unsafe_for_binlog was enabled. (Bug#15650)
*
InnoDB failure to release an adaptive hash index latch could cause a server crash if the query cache was enabled. (Bug#15758)
*
For mysql.server, if the basedir option was specified after datadir in an option file, the setting for datadir was ignored and assumed to be located under basedir. (Bug#16240)
*
The euro sign (€) was not stored correctly in columns using the latin1_german1_ci or latin1_general_ci collation. (Bug#18321)
*
EXTRACT(QUARTER FROM date) returned unexpected results. (Bug#18100)
*
TRUNCATE did not reset the AUTO_INCREMENT counter for MyISAM tables when issued inside a stored procedure. (Bug#14945)
Note: This bug did not affect InnoDB tables. Also, TRUNCATE does not reset the AUTO_INCREMENT counter for NDBCluster tables regardless of when it is called (see Bug#18864).
*
The server was always built as though –with-extra-charsets=complex had been specified. (Bug#12076)
*
A query using WHERE (column_1, column_2) IN ((value_1, value_2)[, (…, …), …]) would return incorrect results. (Bug#16248)
*
Queries of the form SELECT DISTINCT timestamp_column WHERE date_function(timestamp_col) = constant did not return all matching rows. (Bug#16710)
*
When running a query that contained a GROUP_CONCAT( SELECT GROUP_CONCAT(…) ), the result was NULL except in the ROLLUP part of the result, if there was one. (Bug#15560)
*
For tables created in a MySQL 4.1 installation upgraded to MySQL 5.0 and up, multiple-table updates could update only the first matching row. (Bug#16281)
*
NDB Cluster: When multiple node restarts were attempted without allowing each restart to complete, the error message returned was Array index out of bounds rather than Too many crashed replicas. (Bug#18349)
*
CASTdouble AS SIGNED INT) for large double values outside the signed integer range truncates the result to be within range, but the result sometimes had the wrong sign, and no warning was generated. (Bug#15098)
*
Updating a field value when also requesting a lock with GET_LOCK() would cause slave servers in a replication environment to terminate. (Bug#17284)