TinyButStrong Error in field [var.version...]: the key 'version' does not exist or is not set in VarRef. (VarRef seems refers to $GLOBALS) This message can be cancelled using parameter 'noerr'.

TinyButStrong Error in field [var.version...]: the key 'version' does not exist or is not set in VarRef. (VarRef seems refers to $GLOBALS) This message can be cancelled using parameter 'noerr'.
 MySQL 軟體舊版本 Download Page50 | 2024 軟體跟著走

MySQL 歷史舊版本 Page50

最新版本 [var.version]

MySQL 歷史版本列表

MySQL 是一個開源的 RDBMS(關係數據庫管理系統),它支持用 C,C ++,Java,Perl 和 PHP 等各種編程語言編寫的請求。由於其高速度和靈活性,MySQL 已成為主要用於開發各種形狀和大小的 Web 應用程序的最流行的數據庫系統之一。自 1995 年上市以來,這種非常受歡迎的開源數據庫管理系統已經應用於當今幾乎所有互聯網用戶的無數項目中。今天一些最受歡迎的 MySQL 用戶是 ... MySQL 軟體介紹

MySQL (32-bit)MySQL (64-bit)MySQL WorkbenchMySQL Workbench (32-bit)MySQL Workbench (64-bit)


MySQL 5.1.40 查看版本資訊

更新時間:2009-10-23
更新細節:

What's new in this version:

Bugs fixed:

* Incompatible Change: In binary installations of MySQL, the supplied binary-configure script would start and configure MySQL, even when request help on the command with the --help command-line option. The --help, if provided, will no longer start and install the server. (Bug#30954)

* Partitioning: When reorganizing partitions, not all affected subpartitions were removed prior to renaming. One way in which the issue was visible was that attempting to reorganize two partitions into a single partition having the same name as one of the original partitions could lead to a crash of the server. (Bug#47029)
See also Bug#45961, Bug#43729.

* Partitioning: An online or fast ALTER TABLE of a partitioned table could leave behind temporary files in the database directory. (Bug#46483)

* Partitioning: When performing an INSERT ... SELECT into a partitioned table, read_buffer_size bytes of memory were allocated for every partition in the target table, resulting in consumption of large amounts of memory when the table had many partitions (more than 100).
This fix changes the method used to estimate the buffer size required for each partition and limits the total buffer size to a maximum of approximately 10 times read_buffer_size. (Bug#45840)

* Partitioning: Inserting negative values into an AUTO_INCREMENT column of a partitioned table could lead to apparently unrelated errors or a crash of the server. (Bug#45823)

* Partitioning: Unnecessary calls were made in the server code for performing bulk inserts on partitions for which no inserts needed to be made. (Bug#35845)See also Bug#35843.

* Replication: Performing ALTER TABLE ... DISABLE KEYS on a slave table caused row-based replication to fail. (Bug#47312)

* Replication: BEGIN statements were not included in the output of mysqlbinlog. (Bug#46998)

* Replication: When using row-based replication, importing a dump made with mysqldump and replicating a row with an AUTO_INCREMENT column set to 0, with NO_AUTO_VALUE_ON_ZERO active on the master, the row was inserted successfully on the master; however any setting for NO_AUTO_VALUE_ON_ZERO was ignored on the slave. When the AUTO_INCREMENT column was incremented, this caused replication to fail on the slave due to a duplicate key error. In some cases it could also cause the slave to crash. (Bug#45999)

* Replication: Concurrent transactions that inserted rows into a table with an AUTO_INCREMENT column could break statement-based or mixed-format replication error 1062 Duplicate entry '...' for key 'PRIMARY' on the slave. This was especially likely to happen when one of the transactions activated a trigger that inserted rows into the table with the AUTO_INCREMENT column, although other conditions could also cause the issue to manifest. (Bug#45677)

* Replication: By default, all statements executed by the mysql_upgrade program on the master are written to the binary log, then replicated to the slave. In some cases, this can result in problems; for example, it attempted to alter log tables on replicated databases (this failed due to logging being enabled).
As part of this fix, a new mysql_upgrade option --write-binlog is added. Its inverse, --skip-write-binlog, can be used to disable binary logging while the upgrade is in progress. (Bug#43579)

* Replication: On the master, if a binary log event is larger than max_allowed_packet, the error message ER_MASTER_FATAL_ERROR_READING_BINLOG is sent to a slave when it requests a dump from the master, thus leading the I/O thread to stop. On a slave, the I/O thread stops when receiving a packet larger than max_allowed_packet.
In both cases, however, there was no Last_IO_Error reported, which made it difficult to determine why the slave had stopped in such cases. Now, Last_IO_Error is reported when max_allowed_packet is exceeded, and provides the reason for which the slave I/O thread stopped. (Bug#42914) See also Bug#14068, Bug#47200, Bug#47303.

* API: The fix for Bug#24507 could lead in some cases to client application failures due to a race condition. Now the server waits for the “dummy” thread to return before exiting, thus making sure that only one thread can initialize the POSIX threads library. (Bug#42850)

* The pthread_cond_wait() implementations for Windows could deadlock in some rare circumstances. (Bug#47768)

* On Mac OS X or Windows, sending a SIGHUP signal to the server or an asynchronous flush (triggered by flush_time) caused the server to crash. (Bug#47525)

* Debug builds could not be compiled with the Sun Studio compiler. (Bug#47474)

* A multiple-table UPDATE involving a natural join and a mergeable view raised an assertion. (Bug#47150)

* Solaris binary packages now are compiled with -g0 rather than -g. (Bug#47137)

* EXPLAIN caused a server crash for certain valid queries. (Bug#47106)

* The configure option --without-server did not work. (Bug#46980)

* ailed multiple-table DELETE statements could raise an assertion. (Bug#46958)

* When creating a new instance on Windows using mysqld-nt and the --install parameter, the value of the service would be set incorrectly, resulting in a failure to start the configured service. (Bug#46917)

* The server crashed when re-using outer column references in correlated subqueries when the enclosing query used a temp table. (Bug#46791)

* Assertion failure could result from repeated execution of a stored procedure containing an incorrect query with a subselect. (Bug#46629)

* The server ignored the setting of sync_frm for CREATE TABLE ... LIKE. (Bug#46591)

* An attempt to create a table with the same name as an existing view could cause a server crash. (Bug#46384)

* A parser problem prevented properly stripping backquotes from an argument to a user-defined function (UDF). If the UDF was in an ORDER BY clause, its name would not be properly resolved against an alias with the same name in the select list. (Bug#46259)

* Dropping an InnoDB table that used an unknown collation (created on a different server, for example) caused a server crash. (Bug#46256)

* Certain SELECT statements containing DISTINCT, GROUP BY, and HAVING clauses could hang in an infinite loop. (Bug#46159)

* InnoDB did not disallow creation of an index with the name GEN_CLUST_INDEX, which is used internally. (Bug#46000)

* CREATE TEMPORARY TABLE failed for InnoDB tables on systems with case-insensitive file systems when lower_case_table_names = 2 and the pathname of the temporary file directory contained uppercase characters. (Bug#45638)

* Appending values to an ENUM or SET definition is a metadata change for which ALTER TABLE need not rebuild the table, but it was being rebuilt anyway. (Bug#45567)

* The socket system variable was unavailable on Windows. (Bug#45498)

* When re-installing MySQL on Windows on a server that has a data directory from a previous MySQL installation, the installer would fail to identify the existence of the installation and the password configured for the root user. (Bug#45200)

* Client flags were incorrectly initialized for the embedded server, causing several tests in the jp test suite to fail. (Bug#45159)

* InnoDB did not always disallow creating tables containing columns with names that match the names of internal columns, such as DB_ROW_ID, DB_TRX_ID, DB_ROLL_PTR, and DB_MIX_ID. (Bug#44369)

* SELECT ... WHERE ... IN (NULL, ...) was executed using a full table scan, even if the same query without the NULL used an efficient range scan. (Bug#44139) See also Bug#18360.

* InnoDB use of SELECT MAX(autoinc_column) could cause a crash when MySQL data dictionaries went out of sync. (Bug#44030)

* LOAD DATA INFILE statements were written to the binary log in such a way that parsing problems could occur when re-executing the statement from the log. (Bug#43746)

* Selecting from the process list in the embedded server caused a crash. (Bug#43733) See also Bug#47304.

* Attempts to enable large_pages with a shared memory segment larger than 4GB caused a server crash. (Bug#43606)

* A test for stack growth failed on some platforms, leading to server crashes. (Bug#42213)

* MySQL server used the wrong lock type (always TL_READ instead of TL_READ_NO_INSERT when appropriate) for tables used in subqueries of UPDATE statements. This led in some cases to replication failure because statements were written in the wrong order to the binary log. (Bug#42108)

* The mysql-stress-test.pl test script was missing from the noinstall packages on Windows. (Bug#41546)

* Privileges for SHOW CREATE VIEW were not being checked correctly. (Bug#35996)

* Different invocations of CHECKSUM TABLE could return different results for a table containing columns with spatial data types. (Bug#35570)

* myisamchk performed parameter value casting at startup that generated unnecessary warning messages. (Bug#33785)

* When building MySQL on Windows from source, the WITH_BERKELEY_STORAGE_ENGINE option would fail to configure BDB support correctly. (Bug#27693)

MySQL 5.1.39 查看版本資訊

更新時間:2009-09-22
更新細節:

What's new in this version:

Bugs fixed:

* Partitioning: An INSERT ... SELECT statement on an empty partition of a partitioned table failed with ERROR 1030 (HY000): Got error 124 from storage engine. This issue also caused queries run against a partitioned table while a LOAD DATA CONCURRENT INFILE statement was in progress to fail with the same error. (Bug#46639: http://bugs.mysql.com/46639) See also Bug#35845: http://bugs.mysql.com/35845, Bug#44657: http://bugs.mysql.com/44657, Bug#45840: http://bugs.mysql.com/45840.

* Partitioning: A partitioned table having a TIMESTAMP column with a default value of CURRENT_TIMESTAMP and this column was not defined using an ON UPDATE option, an ALTER TABLE ...REORGANIZE PARTITION statement on the table caused the TIMESTAMP column value to be set to CURRENT_TIMESTAMP regardless. (Bug#46478: http://bugs.mysql.com/46478)

* Partitioning: Attempting to access a partitioned table when partitioning support was disabled in a MySQL server binary that had been compiled with partitioning support caused the server to crash. (Bug#39893: http://bugs.mysql.com/39893)

* Partitioning: The use of TO_DAYS() in the partitioning expression led to selection failures when the column having the date value contained invalid dates. This occurred because the function returns NULL in such cases, and the partition containing NULL values was pruned away. For example, this problem occurred if '2001-02-00' was inserted into a DATE column of such a table, and a subsequent query on this table used WHERE date_col < '2001-02-00' --- while '2001-01-01' is
less than '2001-02-00', TO_DAYS('2001-02-00') evaluates as NULL, and so the row containing '2001-01-01' was not returned. Now, for tables using RANGE or LIST partitioning and having TO_DAYS() in the partitioning expression, the NULL partition
is also scanned instead of being ignored. The fix for this issue also corrects misbehavior such that a query of the form SELECT * FROM table WHERE date_col <
date_val on a table partitioned by RANGE or LIST was handled as though the server SQL mode included ALLOW_INVALID_DATES even if this was not actually part of the server SQL mode at the time the query was issued. (Bug#20577: http://bugs.mysql.com/20577) See also Bug#18198: http://bugs.mysql.com/18198,
Bug#32021: http://bugs.mysql.com/32021, Bug#46362: http://bugs.mysql.com/46362.

* Replication: Performing a multi-row update of the AUTO_INCREMENT column of a transactional table could result in an inconsistency between master and slave when there was a trigger on the transactional table that updated a non-transactional table. When such an update failed on the master, no rows were updated on the master, but some rows could (erroneously) be updated on the slave. (Bug#46864: http://bugs.mysql.com/46864)

* Replication: When using the --replicate-rewrite-db option and the database referenced by this option on the master was the current database when the connection to the slave was closed, any temporary tables existing in this database were not properly dropped. (Bug#46861: http://bugs.mysql.com/46861)

* Replication: When a statement that changed both transactional and non-transactional tables failed, the transactional changes were automatically rolled back on the master but the slave ignored the error and did not roll them back, thus leading to inconsistencies between master and slave. This issue is fixed by automatically rolling back a statement that fails on the slave; however, the transaction is not rolled back unless a corresponding ROLLBACK statement is found in the relay log file.(Bug#46130: http://bugs.mysql.com/46130) See also Bug#33864: http://bugs.mysql.com/33864.

* Replication: When slave_transaction_retries is set, a statement that replicates, but is then rolled back due to a deadlock on the slave, should be retried. However, in certain cases, replication was stopped with error 1213 (Deadlock found when trying to get lock; try restarting transaction) instead, even when this variable was set. (Bug#45694: http://bugs.mysql.com/45694)

* Replication: The binary logging behavior (and thus, the replication behavior) of CREATE DATABASE IF NOT EXISTS, CREATE TABLE IF NOT EXISTS, and CREATE EVENT IF NOT EXISTS was not consistent among these statements, nor with that of DROP DATABASE IF EXISTS, DROP TABLE IF EXISTS, and DROP EVENT IF EXISTS: A DROP ... IF EXISTS statement is always logged even if the database object named in the statement does not exist. However, of the CREATE ... IF NOT EXISTS statements, only the CREATE EVENT IF NOT EXISTS statement was logged when the database object named in the statement already existed.Now, every CREATE ... IF NOT EXISTS statement is written to the binary log (and thus replicated), whether the database object named in the statement exists or not. For more information, see Section 16.3.1.3, "Replication of CREATE ...IF NOT EXISTS Statements."Exception. Replication and logging of CREATE TABLE IF NOT EXISTS ... SELECT continues to be handled according to existing rules. See Section 16.3.1.4, "Replication of CREATE TABLE ... SELECT Statements," for more information.(Bug#45574: http://bugs.mysql.com/45574)

* Replication: When using statement-based replication,database-level character sets were not always honored by the replication SQL thread. This could cause data inserted on the master using LOAD DATA to be replicated using the wrong character set. Note This was not an issue when using row-based replication. (Bug#45516: http://bugs.mysql.com/45516)

* Replication: In some cases, a STOP SLAVE statement could cause the replication slave to crash. This issue was specific to MySQL on Windows or Macintosh platforms. (Bug#45238: http://bugs.mysql.com/45238, Bug#45242: http://bugs.mysql.com/45242, Bug#45243: http://bugs.mysql.com/45243, Bug#46013: http://bugs.mysql.com/46013, Bug#46014: http://bugs.mysql.com/46014, Bug#46030: http://bugs.mysql.com/46030)

* Replication: Creating a scheduled event whose DEFINER clause was either set to CURRENT_USER or not set explicitly caused the master and the slave to become inconsistent. This issue stems from the fact that, in both cases, the DEFINER is set to the CURRENT_USER of the current thread. (On the master, the CURRENT_USER is the mysqld user; on the slave, the CURRENT_USER is empty.)This behavior has been modified as follows: + If CURRENT_USER is used as the DEFINER, it is replaced with the value of CURRENT_USER before the CREATE EVENT statement is written to the binary log.+ If the definer is not set explicitly, a DEFINER clause using the value of CURRENT_USER is added to the CREATE EVENT statement before it is written to the binary log.(Bug#44331: http://bugs.mysql.com/44331)See also Bug#42217: http://bugs.mysql.com/42217.

* Replication: When using the statement-based logging format, the only possible safe combination of transactional and non-transactional statements within the same transaction is to perform any updates on non-transactional tables (such as MyISAM tables) first, before updating any transactional tables (such as those using the InnoDB storage engine). This is due to the fact that, although a modification made to a non-transactional table is immediately visible to other connections, the update is not immediately written to the binary log, which can lead to inconsistencies between master and slave. (Other combinations may hide a causal dependency, thus making it impossible to write statements updating non-transactional tables to the binary log in the correct order.)However, in some cases, this situation was not handled properly, and the determination whether a given statement was safe or not under these conditions was not always correct. In particular, a multi-table update that affected both transactional and non-transactional tables or a statement modifying data in a non-transactional table having a trigger that operated on a transactional table (or the reverse) was not determined to be unsafe when it should have been.With this fix, the following determinations regarding replication safety are made when combining updates to transactional and non-transactional tables within the same transaction in statement-based logging mode:
1. Any statement modifying data in a non-transactional table within a given transaction is considered safe if it is issued prior to any data modification statement accessing a transactional table within the same transaction.
2. A statement that updates transactional tables only is always considered safe.
3. A statement affecting both transactional and non-transactional tables within a transaction is always considered unsafe. It is not necessary that both tables be modified for this to be true; for example, a statement such as INSERT INTO innodb_table SELECT * FROM myisam_table is also considered unsafe.
Note: The current fix is valid only when using statement-based logging mode; we plan to address similar issues occurring when using the MIXED or ROW format in a future MySQL release. (Bug#28976: http://bugs.mysql.com/28976)

* Stack overflow checking did not account for the size of the structure stored in the heap. (Bug#46807: http://bugs.mysql.com/46807)

* In queries for which the loose index scan access method was chosen, using a condition of the form col_name rather than the equivalent col_name <> 0 caused an assertion failure.(Bug#46607: http://bugs.mysql.com/46607)

* Killing a query that was performing a sort could result in a memory leak. (Bug#45962: http://bugs.mysql.com/45962)

* Truncation of DECIMAL values could lead to assertion failures;for example, when deducing the type of a table column from a literal DECIMAL value.(Bug#45261: http://bugs.mysql.com/45261)

* Bulk insert performance could suffer with large read_buffer_size values. (Bug#44723: http://bugs.mysql.com/44723)

* A buffer overflow could occur during handling of IS NULL ranges. (Bug#37044: http://bugs.mysql.com/37044)

* mysqladmin --wait ping crashed on Windows systems.(Bug#35132: http://bugs.mysql.com/35132)

MySQL 5.1.38 查看版本資訊

更新時間:2009-09-04
更新細節:

What's new in this version:

#Functionality added or changed:

* The InnoDB Plugin is included in MySQL releases, in addition to the built-in version of InnoDB that has been included in previous releases. This version of the InnoDB Plugin is 1.0.4 and is considered of Beta quality.

* Replication: With statement-based logging (SBL), repeatedly calling statements that are unsafe for SBL caused a warning message to be written to the error log for each statement, and there was no way to disable this behavior. Now the server logs messages about statements that are unsafe for statement-based logging only if the log_warnings variable is greater than 0. (Bug#46265)

* The undocumented TRANSACTIONAL and PAGE_CHECKSUM keywords were removed from the grammar. (Bug#45829)

* Previously, SELECT ... INTO OUTFILE dumped column values without character set conversion, which could produce data files that cannot be imported without error if different columns used different character sets. A consequence of this is that mysqldump ignored the --default-character-set option if the --tab option was given (which causes SELECT ... INTO OUTFILE to be used to dump data.)

INTO OUTFILE now can be followed by a CHARACTER SET clause indicating the character set to which dumped values should be converted. Also, mysqldump adds a CHARACTER SET clause to the SELECT ... INTO OUTFILE statement used to dump data, so that --default-character-set is no longer ignored if --tab is given.

Other changes are that SELECT ... INTO OUTFILE enforces that ENCLOSED BY and ESCAPED BY arguments must be a single character, and SELECT ... INTO OUTFILE and LOAD DATA INFILE produce warnings if non-ASCII field or line separators are specified. (Bug#30946)

* The MySQL euckr character set now can store extended codes [81...FE][41..5A,61..7A,81..FE], which makes euckr compatible with the Microsoft cp949 character set.

#Bugs fixed:

* Partitioning: Attempting to create a table using an invalid or inconsistent subpartition definition caused the server to crash. An example of such a statement is shown here:

CREATE TABLE t2 (s1 INT, s2 INT)
PARTITION BY LIST (s1) SUBPARTITION BY HASH (s2) SUBPARTITIONS 1
(
PARTITION p1 VALUES IN (1),
PARTITION p2 VALUES IN (2) (SUBPARTITION p3)
);
(Bug#46354)

* Partitioning: When using a debug build of MySQL, if a query against a partitioned table having an index on one or more DOUBLE columns used that index, the server failed with an assertion. (Bug#45816)

* Partitioning: A failed RENAME TABLE operation on a table with user-defined partitioning left the table in an unusable state, due to only some of the table files having been renamed. (Bug#30102)

* Replication: When a statement that changes a non-transactional table failed, the transactional cache was flushed, causing a mismatch between the execution and logging histories. Now we avoid flushing the transactional cache unless a COMMIT or ROLLBACK is issued. (Bug#46129)

* Replication: The internal function get_master_version_and_clock() (defined in sql/slave.cc) ignored errors and passed directly when queries failed, or when queries succeeded but the result retrieved was empty. Now this function tries to reconnect the master if a query fails due to transient network problems, and to fail otherwise. The I/O thread now prints a warning if the some system variables do not exist on master (in the event the master is a very old version of MySQQL, compared to the slave.) (Bug#45214)

* Replication: When using the MIXED logging format, after creating a temporary table and performing an update that switched the logging format to ROW, the format switch persisted following the update. This prevented any subsequent DDL statements on temporary tables from being written to the binary log until the temporary table was dropped. (Bug#43046) See also Bug#40013.
This regression was introduced by Bug#20499.

* Replication: If the --log-bin-trust-function-creators option is not enabled, CREATE FUNCTION requires one of the modifiers DETERMINISTIC, NO SQL, or READS SQL DATA. When using statement-based mode, the execution of a stored function should follow the same rules; however, only functions defined with DETERMINSTIC could actually be executed. In addition, the wrong error was generated (ER_BINLOG_ROW_RBR_TO_SBR instead of ER_BINLOG_UNSAFE_ROUTINE).

Now execution of stored functions is compatible with creation in this regard; when a stored function without one of the modifiers above is executed in STATEMENT mode, the correct error is raised, and functions defined using NO SQL, READS SQL DATA, or both (that is, without using DETERMINSTIC) can be excuted. (Bug#41166)

* The test suite was missing from RPM packages. (Bug#46834)

* Incorrect index optimization could lead to incorrect results or server crashes. (Bug#46454)

* The server printed warnings at startup about adjusting the value of the max_join_size system variable. (These were harmless, but might be seen by users as significant.) (Bug#46385)

* After an error such as a table-full condition, INSERT IGNORE could cause an assertion failure for debug builds. (Bug#46075)

* An optimization that moved an item from a subquery to an outer query could cause a server crash. (Bug#46051)

* Several Valgrind warnings were corrected. (Bug#46003, Bug#46034, Bug#46042)

* CREATE TABLE ... SELECT could cause a server crash if no default database was selected. (Bug#45998)

* For problems reading SSL files during SSL initialization, the server wrote error messages to stderr rather than to the error log. (Bug#45770)

* The vendor name change from MySQL AB to Sun Microsystems, Inc. in RPM packages was not handled gracefully when upgrading MySQL using an RPM package. (Bug#45534)

* A Windows Installation using the GUI installer would fail with:
MySQL Server 5.1 Setup Wizard ended prematurely
The wizard was interrupted before MySQL Server 5.1. could be completely installed. Your system has not been modified. To complete installation at another time, please run setup again. Click Finish to exit the wizard. This was due to an step in the MSI installer that could fail to execute correctly on some environments. (Bug#45418)

* Invalid memory reads could occur using the compressed client/server protocol. (Bug#45031)

* The mysql_real_connect() C API function only attempted to connect to the first IP address returned for a hostname. This could be a problem if a hostname mapped to multiple IP address and the server was not bound to the first one returned. Now mysql_real_connect() attempts to connect to all IPv4/6 addresses that a domain name maps to. (Bug#45017)

* Invalid input could cause invalid memory reads by the parser. (Bug#45010)

* Some files in an AIX tar file distribution unpacked with incorrect permissions. (Bug#44647)

* For debug builds, executing a stored procedure as a prepared statement could sometimes cause an assertion failure. (Bug#44521)

* Using mysql_stmt_execute() to call a stored procedure could cause a server crash. (Bug#44495)

* Creating a new instance after previously removing an instance would fail to complete the installation properly because the security settings could not be applied correctly. (Bug#44428)

* mysqlslap ignored the --csv option if it was given without an argument. (Bug#44412)

* Enabling the event scheduler from within the file specified by --init-file caused a server crash. (Bug#43587)

* The server did not always check the return value of calls to the hash_init() function. (Bug#43572)

* The table cache lock (LOCK_open) is now an adaptive mutex, which should improve performance in workloads where this lock is heavily contended. (Bug#43435)

* mysqladmin --count=X --sleep=Y incorrectly delayed Y seconds after the last iteration before exiting. (Bug#42639)

* A test for stack growth failed on some platforms, leading to server crashes. (Bug#42213)

* mysqladmin did not have enough space allocated for tracking all variables when using --vertical or --relative with extended-status. (Bug#40395)

* Partitioning a log table caused a server crash. (Bug#40281)

* When using quick access methods to search for rows in UPDATE and DELETE statements, there was no check whether a fatal error had already been sent to the client while evaluating the quick condition. Consequently, a false OK (following the error) was sent to the client, causing the error to be incorrectly transformed into a warning. (Bug#40113)

* SHOW PROCESSLIST could access freed memory of a stored procedure run in a concurrent session. (Bug#38816)

* During installation on Windows, the MySQL Instance Configuration Wizard window could be opened at a size too small to be usable. (Bug#38723)

* make_binary_distribution did not always generate correct distribution names. (Bug#37808)

* The server crashed when executing a prepared statement containing a duplicated MATCH() function call in the select list and ORDER BY clause; for example, SELECT MATCH(a) AGAINST('test') FROM t1 ORDER BY MATCH(a) AGAINST('test'). (Bug#37740)

* The output of mysqldump --tab for views included a DROP TABLE statement without the IF EXISTS qualifier. (Bug#37377)

* mysql_upgrade silently ignored the --basedir and --datadir options, which it accepts for backward compatibility. Now it prints a warning. (Bug#36558)

* mysqlimport was not always compiled correctly to enable thread support, which is required for the --use-threads option. (Bug#32991)

* mysqlcheck failed to fix table names when the --fix-table-names and --all-in-1 options were both specified. (Bug#31821)

* If the MySQL server was killed without the PID file being removed, attempts to stop the server with mysql.server stop waited 900 seconds before giving up. (Bug#31785)

* When performing an installation on Windows using the GUI installer, the installer would fail to wait long enough during installation for the MySQL service to be installed, which would cause the installation to fail and may cause security settings, such as the root password to not be applied correctly. (Bug#30525)

* mysql included extra spaces at the end of some result set lines. (Bug#29622)

* The mysql client inconsistently handled NUL bytes in column data in various output formats. (Bug#28203)

* mysqlimport did not correctly quote and escape table identifiers and file names. (Bug#28071)

* When installing the Windows service, using quotes around command-line configuration parameters could cause the quotes to incorrectly placed around the entire command-line option, and not just the value. (Bug#27535)

* If the mysql client was built with the readline library and the .inputrc file mapped Space to the magic-space function, it became impossible to enter spaces. (Bug#27439)

* If InnoDB reached its limit on the number of concurrent transactions (1023), it wrote a descriptive message to the error log but returned a misleading error message to the client, or an assertion failure occurred. (Bug#18828)

MySQL 5.1.37 查看版本資訊

更新時間:2009-08-03
更新細節:

What's new in this version:

* Important Change: Replication: RESET MASTER and RESET SLAVE now reset the values shown for Last_IO_Error, Last_IO_Errno, Last_SQL_Error, and Last_SQL_Errno in the output of SHOW SLAVE STATUS. (Bug#44270)

See also Bug#34654.

Bugs fixed:

* Partitioning: Security Fix: Accessing a table having user-defined partitioning when the server SQL mode included ONLY_FULL_GROUP_BY caused the MySQL server to crash. For example, the following sequence of statements crashed the server:

DROP TABLE IF EXISTS t1;

SET SESSION SQL_MODE='ONLY_FULL_GROUP_BY';

CREATE TABLE t1 (id INT, KEY(id))
PARTITION BY HASH(id) PARTITIONS 2;

(Bug#45807)

* Important Change: Replication: When using STATEMENT or MIXED binary logging format, a statement that changes both non-transactional and transactional tables must be written to the binary log whenever there are changes to non-transactional tables. This means that the statement goes into the binary log even when the changes to the transactional tables fail. In particular, in the event of a failure such statement is annotated with the error number and wrapped inside a pair of BEGIN and ROLLBACK statements.

On the slave, while applying the statement, it is expected that the same failure and the rollback prevent the transactional changes from persisting. However, statements that fail due to concurrency issues such as deadlocks and timeouts are logged in the same way, causing the slave to stop since the statements are applied sequentially by the SQL thread.

To address this issue, we ignore concurrency failures on the slave. Specifically, the following failures are now ignored: ER_LOCK_WAIT_TIMEOUT, ER_LOCK_DEADLOCK, and ER_XA_RBDEADLOCK. (Bug#44581)

* Partitioning: Truncating a partitioned MyISAM table did not reset the AUTO_INCREMENT value. (Bug#35111)

* Replication: The SHOW SLAVE STATUS connection thread competed with the slave SQL thread for use of the error message buffer. As a result, the connection thread sometimes received incomplete messages. This issue was uncovered with valgrind when message strings were passed without NULL terminators, causing the error Conditional jump or move depends on uninitialised value(s). (Bug#45511)

See also Bug#43076.

* Replication: Large transactions and statements could corrupt the binary log if the size of the cache (as set by max_binlog_cache_size) was not large enough to store the changes.

Now, for transactions that do not fit into the cache, the statement is not logged, and the statement generates an error instead.

For non-transactional changes that do not fit into the cache, the statement is also not logged — an incident event is logged after committing or rolling back any pending transaction, and the statement then raises an error.
Note

If a failure occurs before the incident event is written the binary log, the slave does not stop, and the master does not report any errors.

(Bug#43929)

See also Bug#37148.

* Replication: The --database option for mysqlbinlog was ignored when using the row-based logging format. (Bug#42941)

* Replication: Shutting down the server while executing FLUSH LOGS, CHANGE MASTER TO, or STOP SLAVE could sometimes cause mysqld to crash. (Bug#38240)

* Replication: When reading a binary log that was in use by a master or that had not been properly closed (possibly due to a crash), the following message was printed: Warning: this binlog was not closed properly. Most probably mysqld crashed writing it. This message did not take into account the possibility that the file was merely in use by the master, which caused some users concern who were not aware that this could happen.

To make this clear, the original message has been replaced with Warning: this binlog is either is use or was not closed properly. (Bug#34687)

* The server crashed if evaluation of GROUP_CONCAT(... ORDER BY) required allocation of a sort buffer but allocation failed. (Bug#46080)

* When creating tables using the IBMDB2I storage engine with the ibmdb2i_create_index_option option set to 1, creating an IBMDB2I table with a primary key should produce an additional index that uses EBCDIC hexadecimal sorting, but this index was not created. (Bug#45983)

* With InnoDB tables, MySQL used a less-selective secondary index to avoid a filesort even if a prefix of the primary key was much more selective.

The fix for this problem might cause other queries to run more slowly. (Bug#45828)

* The server crashed for attempts to use REPLACE or INSERT ... ON DUPLICATE KEY UPDATE with a view defined using a join. (Bug#45806)

* Some collations were causing IBMDB2I to report inaccurate key range estimations to the optimizer for LIKE clauses that select substrings. This can be seen by running EXPLAIN. This problem primarily affects multi-byte and unicode character sets. (Bug#45803)

* Invalid memory reads and writes were generated when altering merge and base tables. This could lead to a crash or Valgrind errors:

==28038== Invalid write of size 1
at: memset (mc_replace_strmem.c:479)
by: myrg_attach_children (myrg_open.c:433)
by: ha_myisammrg::attach_children() (ha_myisammrg.cc:546)
by: ha_myisammrg::extra(ha_extra_function) (ha_myisammrg.cc:944)
by: attach_merge_children(TABLE_LIST*) (sql_base.cc:4147)
by: open_tables(THD*, TABLE_LIST**, unsigned*, unsigned) (sql_base.cc:4709)
by: open_and_lock_tables_derived(THD*, TABLE_LIST*, bool) (sql_base.cc:4977)
by: open_n_lock_single_table (mysql_priv.h:1550)
by: mysql_alter_table(sql_table.cc:6428)
by: mysql_execute_command(THD*) (sql_parse.cc:2860)
by: mysql_parse(THD*, char const*, unsigned, char const**) (sql_parse.cc:5933)
by: dispatch_command (sql_parse.cc:1213)

(Bug#45796)

* Inserting data into a table using the macce character set with the IBMDB2I storage engine would fail. (Bug#45793)

* There was a race condition when changing innodb_commit_concurrency at runtime to the value DEFAULT. (Bug#45749)

See also Bug#42101.

* Performing an empty XA transaction caused the server to crash for the next XA transaction. (Bug#45548)

* For replication of a stored procedure that uses the gbk character set, the result on the master and slave differed. (Bug#45485)

* SHOW CREATE TRIGGER requires the TRIGGER privilege but was not checking privileges. (Bug#45412)

* An assertion failure could occur if InnoDB tried to unlock a record when the clustered index record was unknown. (Bug#45357)

* Bug#19027 caused --enable-plugin_name (for example, --enable-innodb) not to work. (Bug#45336)

* If autocommit was enabled, InnoDB did not roll back DELETE or UPDATE statements if the statement was killed. (Bug#45309)

* Use of DECIMAL constants with more than 65 digits in CREATE TABLE ... SELECT statements led to spurious errors or assertion failures. (Bug#45262)

* The mysql client could misinterpret some character sequences as commands under some circumstances. (Bug#45236)

* Use of CONVERT() with an empty SET value could cause an assertion failure.
(Bug#45168)

* InnoDB recovery could hang due to redo logging of doublewrite buffer pages. (Bug#45097)

* when reading binary data, the concatenation function for geometry data collections did not rigorously check for available data, leading to invalid reads and server crashes. (Bug#44684)

* If an error occurred during the creation of a table (for example, the table already existed) having an AUTO_INCREMENT column and a BEFORE trigger that used the INSERT ... SELECT construct, an internal flag was not reset properly. This led to a crash the next time that the table was opened again. (Bug#44653)

* For queries with a sufficient number of subqueries in the FROM clause of this form:

SELECT * FROM (SELECT 1) AS t1,
(SELECT 2) AS t2,
(SELECT 3) AS t3, ...

The query failed with a Too high level of nesting for select error, as those the query had this form:

SELECT * FROM (SELECT 1 FROM (SELECT 2 FROM (SELECT 3 FROM ...

(Bug#44156)

* configure.in contained references to literal instances of nm and libc, rather than to variables parameterized for the proper values on the current platform. (Bug#42721)

* configure.in did not properly check for the pthread_setschedprio() function. (Bug#42599)

* A workaround for a Sun Studio bug was instituted. (Bug#41710)

* Valgrind warnings that occurred for SHOW TABLE STATUS with InnoDB tables were silenced. (Bug#38479)

* In the mysql client, if the server connection was lost during repeated status commands, the client would fail to detect this and command output would be inconsistent. (Bug#37274)

* When invoked to start multiple server instances, mysqld_multi sometimes would fail to start them all due to not changing location into the base directory for each instance. (Bug#36654)

* Renaming a column that appeared in a foreign key definition did not update the foreign key definition with the new column name. (Bug#21704)

MySQL 5.1.36 查看版本資訊

更新時間:2009-07-02
更新細節:

What's new in this version:

Functionality added or changed:

* Important Change: Replication: Previously, incident log events were represented as comments in the output from mysqlbinlog, making them effectively silent when playing back the binlog.

(An incident log event represents an incident that could cause the contents of the database to change without that event being recorded in the binary log.)

This meant that, if the SQL were applied to a server, it could potentially lead to the master and the slave having different data. To make it possible to handle incident log events without breaking applications that expect the previous behavior, the nonsense statement RELOAD DATABASE is added to the SQL output for that incident log event, which causes an error.

To use this functionality currently requires hand editing of the dump file and handling of each case on an individual basis by a database administrator before applying the output to a server. (Bug#44442)

* mysql_upgrade now displays a message indicating the connection parameters it uses when invoking mysqlcheck. (Bug#44638)

* The time zone tables for Windows available at http://dev.mysql.com/downloads/timezones.html have been updated. (Bug#39923)

* The mysqltest program now has a move_file from_file to_file command for renaming files. This should be used in test cases rather than invoking an external command that might be platform specific. (Bug#39542)


Bugs fixed:

* Incompatible Change: The server can load plugins under the control of startup options. For example, many storage engines can be built in pluggable form and loaded when the server starts. In the following descriptions, plugin_name stands for a plugin name such as innodb.

Previously, plugin options were handled like other boolean options (see Section 4.2.3.2, “Program Option Modifiers”). That is, any of these options enabled the plugin:

--plugin_name
--plugin_name=1
--enable-plugin_name

And these options disabled the plugin:

--plugin_name=0
--disable-plugin_name
--skip-plugin_name

However, use of a boolean option for plugin loading did not provide control over what to do if the plugin failed to start properly: Should the server exit, or start with the plugin disabled? The actual behavior has been that the server starts with the plugin disabled, which can be problematic. For example, if InnoDB fails to start, existing InnoDB tables become inaccessible, and attempts to create new InnoDB tables result in tables that use the default storage engine unless the NO_ENGINE_SUBSTITUTION SQL mode has been enabled to cause an error to occur instead.

Now, there is a change in the options used to control plugin loading, such that they have a tristate format:
o --plugin_name=OFF

Do not enable the plugin.

o --plugin_name[=ON]

Enable the plugin. If plugin initialization fails, start the server anyway, but with the plugin disabled. Specifying the option as --plugin_name without a value also enables the plugin.

o --plugin_name=FORCE

Enable the plugin. If plugin initialization fails, do not start the server. In other words, force the server to run with the plugin or not at all.

The values OFF, ON, and FORCE are not case sensitive.

Suppose that CSV and InnoDB have been built as pluggable storage engines and that you want the server to load them at startup, subject to these conditions: The server is allowed to run if CSV initialization fails, but must require that InnoDB initialization succeed. To accomplish that, use these lines in an option file:

[mysqld]
csv=ON
innodb=FORCE

This change is incompatible with the previous implementation if you used options of the form --plugin_name=0 or --plugin_name=1, which should be changed to --plugin_name=OFF or --plugin_name=ON, respectively.

--enable-plugin_name is still supported and is the same as --plugin_name=ON. --disable-plugin_name and --skip-plugin_name are still supported and are the same as --plugin_name=OFF. (Bug#19027)

* Important Change: Replication: BEGIN, COMMIT, and ROLLBACK statements are no longer affected by --replicate-do-db or --replicate-ignore-db rules. (Bug#43263)

* Partitioning: Queries using DISTINCT on multiple columns or GROUP BY on multiple columns did not return correct results with partitioned tables. (Bug#44821)

See also Bug#41136.

* Replication: When using row-based logging, the length of an event for which the field metadata exceeded 255 bytes in size was incorrectly calculated. This could lead to corruption of the binary log, or cause the server to hang. (Bug#42749)

See also Bug#44548, Bug#44672, Bug#44752.

* Replication: The warning Statement is not safe to log in statement format, issued in situations when it cannot be determined that a statement or other database event can be written reliably to the binary log using the statement-based format, has been changed to Statement may not be safe to log in statement format. (Bug#42415)

* Replication: The Query_log_event used by replication to transfer a query to the slave has been refactored. Query_log_event also stores and sends the error code resulting from the execution since it, in some cases, is necessary to execute the statement on the slave as well, which should result in the same error code. The Query_log_event constructor previously worked out for itself the error code using a complex routine, the result of which was often set aside within the constructor itself. This was also involved with at least 2 known bugs relating to invalid errors, and taken as a clear sign that the constructor was not well-designed and needed to be re-written. (Bug#41948)

See also Bug#37145.

* Replication: When stopping and restarting the slave while it was replicating temporary tables, the slave server could crash or raise an assertion failure. This was due to the fact that, although temporary tables were saved between slave thread restarts, the reference to the thread being used (table->in_use) was not being properly updated when restarting, continuing to reference the old thread instead of the new one. This issue affected statement-based replication only. (Bug#41725)

* Use of ROUND() on a LONGTEXT or LONGBLOB column of a derived table could cause a server crash. (Bug#45152)

* DROP USER could fail to drop all privileges for an account if the PAD_CHAR_TO_FULL_LENGTH SQL mode was enabled. (Bug#45100)

* GROUP BY on a constant (single-row) InnoDB table joined to other tables caused a server crash. (Bug#44886)

* ALTER TABLE on a view crashed the server. (Bug#44860)

* Index Merge followed by a filesort could result in a server crash if sort_buffer_size was not large enough for all sort keys. (Bug#44810)
*

UNCOMPRESSED_LENGTH() returned a garbage result when passed a string shorter than 5 bytes. Now UNCOMPRESSED_LENGTH() returns NULL and generates a warning. (Bug#44796)

* Several Valgrind warnings were silenced. (Bug#44774, Bug#44792)

* Selecting RAND(N) function where N is a column of a constant table (table with a single row) failed with a SIGFPE signal. (Bug#44768)

* The PASSWORD() and OLD_PASSWORD() functions could read memory outside of an internal buffer when used with BLOB arguments. (Bug#44767)

* Conversion of a string to a different character set could use the same buffer for input and output, leading to incorrect results or warnings. (Bug#44743, Bug#44766)

* mysqld_safe could fail to find the logger program. (Bug#44736)

* Code that optimized a read-only XA transaction failed to reset the XID once the transaction was no longer active. (Bug#44672)

* A Valgrind warning related to transaction processing was silenced. (Bug#44664)

* innochecksum could incorrectly determine the input file name from the arguments. (Bug#44484)

* Incorrect time was reported at the end of mysqldump output. (Bug#44424)
*

Caching of GROUP BY expressions could lead to mismatches between compile-time and runtime calculations and cause a server crash. (Bug#44399)

* Lettercase conversion in multibyte cp932 or sjis character sequences could produce incorrect results. (Bug#44352)

* InnoDB was missing DB_ROLL_PTR information in Table Monitor COLUMNS output. (Bug#44320)

* Assertion failure could occur for duplicate-key errors in INSERT INTO ... SELECT statements. (Bug#44306)

* On 64-bit Windows systems, myisamchk did not handle key_buffer_size values larger than 4GB. (Bug#43940)

* For user-defined utf8 collations, attempts to store values too long for a column could cause a server crash. (Bug#43827)

* Invalidation of query cache entries due to table modifications could cause threads to hang inside the query cache with state “freeing items”. (Bug#43758)

* EXPLAIN EXTENDED could crash for UNION queries in which the last SELECT was not parenthesized and included an ORDER BY clause. (Bug#43612)

* Multiple-table updates for InnoDB tables could produce unexpected results. (Bug#43580)

* For DELETE statements with ORDER BY var, where var was a global system variable with a NULL value, the server could crash. (Bug#42778)

* Builds linked against OpenSSL had a memory leak in association with use of X509 certificates. (Bug#42158)

* There was a race condition when changing innodb_commit_concurrency at runtime from zero to nonzero or from nonzero to zero. Now this variable cannot be changed at runtime from zero to nonzero or vice versa. The value can still be changed from one nonzero value to another. (Bug#42101)

* SELECT ... INTO @var could produce values different from SELECT ... without the INTO clause. (Bug#42009)

* mysql_zap did not work on Mac OS X. (Bug#41883)

* Shared-memory connections did not work in Vista if mysqld was started from the command line. (Bug#41190)

* For views created with a column list clause, column aliases were not substituted when selecting through the view using a HAVING clause. (Bug#40825)

* A multiple-table DELETE involving a table self-join could cause a server crash. (Bug#39918)

* Creating an InnoDB table with a comment containing a '#' character caused foreign key constraints to be omitted. (Bug#39793)

* The mysql option --ignore-spaces was nonfunctional. (Bug#39101)

* If a query was such as to produce the error 1054 Unknown column '...' in 'field list', using EXPLAIN EXTENDED with the query could cause a server crash. (Bug#37362)

* In the mysql client, using a default character set of binary caused internal commands such as DELIMITER to become case sensitive. (Bug#37268)

* If the MYSQL_HISTFILE environment variable was set to /dev/null, the mysql client overwrote the /dev/null device file as a normal file. (Bug#34224)

* mysqld_safe mishandled certain parameters if they contained spaces. (Bug#33685)

* mysqladmin kill did not work for thread IDs larger than 32 bits. (Bug#32457)

* The InnoDB adaptive hash latch is released (if held) for serveral potentially long-running operations. This improves throughput for other queries if the current query is removing a temporary table, changing a temporary table from memory to disk, using CREATE TABLE ... SELECT, or performing a MyISAM repair on a table used within a transaction. (Bug#32149)

* Several client programs failed to interpret --skip-password as “send no password.” (Bug#28479)

* Output from mysql --html did not encode the <, >, or & characters. (Bug#27884)

* mysql_convert_table_format did not prevent converting tables to MEMORY or BLACKHOLE tables, which could result in data loss. (Bug#27149)

MySQL 5.1.35 查看版本資訊

更新時間:2009-06-05
更新細節:

What's new in this version:

* The .msi installer does not detect an existing root password on the initial configuration attempt. To work around this, install and configure MySQL as normal, but skip any changes to security. (There is a checkbox that allows this on the security screen of the configuration wizard.) Then check your settings:
o If the old root password and security settings are okay, you are done and can proceed to use MySQL.
o Otherwise, reconfigure with the wizard and make any changes on the second configuration attempt. The wizard will properly prompt for the existing root password and allow changes to be made.

This issue has been filed as Bug#45200 for correction in a future release.

* The Windows configuration wizard allows changes to InnoDB settings during a reconfiguration operation. For an upgrade, this may cause difficulties. To work around this, use one of the following alternatives:
o Do not change InnoDB settings.
o Copy files from the old InnoDB location to the new one.

This issue has been filed as Bug#45201 for correction in a future release.

Bugs fixed:

* Important Change: Replication: The transactional behavior of STOP SLAVE has changed. Formerly, it took effect immediately, even inside a transaction; now, it waits until the current replication event group (if any) has finished executing, or until the user issues a KILL QUERY or KILL CONNECTION statement.

This was done in order to solve the problem encountered when replication was stopped while a nontransactional slave was replicating a transaction on the master. (It was impossible to roll back a mixed-engines transaction when one of the engines was nontransactional, which meant that the slave could not safely re-apply any transaction that had been interrupted by STOP SLAVE.) (Bug#319, Bug#38205)

See also Bug#43217.

* Partitioning: When a value was equal to a PARTITION ... VALUES LESS THAN (value) value other than MAXVALUE, the corresponding partition was not pruned. (Bug#42944)
* Replication: Unrelated errors occurring during the execution of RESET SLAVE could cause the slave to crash. (Bug#44179)
* Replication: The --slave-skip-errors option had no effect when using row-based logging format. (Bug#39393)
* Replication: The following erors were not correctly reported:
o Failures during slave thread initialization

o Failures while initializing the relay log position (immediately following the starting of the slave thread)

o Failures while processing queries passed through the --init_slave option.

Information about these types of failures can now be found in the output of SHOW SLAVE STATUS. (Bug#38197)
* Replication: Killing the thread executing a DDL statement, after it had finished its execution but before it had written the binlog event, caused the error code in the binlog event to be set (incorrectly) to ER_SERVER_SHUTDOWN or ER_QUERY_INTERRUPTED, which caused replication to fail. (Bug#37145)

See also Bug#27571, Bug#22725.

* Replication: Column alises used inside subqueries were ignored in the binary log. (Bug#35515)
* Valgrind warnings for the DECODE(), ENCRYPT(), and FIND_IN_SET() functions were corrected. (Bug#44358, Bug#44365, Bug#44367)
* On Windows, entries for build-vs9.bat and build-vs9_x64.bat were missing in win/Makefile.am. (Bug#44353)
* Incomplete cleanup of JOIN_TAB::select during the filesort of rows for a GROUP BY clause inside a subquery caused a server crash. (Bug#44290)
* Not all lock types had proper descriptive strings, resulting in garbage output from mysqladmin debug. (Bug#44164)
* Use of HANDLER statements with INFORMATION_SCHEMA tables caused a server crash. Now HANDLER is prohibited with such tables. (Bug#44151)
* Invoking SHOW TABLE STATUS from within a stored procedure could cause a Packets out of order error. (Bug#43962)
* myisamchk could display a negative Max keyfile length value. (Bug#43950)
* On 64-bit systems, a key_buffer_size value larger than 4GB could couse MyISAM index corruption. (Bug#43932)
* mysqld_multi incorrectly passed --no-defaults to mysqld_safe. (Bug#43876)
* SHOW VARIABLES did not properly display the value of slave_skip_errors. (Bug#43835)
* On Windows, a server crash occurred for attempts to insert a floating-point value into a CHAR column with a maximum length less than the converted floating-point value length. (Bug#43833)
* Incorrect initialization of MyISAM table indexes could cause incorrect query results. (Bug#43737)
* libmysqld crashed when it was reinitialized. (Bug#43706, Bug#44091)
* InnoDB uses random numbers to generate dives into indexes for calculating index cardinality. However, under certain conditions, the algorithm did not generate random numbers, so ANALYZE TABLE did not update cardinality estimates properly. A new algorithm has been introduced with better randomization properties, together with a system variable, innodb_use_legacy_cardinality_algorithm, that controls which algorithm to use. The default value of the variable is 1 (ON), to use the original algorithm for compatibility with existing applications. The variable can be set to 0 (OFF) to use the new algorithm with improved randomness. (Bug#43660)
* UNION of floating-point numbers did unnecessary rounding. (Bug#43432)
* ALTER DATABASE ... UPGRADE DATA DIRECTORY NAME failed when the database contained views. (Bug#43385)
* Certain statements might open a table and then wait for an impending global read lock without noticing whether they hold a table being waiting for by the global read lock, causing a hang. Affected statements are SELECT ... FOR UPDATE, LOCK TABLES ... WRITE, TRUNCATE TABLE, and LOAD DATA INFILE. (Bug#43230)
* Using an XML function such as ExtractValue() more than once in a single query could produce erroneous results. (Bug#43183)

See also Bug#43937.

* Full-text prefix searches could hang the connection and cause 100% CPU consumption. (Bug#42907)
* InnoDB had excessive contention for a character set mutex. (Bug#42649)
* Incorrect elevation of warning messages to error messages for unsafe statements caused a server crash. (Bug#42640)
* CHECK TABLE suggested use of REPAIR TABLE for corrupt tables for storage engines not supported by REPAIR TABLE. Now CHECK TABLE suggests that the user dump and reload the table. (Bug#42563)
* Compressing a table with the myisampack utility caused the server to produce Valgrind warnings when it opened the table. (Bug#41541)
* For a MyISAM table with DELAY_KEY_WRITE enabled, the index file could be corrupted without the table being marked as crashed if the server was killed. (Bug#41330)
* Killing an INSERT ... SELECT statement for a MyISAM table could cause table corruption if the table had indexes. (Bug#40827)
* A multiple-table DELETE IGNORE statement involving a foreign key constraint caused an assertion failure. (Bug#40127)
* Multiple-table UPDATE statements did not properly activate triggers. (Bug#39953)
* The mysql_setpermission operation for removing database privileges removed global privileges instead. (Bug#39852)
* A stored routine contain a C-style comment could not be dumped and reloaded. (Bug#39559)
* In an UPDATE or DELETE via a secondary index, InnoDB did not store the cursor position. This made InnoDB crash in semi-consistent read while attempting to unlock a nonmatching record. (Bug#39320)
* The functions listed in Section 11.13.4.2.3, “Creating Geometry Values Using MySQL-Specific Functions”, previously accepted WKB arguments and returned WKB values. They now accept WKB or geometry arguments and return geometry values.

The functions listed in Section 11.13.4.2.2, “Creating Geometry Values Using WKB Functions”, previously accepted WKB arguments and returned geometry values. They now accept WKB or geometry arguments and return geometry values. (Bug#38990)

* On WIndows, running the server with myisam_use_mmap enabled caused MyISAM table corruption. (Bug#38848)
* CHECK TABLE did not properly check whether MyISAM tables created by servers from MySQL 4.0 or older needed to be upgraded. This could cause problems upgrading to MySQL 5.1 or higher. (Bug#37631)
* An UPDATE statement that updated a column using the same DES_ENCRYPT() value for each row actually updated different rows with different values. (Bug#35087)
* For shared-memory connections, the read and write methods did not properly handle asynchronous close events, which could lead to the client locking up waiting for a server response. For example, a call to mysql_real_query() would block forever on the client side if the executed statement was aborted on the server side. Thanks to Armin Schöffmann for the bug report and patch. (Bug#33899)
* CHECKSUM TABLE was not killable with KILL QUERY. (Bug#33146)
* myisamchk and myisampack were not being linked with the library that enabled support for * filename pattern expansion. (Bug#29248)
* For InnoDB tables that have their own .ibd tablespace file, a superfluous ibuf cursor restoration fails! message could be written to the error log. This warning has been suppressed. (Bug#27276)
* COMMIT did not delete savepoints if there were no changes in the transaction. (Bug#26288)
* Several memory allocation functions were not being checked for out-of-memory return values. (Bug#25058)

MySQL 5.1.34 查看版本資訊

更新時間:2009-04-20
更新細節:

What's new in this version:

* Replication: Important Note: Binary logging with --binlog_format=ROW failed when a change to be logged included more than 251 columns. This issue was not known to occur with mixed-format or statement-based logging. (Bug#42977)

See also Bug#42914.

* Replication: Assigning an invalid directory for the --slave-load-tmpdir caused the replication slave to crash. (Bug#42861)

* Replication: The mysql.procs_priv system table was not replicated. (Bug#42217)

* Replication: An INSERT DELAYED into a TIMESTAMP column issued concurrently with a an insert on the same column not using DELAYED, but applied after the other insert, was logged using the same timestamp as generated by the other (non-DELAYED) insert. (Bug#41719)

* Replication: The MIXED binary logging format did not switch to row-based mode for statements containing the LOAD_FILE() function. (Bug#39701)

* Replication: When the server SQL mode included IGNORE_SPACE, statement-based replication of LOAD DATA INFILE ... INTO tbl_name failed because the statement was read incorrectly from the binary log; a trailing space was omitted, causing the statement to fail with a syntax error when run on the slave. (Bug#22504)

See also Bug#43746.

* An attempt by a user who did not have the SUPER privilege to kill a system thread could cause a server crash. (Bug#43748)

* On Windows, incorrectly specified link dependencies in CMakeLists.txt resulted in link errors for mysql_embedded, mysqltest_embedded, and mysql_client_test_embedded. (Bug#43715)

* mysql crashed if a request for the current database name returned an empty result, such as after the client has executed a preceding SET sql_select_limit=0 statement. (Bug#43254)

* If the value of the version_comment system variable was too long, the mysql client displayed a truncated startup message. (Bug#43153)

* Queries of the following form returned an empty result:

SELECT ... WHERE ... (col=col AND col=col) OR ... (false expression)

(Bug#42957)

* The strings/CHARSET_INFO.txt file was not included in source distributions. (Bug#42937)

* A dangling pointer in mysys/my_error.c could lead to client crashes. (Bug#42675)

* Passing an unknown time zone specification to CONVERT_TZ() resulted in a memory leak. (Bug#42502)

* With more than two arguments, LEAST(), GREATEST(), and CASE could unnecessarily return Illegal mix of collations errors. (Bug#41627)

* The mysql client could misinterpret its input if a line was longer than an internal buffer. (Bug#41486)

* In the help command output displayed by mysql, the description for the c (clear) command was misleading. (Bug#41268)

* The load_defaults(), my_search_option_files() and my_print_default_files() functions in the C client library were subject to a race condition in multi-threaded operation. (Bug#40552)

* If --basedir was specified, mysqld_safe did not use it when attempting to locate my_print_defaults. (Bug#39326)

* When MySQL was configured with the --with-max-indexes=128 option, mysqld crashed. (Bug#36751)

* Setting the join_buffer_size variable to its minimum value produced spurious warnings. (Bug#36446)

* The use of NAME_CONST() can result in a problem for CREATE TABLE ... SELECT statements when the source column expressions refer to local variables. Converting these references to NAME_CONST() expressions can result in column names that are different on the master and slave servers, or names that are too long to be legal column identifiers. A workaround is to supply aliases for columns that refer to local variables.

Now a warning is issued in such cases that indicate possible problems. (Bug#35383)

* An attempt to check or repair an ARCHIVE table that had been subjected to a server crash returned a 144 internal error. The data appeared to be irrecoverable. (Bug#32880)

* The Time column for SHOW PROCESSLIST output and the value of the TIME column of the INFORMATION_SCHEMA.PROCESSLIST table now can have negative values. Previously, the column was unsigned and negative values were displayed incorrectly as large positive values. Negative values can occur if a thread alters the time into the future with SET TIMESTAMP = value or the thread is executing on a slave and processing events from a master that has its clock set ahead of the slave. (Bug#22047)

* Restoring a mysqldump dump file containing FEDERATED tables failed because the file contained the data for the table. Now only the table definition is dumped (because the data is located elsewhere). (Bug#21360)

MySQL 5.1.33 查看版本資訊

更新時間:2009-04-02
更新細節:

What's new in this version:

Functionality added or changed:

* mysql-test-run.pl now supports an --experimental=file_name option. It enables you to specify a file that contains a list of test cases that should be displayed with the [ exp-fail ] code rather than [ fail ] if they fail. (Bug#42888)

* The MD5 algorithm now uses the Xfree implementation. (Bug#42434)

* The query cache now checks whether a SELECT statement begins with SQL_NO_CACHE to determine whether it can skip checking for the query result in the query cache. This is not supported when SQL_NO_CACHE occurs within a comment. (Bug#37416)

Bugs fixed:

* Partitioning: A duplicate key error raised when inserting into a partitioned table used a different error code from that returned by such an error raised when inserting into a table that was not partitioned. (Bug#38719)
See also Bug#28842.

* Partitioning: Several error messages relating to partitioned tables were incorrect or missing. (Bug#36001)

* Replication: When --binlog_format was set to STATEMENT, a statement unsafe for statement-based logging caused an error or warning to be issued even if sql_log_bin was set to 0. (Bug#41980)

* Replication: When using MIXED replication format and temporary tables were created in statement-based mode, but a later operation in the same session caused a switch to row-based mode, the temporary tables were not dropped on the slave at the end of the session. (Bug#40013)
See also Bug#43046.
This regression was introduced by Bug#20499.

* Replication: When using the MIXED replication format, UPDATE and DELETE statements that searched for rows where part of the key had nullable BIT columns failed. This occurred because operations that inserted the data were replicated as statements, but UPDATE and DELETE statements affecting the same data were replicated using row-based format.

This issue did not occur when using statement-based replication (only) or row-based replication (only). (Bug#39753)
See also Bug#39648.

* Replication: The server SQL mode in effect when a stored procedure was created was not retained in the binary log. This could cause a CREATE PROCEDURE statement that succeeded on the master to fail on the slave.

This issue was first noticed when a stored procedure was created when ANSI_QUOTES was in effect on the master, but could possibly cause failed CREATE PROCEDURE statements and other problems on the slave when using other server SQL modes as well. (Bug#39526)

* Replication: If --secure-file-priv was set on the slave, it was unable to execute LOAD DATA INFILE statements sent from the master when using mixed-format or statement-based replication.

As a result of this fix, this security restriction is now ignored on the slave in such cases; instead the slave checks whether the files were created and should be read by the slave in its --slave-load-tmpdir. (Bug#38174)

* Replication: Server IDs greater than 2147483647 (232 – 1) were represented by negative numbers in the binary log. (Bug#37313)

* Replication: When its disk becomes full, a replication slave may wait while writing the binary log, relay log or MyISAM tables, continuing after space has been made available. The error message provided in such cases was not clear about the frequency with which checking for free space is done (once every 60 seconds), and how long the server waits after space has been freed before continuing (also 60 seconds); this caused users to think that the server had hung.

These issues have been addressed by making the error message clearer, and dividing it into two separate messages:
1. The error message Disk is full writing 'filename' (Errcode: error_code). Waiting for someone to free space... (Expect up to 60 secs delay for server to continue after freeing disk space) is printed only once.
2. The warning Retry in 60 secs, Message reprinted in 600 secs is printed once every for every 10 times that the check for free space is made; that is, the check is performed once each 60 seconds, but the reminder that space needs to be freed is printed only once every 10 minutes (600 seconds).

(Bug#22082)

* Replication: The statements DROP PROCEDURE IF EXISTS and DROP FUNCTION IF EXISTS were not written to the binary log if the procedure or function to be dropped did not exist. (Bug#13684)

See also Bug#25705.

* Use of USE INDEX hints could cause EXPLAIN EXTENDED to crash. (Bug#43354)

* For InnoDB tables, overflow in an AUTO_INCREMENT column could cause a server crash. (Bug#43203)

* On 32-bit Windows, mysqld could not use large buffers due to a 2GB user mode address limit. (Bug#43082)

* stderr should be unbuffered, but when the server redirected stderr to a file, it became buffered. (Bug#42790)

* The DATA_TYPE column of the INFORMATION_SCHEMA.COLUMNS table displayed the UNSIGNED attribute for floating-point data types. (The column should contain only the data type name.) (Bug#42758)

* For InnoDB tables, spurious duplicate-key errors could occur when inserting into an AUTO_INCREMENT column. (Bug#42714)

* mysqldump included views that were excluded with the --ignore-table option. (Bug#42635)

* An earlier bug fix resulted in the problem that the InnoDB plugin could not be used with a server that was compiled with the built-in InnoDB. To handle this two changes were made:
o The server now supports an --ignore-builtin-innodb option that causes the server to behave as if the built-in InnoDB is not present. This option causes other InnoDB options not to be recognized.
o For the INSTALL PLUGIN statement, the server reads option (my.cnf) files just as during server startup. This enables the plugin to pick up any relevant options from those files. Consequently, a plugin no longer is started with each option set to its default value.

Because of this change, it is possible to add plugin options to an option file even before loading a plugin (if the loose prefix is used). It is also possible to uninstall a plugin, edit my.cnf, and install the plugin again. Restarting the plugin this way enables it to the new option values without a server restart.
Note

To take advantage of this bug fix, InnoDB Plugin 1.0.4 or higher is required.

(Bug#42610)

This regression was introduced by Bug#29263.

* With the ONLY_FULL_GROUP_BY SQL mode enabled, some legal queries failed. (Bug#42567)

* Tables could enter open table cache for a thread without being properly cleaned up, leading to a server crash. (Bug#42419)

* For InnoDB tables, inserting into floating-point AUTO_INCREMENT columns failed. (Bug#42400)

* The InnoDB btr_search_drop_page_hash_when_freed() function had a race condition. (Bug#42279)

* Parsing of the optional microsecond component of DATETIME values did not fail gracefully when that component width was larger than the allowed six places. (Bug#42146)

* mysqldumpslow parsed the --debug and --verbose options incorrectly. (Bug#42027)

* Queries that used the loose index scan access method could return no rows. (Bug#41610)

* The error message for a too-long column comment was Unknown error rather than a more appropriate message. (Bug#41465)

* Use of SELECT * allowed users with rights to only some columns of a view to access all columns. (Bug#41354)

* The server did not robustly handle problems hang if a table opened with HANDLER needed to be re-opened because it had been altered to use a different storage engine that does not support HANDLER. The server also failed to set an error if the re-open attempt failed. These problems could cause the server to crash or hang. (Bug#41110, Bug#41112)

* SELECT statements executed concurrently with INSERT statements for a MyISAM table could cause incorrect results to be returned from the query cache. (Bug#41098)

* For prepared statements, multibyte character sets were not taking into account when calculating max_length for string values and mysql_stmt_fetch() could return truncated strings. (Bug#41078)

* Deprecation warnings that referred to MySQL 5.2 were changed to refer to MySQL 6.0. (Bug#41077)

* For user-defined variables in a query result, incorrect length values were returned in the result metadata. (Bug#41030)

* On Windows, starting the server with an invalid value for innodb_flush_method caused a crash. (Bug#40757)

* MySQL 5.1 crashed with index merge algorithm and merge tables.
A query in the MyISAM merge table caused a crash if the index merge algorithm was being used. (Bug#40675)

* With strict SQL mode enabled, setting a system variable to an out-of-bounds value caused an assertion failure. (Bug#40657)

* Table temporary scans were slower than necessary due to use of mmap rather than caching, even with the myisam_use_mmap system variable disabled. (Bug#40634)

* For a view that references a table in another database, mysqldump wrote the view name qualified with the current database name. This makes it impossible to reload the dump file into a different database. (Bug#40345)

* On platforms where long and pointer variables have different sizes, MyISAM could copy key statistics incorrectly, resulting in a server crash or incorrect cardinality values. (Bug#40321)

* DELETE tried to acquire write (not read) locks for tables accessed within a subquery of the WHERE clause. (Bug#39843)

* perror did not produce correct output for error codes 153 to 163. (Bug#39370)

* Several functions in libmysqld called exit() when an error occurred rather than returning an error to the caller. (Bug#39289)

* The innodb_log_arch_dir system variable is no longer available but was present in some of the sample option files included with MySQL distributions (such as my-huge.cnf). The line was present as a comment but uncommenting it would cause server startup failure so the line has been removed. (Bug#38249)

* --help output for myisamchk did not list the --HELP option. (Bug#38103)

* Comparisons between row constructors, such as (a, b) = (c, d) resulted in unnecessary Illegal mix of collations errors for string columns. (Bug#37601)

* If a user created a view that referenced tables for which the user had disjoint privileges, an assertion failure occurred. (Bug#37191)

* An argument to the MATCH() function that was an alias for an expression other than a column name caused a server crash. (Bug#36737)

* The event, general_log, and slow_log tables in the mysql database store server_id values, but did not use an UNSIGNED column and thus were not able to store the full range of ID values. (Bug#36540)

* On Windows, the _PC macro in my_global.h was causing problems for modern compilers. It has been removed because it is no longer used. (Bug#34309)

* For DROP FUNCTION with names that were qualified with a database name, the database name was handled in case-sensitive fashion even with lower_case_table_names set to 1. (Bug#33813)

* mysqldump --compatible=mysql40 emitted statements referring to the character_set_client system variable, which is unknown before MySQL 4.1. Now the statements are enclosed in version-specific comments. (Bug#33550)

* Use of MBR spatial functions such as MBRTouches() with columns of InnoDB tables caused a server crash rather than an error. (Bug#31435)

* The mysql client mishandled input parsing if a delimiter command was not first on the line. (Bug#31060)

* SHOW PRIVILEGES listed the CREATE ROUTINE privilege as having a context of Functions,Procedures, but it is a database-level privilege. (Bug#30305)

* mysqld --help did not work as root. (Bug#30261)

* CHECK TABLE, REPAIR TABLE, ANALYZE TABLE, and OPTIMIZE TABLE erroneously reported a table to be corrupt if the table did not exist or the statement was terminated with KILL. (Bug#29458)

* SHOW TABLE STATUS could fail to produce output for tables with non-ASCII characters in their name. (Bug#25830)

* Allocation of stack space for error messages could be too small on HP-UX, leading to stack overflow crashes. (Bug#21476)

* Floating-point numbers could be handled with different numbers of digits depending on whether the text or prepared-statement protocol was used. (Bug#21205)

* ROUND() sometimes returned different results on different platforms. (Bug#15936)

MySQL 5.1.32 查看版本資訊

更新時間:2009-03-05
更新細節:

What's new in this version:

Functionality added or changed:

* Important Change: Replication: RESET MASTER and RESET SLAVE
now reset the values shown for Last_IO_Error, Last_IO_Errno,
Last_SQL_Error, and Last_SQL_Errno in the output of SHOW SLAVE
STATUS. (Bug#34654: http://bugs.mysql.com/34654)

* Incompatible Change: The fix for
Bug#33699: http://bugs.mysql.com/33699 introduced a change to
the UPDATE statement such that assigning NULL to a NOT NULL
column caused an error even when strict SQL mode was not
enabled. The original behavior before was that such
assignments caused an error only in strict SQL mode, and
otherwise set the column to the the implicit default value for
the column data type and generated a warning. (For information
about implicit default values, see Section 10.1.4, "Data Type
Default Values.")
The change caused compatibility problems for applications that
relied on the original behavior. It also caused replication
problems between servers that had the original behavior and
those that did not, for applications that assigned NULL to NOT
NULL columns in UPDATE statements without strict SQL mode
enabled. This change has been reverted so that UPDATE again
had the original behavior. Problems can still occur if you
replicate between servers that have the modified UPDATE
behavior and those that do not.
(Bug#39265: http://bugs.mysql.com/39265)

* The libedit library was upgraded to version 2.11.
(Bug#42433: http://bugs.mysql.com/42433)

Bugs fixed:

* Security Fix: Using an XPath expression employing a scalar
expression as a FilterExpr
(http://www.w3.org/TR/xpath#NT-FilterExpr) with ExtractValue()
or UpdateXML() caused the server to crash. Such expressions
now cause an error instead.
(Bug#42495: http://bugs.mysql.com/42495)

* Replication: START SLAVE UNTIL did not work correctly with
--replicate-same-server-id enabled; when started with this
option, the slave did not perform events recorded in the relay
log and that originated from a different master.
Log rotation events are automatically generated and written
when rotating the binary log or relay log. Such events for
relay logs are usually ignored by the slave SQL thread because
they have the same server ID as that of the slave. However,
when --replicate-same-server-id was enabled, the rotation
event for the relay log was treated as if it originated on the
master, because the log's name and position were incorrectly
updated. This caused the MASTER_POS_WAIT() function always to
return NULL and thus to fail.
(Bug#38734: http://bugs.mysql.com/38734,
Bug#38934: http://bugs.mysql.com/38934)

* Replication: TRUNCATE statements failed to replicate when
statement-based binary logging mode was not available. The
issue was observed when using InnoDB with the transaction
isolation level set to READ UNCOMMITTED (thus forcing InnoDB
not to allow statement-based logging). However, the same
behavior could be reproduced using any transactional storage
engine supporting only row-based logging, regardless of the
isolation level. This was due to two separate problems:

1. An error was printed by InnoDB for TRUNCATE when using
statement-based logging mode where the transaction
isolation level was set to READ COMMITTED or READ
UNCOMMITTED, because InnoDB permits statement-based
replication for DML statements. However, TRUNCATE is not
transactional; since it is the equivalent of DROP TABLE
followed by CREATE TABLE, it is actually DDL, and should
therefore be allowed to be replicated as a statement.

2. TRUNCATE was not logged in mixed mode because of the
error just described; however, this error was not
reported to the client.

As a result of this fix, TRUNCATE is now treated as DDL for
purposes of binary logging and replication; that is, it is
always logged as a statement and so no longer causes an error
when replicated using a transactional storage engine such as
InnoDB. (Bug#36763: http://bugs.mysql.com/36763)
See also Bug#42643: http://bugs.mysql.com/42643.

* Replication: mysqlbinlog replay of CREATE TEMPORARY TABLE ...
LIKE statements and of TRUNCATE statements used on temporary
tables failed with Error 1146 (Table ... doesn't exist).
(Bug#35583: http://bugs.mysql.com/35583)

* Replication: In statement mode, mysqlbinlog failed to issue a
SET @@autommit statement when the autocommit mode was changed.
(Bug#34541: http://bugs.mysql.com/34541)

* Replication: LOAD DATA INFILE statements did not replicate
correctly from a master running MySQL 4.1 to a slave running
MySQL 5.1 or later. (Bug#31240: http://bugs.mysql.com/31240)

* A '%' character in SQL statements could cause the server to
crash. (Bug#42634: http://bugs.mysql.com/42634)

* An optimization introduced for
Bug#37553: http://bugs.mysql.com/37553 required an explicit
cast to be added for some uses of TIMEDIFF() because automatic
casting could produce incorrect results. (It was necessary to
use TIME(TIMEDIFF(...)).)
(Bug#42525: http://bugs.mysql.com/42525)

* On the IBM i5 platform, the MySQL configuration process caused
the system version of pthread_setschedprio() to be used. This
function returns SIGILL on i5 because it is not supported,
causing the server to crash. Now the my_pthread_setprio()
function in the mysys library is used instead.
(Bug#42524: http://bugs.mysql.com/42524)

* The SSL certficates included with MySQL distributions were
regenerated because the previous ones had expired.
(Bug#42366: http://bugs.mysql.com/42366)

* User variables within triggers could cause a crash if the
mysql_change_user() C API function was invoked.
(Bug#42188: http://bugs.mysql.com/42188)

* Dependent subqueries such as the following caused a memory
leak proportional to the number of outer rows:
SELECT COUNT(*) FROM t1, t2 WHERE t2.b
IN (SELECT DISTINCT t2.b FROM t2 WHERE t2.b = t1.a);
(Bug#42037: http://bugs.mysql.com/42037)

* Some queries using NAME_CONST(.. COLLATE ...) led to a server
crash due to a failed type cast.
(Bug#42014: http://bugs.mysql.com/42014)

* On Mac OS X, some of the universal client libraries were not
actually universal and were missing code for one or more
architectures. (Bug#41940: http://bugs.mysql.com/41940)

* String reallocation could cause memory overruns.
(Bug#41868: http://bugs.mysql.com/41868)

* Setting innodb_locks_unsafe_for_binlog should be equivalent to
setting the transaction isolation level to READ COMMITTED.
However, if both of those things were done, non-matching
semi-consistently read rows were not unlocked when they should
have been. (Bug#41671: http://bugs.mysql.com/41671)

* REPAIR TABLE crashed for compressed MyISAM tables.
(Bug#41574: http://bugs.mysql.com/41574)

* For a TIMESTAMP NOT NULL DEFAULT ... column, storing NULL as
the return value from some functions caused a "cannot be NULL"
error. NULL returns now correctly cause the column default
value to be stored. (Bug#41370: http://bugs.mysql.com/41370)

* The server cannot execute INSERT DELAYED statements when
statement-based binary logging is enabled, but the error
message displayed only the table name, not the entire
statement. (Bug#41121: http://bugs.mysql.com/41121)

* FULLTEXT indexes did not work for Unicode columns that used a
custom UCA collation. (Bug#41084: http://bugs.mysql.com/41084)

* The Windows installer displayed incorrect product names in
some images. (Bug#40845: http://bugs.mysql.com/40845)

* SELECT statements could be blocked by INSERT DELAYED
statements that were waiting for a lock, even with
low_priority_updates enabled.
(Bug#40536: http://bugs.mysql.com/40536)

* The query cache stored only partial query results if a
statement failed while the results were being sent to the
client. This could cause other clients to hang when trying to
read the cached result. Now if a statement fails, the result
is not cached. (Bug#40264: http://bugs.mysql.com/40264)

* When a MEMORY table became full, the error generated was
returned to the client but was not written to the error log.
(Bug#39886: http://bugs.mysql.com/39886)

* The expression ROW(...) IN (SELECT ... FROM DUAL) always
returned TRUE. (Bug#39069: http://bugs.mysql.com/39069)

* The greedy optimizer could cause a server crash due to
improper handling of nested outer joins.
(Bug#38795: http://bugs.mysql.com/38795)

* Use of COUNT(DISTINCT) prevented NULL testing in the HAVING
clause. (Bug#38637: http://bugs.mysql.com/38637)

* Enabling the sync_frm system variable had no effect on the
handling of .frm files for views.
(Bug#38145: http://bugs.mysql.com/38145)

* Setting myisam_repair_threads greater than 1 caused a server
crash for table repair or alteration operations for MyISAM
tables with multiple FULLTEXT indexes.
(Bug#37756: http://bugs.mysql.com/37756)

* The mysql client sometimes improperly interpreted string
escape sequences in non-string contexts.
(Bug#36391: http://bugs.mysql.com/36391)

* The query cache stored packets containing the server status of
the time when the cached statement was run. This might lead to
an incorrect transaction status on the client side if a
statement was cached during a transaction and later served
outside a transaction context (or vice versa).
(Bug#36326: http://bugs.mysql.com/36326)

* If the system time was adjusted backward during query
execution, the apparent execution time could be negative. But
in some cases these queries would be written to the slow query
log, with the negative execution time written as a large
unsigned number. Now statements with apparent negative
execution time are not written to the slow query log.
(Bug#35396: http://bugs.mysql.com/35396)

* libmysqld was not built with all character sets.
(Bug#32831: http://bugs.mysql.com/32831)

* For mysqld_multi, using the --mysqld=mysqld_safe option caused
the --defaults-file and --defaults-extra-file options to
behave the same way. (Bug#32136: http://bugs.mysql.com/32136)

* For Solaris package installation using pkgadd, the postinstall
script failed, causing the system tables in the mysql database
not to be created. (Bug#31164: http://bugs.mysql.com/31164)

* If the default database was dropped, the value of
character_set_database was not reset to character_set_server
as it should have been.
(Bug#27208: http://bugs.mysql.com/27208)

MySQL 5.1.31 查看版本資訊

更新時間:2009-02-05
更新細節:

What's new in this version:

Functionality added or changed:

*A new status variable, Queries, indicates the number of statements executed by the server. This includes statements executed within stored programs, unlike the Questions variable which includes only statements sent to the server by clients. (Bug#41131)
*Performance of SELECT * retrievals from INFORMATION_SCHEMA.COLUMNS was improved slightly. (Bug#38918)
*Previously, index hints did not work for FULLTEXT searches. Now they work as follows:

For natural language mode searches, index hints are silently ignored. For example, IGNORE INDEX(i) is ignored with no warning and the index is still used.

For boolean mode searches, index hints with FOR ORDER BY or FOR GROUP BY are silently ignored. Index hints with FOR JOIN or no FOR modifier are honored. In contrast to how hints apply for non-FULLTEXT searches, the hint is used for all phases of query execution (finding rows and retrieval, grouping, and ordering). This is true even if the hint is given for a non-FULLTEXT index. (Bug#38842)