MySQL

4.0.2

Released on 1 Jul 2002
MySQL 4.0.2 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 http://www.mysql.com/about/legal/lifecycle/#calendar. 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.

  • Cleaned up NULL handling for default values in DESCRIBE tbl_name.

  • Fixed TRUNCATE() to round up negative values to the nearest integer.

  • Fixed buffer overflow problem if someone specified a too-long --datadir option to mysqld. (CVE-2002-0969)

  • Changed --chroot=path option to execute chroot() immediately after all options have been parsed.

  • Do not allow database names that contain \.

  • lower_case_table_names now also applies to database names.

  • Added XOR operator (logical and bitwise XOR) with ^ as a synonym for bitwise XOR.

  • Added function IS_FREE_LOCK('lock_name'). Based on code contributed by Hartmut Holzgraefe .

  • Removed mysql_ssl_clear() from C API, as it was not needed.

  • DECIMAL and NUMERIC types can now read exponential numbers.

  • Added SHA1() function to calculate 160 bit hash value as described in RFC 3174 (Secure Hash Algorithm). This function can be considered a cryptographically more secure equivalent of MD5(). See Section 11.12, “Encryption and Compression Functions”.

  • Added AES_ENCRYPT() and AES_DECRYPT() functions to perform encryption according to AES standard (Rijndael). See Section 11.12, “Encryption and Compression Functions”.

  • Added --single-transaction option to mysqldump, allowing a consistent dump of InnoDB tables. See Section 4.5.4, “mysqldump — A Database Backup Program”.

  • Fixed bug in innodb_log_group_home_dir in SHOW VARIABLES.

  • Fixed a bug in optimizer with merge tables when nonunique values are used in summing up (causing crashes).

  • Fixed a bug in optimizer when a range specified makes index grouping impossible (causing crashes).

  • Fixed a rare bug when FULLTEXT index is present and no tables are used.

  • Added privileges CREATE TEMPORARY TABLES, EXECUTE, LOCK TABLES, REPLICATION CLIENT, REPLICATION SLAVE, SHOW DATABASES and SUPER. To use these, you must run the mysql_fix_privilege_tables script after upgrading.

  • Fixed query cache align data bug.

  • Fixed mutex bug in replication when reading from master fails.

  • Added missing mutex in TRUNCATE TABLE. This fixes some core dump/hangup problems when using TRUNCATE TABLE.

  • Fixed bug in multiple-table DELETE when optimizer uses only indexes.

  • Fixed that ALTER TABLE tbl_name RENAME new_tbl_name is as fast as RENAME TABLE.

  • Fixed bug in GROUP BY with two or more columns, where at least one column can contain NULL values.

  • Use Turbo Boyer-Moore algorithm to speed up LIKE "%keyword%" searches.

  • Fixed bug in DROP DATABASE with symlink.

  • Fixed crash in REPAIR ... USE_FRM.

  • Fixed bug in EXPLAIN with LIMIT offset != 0.

  • Fixed bug in phrase operator "..." in boolean full-text search.

  • Fixed bug that caused duplicated rows when using truncation operator * in boolean full-text search.

  • Fixed bug in truncation operator of boolean full-text search (incorrect results when there are only +word*s in the query).

  • Fixed bug in boolean full-text search that caused a crash when an identical MATCH expression that did not use an index appeared twice.

  • Query cache is now automatically disabled in mysqldump.

  • Fixed problem on Windows 98 that made sending of results very slow.

  • Boolean full-text search weighting scheme changed to something more reasonable.

  • Fixed bug in boolean full-text search that caused MySQL to ignore queries of ft_min_word_len characters.

  • Boolean full-text search now supports phrase searches.

  • New configure option --without-query-cache.

  • Memory allocation strategy for root memory changed. Block size now grows with number of allocated blocks.

  • INET_NTOA() now returns NULL if you give it an argument that is too large (greater than the value corresponding to 255.255.255.255).

  • Fix SQL_CALC_FOUND_ROWS to work with UNION. It works only if the first SELECT has this option and if there is global LIMIT for the entire statement. For the moment, this requires using parentheses for individual SELECT queries within the statement.

  • Fixed bug in SQL_CALC_FOUND_ROWS and LIMIT.

  • Do not give an error for CREATE TABLE ...(... VARCHAR(0)).

  • Fixed SIGINT and SIGQUIT problems in mysql.cc on Linux with some glibc versions.

  • Fixed bug in convert.cc, which is caused by having an incorrect net_store_length() linked in the CONVERT::store() method.

  • DOUBLE and FLOAT columns now honor the UNSIGNED flag on storage.

  • InnoDB now retains foreign key constraints through ALTER TABLE and CREATE/DROP INDEX.

  • InnoDB now enables foreign key constraints to be added through the ALTER TABLE syntax.

  • InnoDB tables can now be set to automatically grow in size (auto-extend).

  • Added --ignore-lines=n option to mysqlimport. This has the same effect as the IGNORE n LINES clause for LOAD DATA.

  • Fixed bug in UNION with last offset being transposed to total result set.

  • REPAIR ... USE_FRM added.

  • Fixed that DEFAULT_SELECT_LIMIT is always imposed on UNION result set.

  • Fixed that some SELECT options can appear only in the first SELECT.

  • Fixed bug with LIMIT with UNION, where last select is in the braces.

  • Fixed that full-text works fine with UNION operations.

  • Fixed bug with indexless boolean full-text search.

  • Fixed bug that sometimes appeared when full-text search was used with const tables.

  • Fixed incorrect error value when doing a SELECT with an empty HEAP table.

  • Use ORDER BY column DESC now sorts NULL values first. (In other words, NULL values sort first in all cases, whether or not DESC is specified.) This is changed back in 4.0.10.

  • Fixed bug in WHERE key_name='constant' ORDER BY key_name DESC.

  • Fixed bug in SELECT DISTINCT ... ORDER BY DESC optimization.

  • Fixed bug in ... HAVING 'GROUP_FUNCTION'(xxx) IS [NOT] NULL.

  • Fixed bug in truncation operator for boolean full-text search.

  • Permit value of --user option for mysqld to be specified as a numeric user ID (--user=user_id).

  • Fixed a bug where SQL_CALC_ROWS returned an incorrect value when used with one table and ORDER BY and with InnoDB tables.

  • Fixed that SELECT 0 LIMIT 0 doesn't hang thread.

  • Fixed some problems with USE/IGNORE INDEX when using many keys with the same start column.

  • Do not use table scan with BerkeleyDB and InnoDB tables when we can use an index that covers the whole row.

  • Optimized InnoDB sort-buffer handling to take less memory.

  • Fixed bug in multiple-table DELETE and InnoDB tables.

  • Fixed problem with TRUNCATE TABLE and InnoDB tables that produced the error Can't execute the given command because you have active locked tables or an active transaction.

  • Added NO_UNSIGNED_SUBTRACTION to the set of flags that may be specified with the --sql-mode option for mysqld. It disables unsigned arithmetic rules when it comes to subtraction. (This makes MySQL 4.0 behave more like 3.23 with UNSIGNED columns).

  • The result returned for all bit operators (|, <<, ...) is now of type unsigned integer.

  • Added detection of nan values in MyISAM to make it possible to repair tables with nan in float or double columns.

  • Fixed new bug in myisamchk where it didn't correctly update number of parts in the MyISAM index file.

  • Changed to use autoconf 2.52 (from autoconf 2.13).

  • Fixed optimization problem where the MySQL Server was in preparing state for a long time when selecting from an empty table which had contained a lot of rows.

  • Fixed bug in complicated join with const tables. This fix also improves performance a bit when referring to another table from a const table.

  • First pre-version of multiple-table UPDATE statement.

  • Fixed bug in multiple-table DELETE.

  • Fixed bug in SELECT CONCAT(argument_list) ... GROUP BY 1.

  • INSERT ... SELECT did a full rollback in case of an error. Fixed so that we only roll back the last statement in the current transaction.

  • Fixed bug with empty expression for boolean full-text search.

  • Fixed core dump bug in updating full-text key from/to NULL.

  • ODBC compatibility: Added BIT_LENGTH() function.

  • Fixed core dump bug in GROUP BY BINARY column.

  • Added support for NULL keys in HEAP tables.

  • Use index for ORDER BY in queries of type: SELECT * FROM t WHERE key_part1=1 ORDER BY key_part1 DESC, key_part2 DESC

  • Fixed bug in FLUSH QUERY CACHE.

  • Added CAST() and CONVERT() functions. The CAST and CONVERT functions are nearly identical and mainly useful when you want to create a column with a specific type in a CREATE ... SELECT statement. For more information, read Section 11.10, “Cast Functions and Operators”.

  • CREATE ... SELECT on DATE and TIME functions now create columns of the expected type.

  • Changed order in which keys are created in tables.

  • Added new columns Null and Index_type to SHOW INDEX output.

  • Added --no-beep and --prompt options to mysql command-line client.

  • New feature: management of user resources.

    GRANT ... WITH MAX_QUERIES_PER_HOUR N1               MAX_UPDATES_PER_HOUR N2               MAX_CONNECTIONS_PER_HOUR N3;

    See Section 5.6.4, “Setting Account Resource Limits”.

  • Added mysql_secure_installation to the scripts/ directory.