Functionality added or changed:
mysqlhotcopy now works on NetWare.
ALTER TABLE DROP PRIMARY KEY no longer drops the first UNIQUE index if there is no primary index. (Bug #2361)
Added latin1_spanish_ci (Modern Spanish) collation for the latin1 character set.
ENGINE is now a synonym for the TYPE option for CREATE TABLE and ALTER TABLE.
Added init_connect and init_slave server variables. The values should be SQL statements to be executed when each client connects or each time a slave's SQL thread starts, respectively.
C API enhancement: SERVER_QUERY_NO_INDEX_USED and SERVER_QUERY_NO_GOOD_INDEX_USED flags are now set in server_status field of MYSQL structure. It is these flags that make the query to be logged as slow if mysqld was started with --log-slow-queries --log-queries-not-using-indexes.
For replication of HEAP tables: Made the master automatically write a DELETE FROM statement to its binary log when a HEAP table is opened for the first time since master's startup. This is for the case where the slave has replicated a non-empty HEAP table, then the master is shut down and restarted: the table is now empty on master; the DELETE FROM empties it on slave too. Note that even with this fix, between the master's restart and the first use of the table on master, the slave still has out-of-date data in the table. But if you use the init-file option to populate the HEAP table on the master at startup, it ensures that the failing time interval is zero. (Bug #2477)
Bugs fixed:
Fixed bug in replication with CREATE TABLE .. LIKE .. that resulted in a statement not being written to the binary log. (Bug #2557)
Fixed memory leak in INSERT ... ON DUPLICATE KEY UPDATE .... (Bug #2438)
Fixed bug #2422 so that CONVERT with casting works again as it was masked by CONVERT for charsets
Fixed parsing of short-form IP addresses in INET_ATON(). (Bug #2310)
Fixed a bug in CREATE ... SELECT that sometimes caused a string column with a multi-byte character set (such as utf8) to have insufficient length to hold the data.
Fixed a rare table corruption on adding data (INSERT, REPLACE, UPDATE, etc. but not DELETE) to a FULLTEXT index. (Bug #2417)
Compile the MySQL-client RPM package against libreadline instead of libedit. (Bug #2289)
Fix for a crashing bug that was caused by not setting vio_timeout() virtual function for all protocols. This bug occurred on Windows. (Bug #2025)
Fix for a bug that caused mysql client program to erroneously cache the value of the current database. (Bug #2025)
Fix for a bug that caused client/server communication to be broken when mysql_set_server_option() or mysql_get_server_option() were invoked. (Bug #2207)
Fix for a bug that caused wong results when CAST() was applied on NULL to signed or unsigned integer column. (Bug #2219)
Fix for a crashing bug that occurred in the mysql client program when database name was longer then expected. (Bug #2221)
Fixed a bug in CHECK TABLE that occasionally resulted in spurious "Found key at page ... that points to record outside datafile" error on a table with a FULLTEXT index. (Bug #2190)
Fixed bug in GRANT with table-level privilege handling. (Bug #2178)
Fixed bug in ORDER BY on a small column. (Bug #2147)
Fixed a bug with the INTERVAL() function when 8 or more comparison arguments are provided. (Bug #1561)
Packaging: Fixed a bug in the Mac OS PKG postinstall script (mysql_install_db was called with an obsolete argument).
Packaging: Added missing file mysql_create_system_tables to the server RPM package. This bug was fixed for the 4.1.1 RPMs by updating the MySQL-server RPM from MySQL-server-4.1.1-0 to MySQL-server-4.1.1-1. The other RPMs were not affected by this change.
Fixed a bug in myisamchk and CHECK TABLE that sometimes resulted in a spurious error Found key at page ..... that points to record outside datafile for a table with a FULLTEXT index. (Bug #1977)
Fixed a hang in full-text indexing of strings in multi-byte (all besides utf8) charsets. (Bug #2065)
Fixed a crash in full-text indexing of UTF8 data. (Bug #2033)
Replication: a rare race condition in the slave SQL thread that could lead to an incorrect complaint that the relay log is corrupted. (Bug #2011)
Replication: if an administrative command on a table (OPTIMIZE TABLE, REPAIR TABLE etc) was run on the slave, this could sometimes stop the slave SQL thread (this did not lead to any corruption; one just had to type START SLAVE to get replication going again). (Bug #1858)
Replication: in the slave SQL thread, a multi-table UPDATE could produce an incorrect complaint that some record was not found in one table, if the UPDATE was preceded by a INSERT ... SELECT. (Bug #1701)
Replication: sometimes the master gets a non-fatal error during the execution of a statement but finally the statements succeeds (for example, a write to a MyISAM table first receives "no space left on device" but is able to finally complete, see Full disk); the bug was that the master forgot to reset the error code to 0 after success, so the error code got into its binary log, thus making the slave giving false alarms like "did not get the same error as on master". (Bug #2083)
Removed a misleading "check permissions on master.info" from a replication error message, because the cause of the problem could be different from permissions. (Bug #2121)
Fixed a crash when the replication slave was unable to create the first relay log. (Bug #2145)
ALTER DATABASE caused the client to hang if the database did not exist. (Bug #2333)
Multi-table DELETE statements were never replicated by the slave if there were any replicate-*-table options. (Bug #2527)