Released on 13 Oct 2005
MySQL 4.1.15 Changelog

End of Product Lifecycle. Active development and support for MySQL Database Server versions 3.23, 4.0, and 4.1 has ended. For details, see Please consider upgrading to a recent version. Further updates to the content of this manual will be minimal. All formats of this manual will continue to be available until 31 Dec 2010.

Functionality Added or Changed

  • MySQL Cluster: The parsing of the CLUSTERLOG command by ndb_mgm was corrected to permit multiple items. (Bug #12833)

  • Replication: Better detection of connection timeout for replication servers on Windows enables elimination of extraneous Lost connection errors in the error log. (Bug #5588)

  • A new command line argument was added to mysqld to ignore client character set information sent during handshake, and use server side settings instead, to reproduce 4.0 behavior :

    mysqld --skip-character-set-client-handshake

    (Bug #9948)

  • When using IF NOT EXISTS with CREATE DATABASE or CREATE TABLE, a warning now is generated if the database or table already exists. : (Bug #6008)

  • Added the myisam_stats_method, which controls whether NULL values in indexes are considered the same or different when collecting statistics for MyISAM tables. This influences the query optimizer as described in Section 7.4.4, “MyISAM Index Statistics Collection”. (Bug #12232)

  • The limit of 255 characters on the input buffer for mysql on Windows has been lifted. The exact limit depends on what the system permits, but can be up to 64KB characters. A typical limit is 16KB characters. (Bug #12929)

  • RAND() no longer permits nonconstant initializers. (Previously, the effect of nonconstant initializers is undefined.) (Bug #6172)

Bugs Fixed

  • MySQL Cluster: With two mgmd processes in a cluster, ndb_mgm output for SHOW would display the same IP address for both processes, even when they were on different hosts. (Bug #11595)

  • MySQL Cluster: Adding an index to a table with a large number of columns (more then 100) crashed the storage node. (Bug #13316)

  • MySQL Cluster: Improved error messages related to file system issues. (Bug #11218)

  • MySQL Cluster: The cluster management client START BACKUP command could be interrupted by a SHOW command. (Bug #13054)

  • MySQL Cluster: Multiple ndb_mgmd processes in a cluster did not know each other's IP addresses. (Bug #12037)

  • MySQL Cluster: When it could not copy a fragment, ndbd exited without printing a message about the condition to the error log. Now the message is written. (Bug #12900)

  • MySQL Cluster: When a schema was detected to be corrupt, ndb neglected to close it, resulting in a file already open error if the schema was opened again later. written. (Bug #12027)

  • MySQL Cluster: LOAD DATA INFILE with a large data file failed. (Bug #10694)

  • MySQL Cluster: A cluster shutdown following the crash of a data node failed to terminate any remaining node processes, even though ndb_mgm showed the shutdown request as having been completed. (Bug #9996, Bug #10938, Bug #11623)

  • MySQL Cluster: When deleting a great many (tens of thousands of) rows at once from an NDB table, an improperly dereferenced pointer could cause the mysqld process to crash. (Bug #9282)

  • MySQL Cluster: Invalid values in config.ini caused ndb_mgmd to crash. (Bug #12043)

  • MySQL Cluster: An ALTER TABLE statement caused loss of data stored prior to the issuing of the command. (Bug #12118)

  • MySQL Cluster: Updating a column of one of the TEXT types during a cluster backup could cause the ndbd process to crash, due to the incorrect use of charset-normalized reads. This could also lead to character data having the wrong lettercase in the backup if such a column was updated during the backup; for example, supposing that the column used latin_ci, then aAa might be stored in the backup as AAA. (Bug #12950)

  • MySQL Cluster: MySQL failed to compile when --with-ndb-ccflags was specified. (Bug #11538)

  • MySQL Cluster: When a Disk is full condition occurred, ndbd exited without reporting this condition in the error log. (Bug #12716)

  • Replication: The --replicate-rewrite-db and --replicate-do-table options did not work for statements in which tables were aliased to names other than those listed by the options. (Bug #11139)

  • Replication: If a DROP DATABASE fails on a master server due to the presence of a nondatabase file in the database directory, the master have the database tables deleted, but not the slaves. To deal with failed database drops, we now write DROP TABLE statements to the binary log for the tables so that they are dropped on slaves. (Bug #4680)

  • Replication: When any --replicate-wild-* option is used, the slave ignores SET ONE_SHOT TIME_ZONE statements as belonging to a nonreplicated table. (Bug #12542)

  • SHOW CREATE TABLE did not display any FOREIGN KEY clauses if a temporary file could not be created. Now SHOW CREATE TABLE displays an error message in an SQL comment if this occurs. (Bug #13002)

  • The counters for the Key_read_requests, Key_reads, Key_write_requests, and Key_writes status variables were changed from unsigned long to unsigned longlong to accommodate larger values before the variables roll over and restart from 0. (Bug #12920)

  • A SELECT DISTINCT query with a constant value for one of the columns would return only a single row. (Bug #12625)

  • A client connection thread cleanup problem caused the server to crash when closing the connection if the binary log was enabled. (Bug #12517)

  • The ARCHIVE storage engine does not support deletes, but it was possible to delete by using DELETE or TRUNCATE TABLE with a FEDERATED table that points to an ARCHIVE table. (Bug #12836)

  • If a client has opened an InnoDB table for which the .ibd file is missing, InnoDB would not honor a DROP TABLE statement for the table. (Bug #12852)

  • UNION of two DECIMAL columns returned the wrong field type. (Bug #13372)

  • If special characters such as '_' , '%', or the escape character were included within the prefix of a column index, LIKE pattern matching on the indexed column did not return the correct result. (Bug #13046, Bug #13919)

  • For VARCHAR columns with the ucs2 character set, InnoDB trimmed trailing 0x20 bytes rather than 0x0020 words, resulting in incorrect index lookups later. (Bug #12178)

  • Display of the AUTO_INCREMENT attribute by SHOW CREATE TABLE was not controlled by the NO_FIELD_OPTIONS SQL mode as it should have been. (Bug #7977)

  • The CHECKSUM TABLE statement returned incorrect results for tables with deleted rows. After upgrading, users who used stored checksum information to detect table changes should rebuild their checksum data. (Bug #12296)

  • On Windows, the server was preventing tables from being created if the table name was a prefix of a forbidden name. For example, nul is a forbidden name because it is the same as a Windows device name, but a table with the name of n or nu was being forbidden as well. (Bug #12325)

  • Deadlock occurred when several account management statements were run (particularly between FLUSH PRIVILEGES/SET PASSWORD and GRANT/REVOKE statements). (Bug #12423)

  • Aggregate functions sometimes incorrectly were permitted in the WHERE clause of UPDATE and DELETE statements. (Bug #13180)

  • The server could over-allocate memory when performing a FULLTEXT search for stopwords only. (Bug #13582)

  • Reverted a change introduced in MySQL 4.1.13 (SHOW FIELDS truncated the TYPE column to 40 characters). This fix was reverted for MySQL 4.1 because it broke existing applications. The fix will be made in MySQL 5.0 instead (5.0.13). (Bug #12817)

    References: The patch for the following bug was reverted: Bug #7142.

  • SELECT GROUP_CONCAT(...) FROM DUAL in a subquery could cause the client to hang. (Bug #12861)

  • A concurrency problem for CREATE ... SELECT could cause a server crash. (Bug #12845)

  • CHECKSUM TABLE locked InnoDB tables and did not use a consistent read. (Bug #12669)

  • DELETE or UPDATE for an indexed MyISAM table could fail. This was due to a change in end-space comparison behavior from 4.0 to 4.1. (Bug #12565)

  • MEMORY tables using B-Tree index on 64-bit platforms could produce false table is full errors. (Bug #12460)

  • A prepared statement failed with Illegal mix of collations if the client character set was utf8 and the statement used a table that had a character set of latin1. (Bug #12371)

  • Performing an IS NULL check on the MIN() or MAX() of an indexed column in a complex query could produce incorrect results. (Bug #12695)

  • On Windows when the --innodb_buffer_pool_awe_mem_mb option has been given, the server detects whether AWE support is available and has been compiled into the server, and displays an appropriate error message if not. (Bug #6581)

  • InnoDB was too permissive with LOCK TABLE ... READ LOCAL and permitted new inserts into the table. Now READ LOCAL is equivalent to READ for InnoDB. This will cause slightly more locking in mysqldump, but makes InnoDB table dumps consistent with MyISAM table dumps. (Bug #12410)

  • For queries with DISTINCT and WITH ROLLUP, the DISTINCT should be applied after the rollup operation, but was not always. (Bug #12887)

  • ALTER TABLE db_name.t RENAME t did not move the table to default database unless the new name was qualified with the database name. (Bug #11493)

  • MySQL would pass an incorrect key length to storage engines for MIN(). This could cause spurious warnings such as InnoDB: Warning: using a partial-field key prefix in search to appear in the .err log. (Bug #13218, Bug #11039)

  • The data type for DECIMAL columns was not respected when updating the column from another column. For example, updating a DECIMAL(10,1) column with the value from a DECIMAL(10,5) column resulted in a DECIMAL(10,5) value being stored. Similarly, altering a column with a DECIMAL(10,5) data type to a DECIMAL(10,1) data type did not properly convert data values. (Bug #7598)

  • Shared-memory connections were not working on Windows. (Bug #12723)

  • LOAD DATA INFILE did not respect the NO_AUTO_VALUE_ON_ZERO SQL mode setting. (Bug #12053)

  • After changing the character set with SET CHARACTER SET, the result of the GROUP_CONCAT() function was not converted to the proper character set. (Bug #12829)

  • Queries against a MERGE table that has a composite index could produce incorrect results. (Bug #9112)

  • GROUP_CONCAT() ignored an empty string if it was the first value to occur in the result. (Bug #12863)

  • TRUNCATE TABLE did not work with TEMPORARY InnoDB tables. (Bug #11816)

  • An optimizer estimate of zero rows for a nonempty InnoDB table used in a left or right join could cause incomplete rollback for the table. (Bug #12779)

  • Use of a user-defined function within the HAVING clause of a query resulted in an Unknown column error. (Bug #11553)

  • Users created using an IP address or other alias rather than a host name listed in /etc/hosts could not set their own passwords. (Bug #12302)

  • The value of character_set_results could be set to NULL, but returned the string "NULL" when retrieved. (Bug #12363)

  • Outer join elimination was erroneously applied for some queries that used a NOT BETWEEN condition, an IN(value_list) condition, or an IF() condition. (Bug #12102, Bug #12101)

  • A UNION of long utf8 VARCHAR columns was sometimes returned as a column with a LONGTEXT data type rather than VARCHAR. This could prevent such queries from working at all if selected into a MEMORY table because the MEMORY storage engine does not support the TEXT data types. (Bug #12537)

  • A column that can be NULL was not handled properly for WITH ROLLUP in a subquery or view. (Bug #12885)

  • Spatial index corruption could occur during updates. (Bug #9645)

  • Queries that created implicit temporary tables could return incorrect data types for some columns. (Bug #11718)

  • On HP-UX 11.x (PA-RISC), the -L option caused mysqlimport to crash. (Bug #12958)

  • The have_innodb read-only system variable could not be selected with SELECT @@have_innodb. (Bug #9613)

  • After running configure with the --with-embedded-privilege-control option, the embedded server failed to build. (Bug #13501)

  • The server crashed when one thread resized the query cache while another thread was using it. (Bug #12848)

  • mysqld_multi now quotes arguments on command lines that it constructs to avoid problems with arguments that contain shell metacharacters. (Bug #11280)

  • Comparisons involving row constructors containing constants could cause a server crash. (Bug #13356)

  • myisampack did not properly pack BLOB values larger than 224 bytes. (Bug #4214)

  • The LIKE ... ESCAPE syntax produced invalid results when escape character was larger than one byte. (Bug #12611)

  • MySQL programs in binary distributions for Solaris 8/9/10 x86 systems would not run on Pentium III machines. (Bug #6772)

  • MIN() and MAX() sometimes returned a non-NULL value for an empty row set (for example, SELECT MAX(1) FROM empty_table). (Bug #12882)