Added --xml option to mysql for producing XML output.
Added full-text variables ft_min_word_len, ft_max_word_len, and ft_max_word_len_for_sort.
Added documentation for libmysqld, the embedded MySQL server library. Also added example programs (a mysql client and mysqltest test program) which use libmysqld.
Removed all Gemini hooks from MySQL server.
Removed my_thread_init() and my_thread_end() from mysql_com.h, and added mysql_thread_init() and mysql_thread_end() to mysql.h.
Support for communication packets > 16M. In 4.0.1 we will extend MyISAM to be able to handle these.
Secure connections (with SSL).
Unsigned BIGINT constants now work. MIN() and MAX() now handle signed and unsigned BIGINT numbers correctly.
New character set latin1_de which provides correct German sorting.
STRCMP() now uses the current character set when doing comparisons, which means that the default comparison behavior now is case insensitive.
TRUNCATE TABLE and DELETE FROM tbl_name are now separate functions. One bonus is that DELETE FROM tbl_name now returns the number of deleted rows, rather than zero.
DROP DATABASE now executes a DROP TABLE on all tables in the database, which fixes a problem with InnoDB tables.
Added support for UNION.
Added support for multiple-table DELETE operations.
A new HANDLER interface to MyISAM tables.
Added support for INSERT on MERGE tables. Patch from Benjamin Pflugmann.
Changed WEEK(date,0) to match the calendar in the USA.
COUNT(DISTINCT) is about 30% faster.
Speed up all internal list handling.
Speed up IS NULL, ISNULL() and some other internal primitives.
Full-text index creation now is much faster.
Tree-like cache to speed up bulk inserts and myisam_bulk_insert_tree_size variable.
Searching on packed (CHAR/VARCHAR) keys is now much faster.
Optimized queries of type: SELECT DISTINCT * from tbl_name ORDER by key_part1 LIMIT row_count.
SHOW CREATE TABLE now shows all table attributes.
ORDER BY ... DESC can now use keys.
LOAD DATA FROM MASTER ``automatically'' sets up a slave.
Renamed safe_mysqld to mysqld_safe to make this name more in line with other MySQL scripts/commands.
Added support for symbolic links to MyISAM tables. Symlink handling is now enabled by default for Windows.
Added SQL_CALC_FOUND_ROWS and FOUND_ROWS(). This makes it possible to know how many rows a query would have returned without a LIMIT clause.
Changed output format of SHOW OPEN TABLES.
Allow SELECT expression LIMIT ....
Added ORDER BY syntax to UPDATE and DELETE.
SHOW INDEXES is now a synonym for SHOW INDEX.
Added ALTER TABLE tbl_name DISABLE KEYS and ALTER TABLE tbl_name ENABLE KEYS commands.
Allow use of IN as a synonym for FROM in SHOW commands.
Implemented ``repair by sort'' for FULLTEXT indexes. REPAIR TABLE, ALTER TABLE, and OPTIMIZE TABLE for tables with FULLTEXT indexes are now up to 100 times faster.
Allow SQL-99 syntax X'hexadecimal-number'.
Cleaned up global lock handling for FLUSH TABLES WITH READ LOCK.
Fixed problem with DATETIME = constant in WHERE optimization.
Added --master-data and --no-autocommit options to mysqldump. (Thanks to Brian Aker for this.)
Added script mysql_explain_log.sh to distribution. (Thanks to mobile.de).