Appendix B. MySQL Change History
INSERT ... ON DUPLICATE KEY UPDATE ...
syntax. This allows you to UPDATE
an existing row if the insert would cause a duplicate value in a
PRIMARY or UNIQUE key.
(REPLACE allows you to overwrite
an existing row, which is something entirely different.) See
Section 12.2.4, “INSERT Syntax”.
A newly designed GROUP_CONCAT()
aggregate function. See
Section 11.11, “Functions and Modifiers for Use with GROUP BY Clauses”.
Extensive Unicode (UTF8) support.
Table names and column names now are stored in
UTF8. This makes MySQL more flexible, but
might cause some problems upgrading if you have table or column
names that use characters outside of the standard 7-bit US-ASCII
range. See Section 2.11.1.1, “Upgrading from MySQL 4.0 to 4.1”.
Character sets can be defined per column, table, and database.
New key cache for MyISAM tables with many
tunable parameters. You can have multiple key caches, preload
index into caches for batches...
BTREE index on HEAP
tables.
Support for OpenGIS spatial types (geographical data). See Chapter 16, Spatial Extensions.
SHOW WARNINGS shows warnings for
the last command. See Section 12.5.5.26, “SHOW WARNINGS Syntax”.
Faster binary protocol with prepared statements and parameter binding. See Section 17.7.4, “C API Prepared Statements”.
You can now issue multiple statements with a single C API call and then read the results in one go. See Section 17.7.12, “C API Support for Multiple Statement Execution”.
Create Table: CREATE [TEMPORARY] TABLE [IF NOT EXISTS]
table2 LIKE table1.
Server based HELP command that
can be used in the mysql command-line client
(and other clients) to get help for SQL statements.
End of Product LifecycleActive development and support for MySQL database server versions 3.23, 4.0, and 4.1 has ended. However, for MySQL 4.0 and 4.1, there is still extended support available. For details, see http://www.mysql.com/company/legal/lifecycle/#calendar. According to the MySQL Lifecycle Policy (see http://www.mysql.com/company/legal/lifecycle/#policy), only Security and Severity Level 1 issues will still be fixed for MySQL 4.0 and 4.1. Please consider upgrading to a recent version (MySQL 5.0 or 5.1).
This is a bugfix release for the MySQL 4.1 release family.
Functionality added or changed:
Security Enhancement: To enable stricter control over the location from which user-defined functions can be loaded, the
plugin_dirsystem variable has been backported from MySQL 5.1. If the value is nonempty, user-defined function object files can be loaded only from the directory named by this variable. If the value is empty, the behavior that is used prior to the inclusion ofplugin_dirapplies: The UDF object files must be located in a directory that is searched by your system's dynamic linker. (Bug#37428)
Bugs fixed:
Important Change: Security Fix: Additional corrections were made for the symlink-related privilege problem originally addressed in MySQL 4.1.24. The original fix did not correctly handle the data directory path name if it contained symlinked directories in its path, and the check was made only at table-creation time, not at table-opening time later. (Bug#32167, CVE-2008-2079)
See also Bug#39277.
The Windows installer displayed incorrect product names in some images. (Bug#40845)
On Windows, the installer attempted to use JScript to determine whether the target data directory already existed. On Windows Vista x64, this resulted in an error because the installer was attempting to run the JScript in a 32-bit engine, which wasn't registered on Vista. The installer no longer uses JScript but instead relies on a native WiX command. (Bug#36103)
INSERT INTO ... SELECTcaused a crash ifinnodb_locks_unsafe_for_binlogwas enabled. (Bug#27294)The MySQL Instance Configuration Wizard would not allow you to choose a service name, even though the criteria for the service name were valid. The code that checks the name has been updated to support the correct criteria of any string less than 256 character and not containing either a forward or backward slash character. (Bug#27013)
End of Product LifecycleActive development and support for MySQL database server versions 3.23, 4.0, and 4.1 has ended. However, for MySQL 4.0 and 4.1, there is still extended support available. For details, see http://www.mysql.com/company/legal/lifecycle/#calendar. According to the MySQL Lifecycle Policy (see http://www.mysql.com/company/legal/lifecycle/#policy), only Security and Severity Level 1 issues will still be fixed for MySQL 4.0 and 4.1. Please consider upgrading to a recent version (MySQL 5.0 or 5.1).
This is a bugfix release for the MySQL 4.1 release family.
Functionality added or changed:
The ndbd and ndb_mgmd man pages have been reclassified from volume 1 to volume 8. (Bug#34642)
Bugs fixed:
Important Change: Security Fix: It was possible to circumvent privileges through the creation of
MyISAMtables employing theDATA DIRECTORYandINDEX DIRECTORYoptions to overwrite existing table files in the MySQL data directory. Use of the MySQL data directory inDATA DIRECTORYandINDEX DIRECTORYpath name is now disallowed.Note
Additional fixes were made in MySQL 4.1.25.
See also Bug#39277.
Security Fix: Using
RENAME TABLEagainst a table with explicitDATA DIRECTORYandINDEX DIRECTORYoptions can be used to overwrite system table information by replacing the symbolic link points. the file to which the symlink points.MySQL will now return an error when the file to which the symlink points already exists. (Bug#32111, CVE-2007-5969)
Security Fix: A malformed password packet in the connection protocol could cause the server to crash. Thanks for Dormando for reporting this bug, and for providing details and a proof of concept. (Bug#28984, CVE-2007-3780)
Security Enhancement: It was possible to force an error message of excessive length which could lead to a buffer overflow. This has been made no longer possible as a security precaution. (Bug#32707)
Replication: Connections from one mysqld server to another failed on Mac OS X, affecting replication and
FEDERATEDtables. (Bug#29083)See also Bug#26664.
An internal buffer in mysql was too short. Overextending it could cause stack problems or segmentation violations on some architectures. (This is not a problem that could be exploited to run arbitrary code.) (Bug#33841)
make_binary_distribution passed the
--print-libgcc-fileoption to the C compiler, but this does not work with the ICC compiler. (Bug#33536)The server crashed on optimizations involving a join of
INTandMEDIUMINTcolumns and a system variable in theWHEREclause. (Bug#32103)With
lower_case_table_namesset,CREATE TABLE LIKEwas treated differently bylibmysqldthan by the nonembedded server. (Bug#32063)The server could crash during
filesortforORDER BYbased on expressions withINET_NTOA()orOCT()if those functions returnedNULL. (Bug#31758)ucs2does not work as a client character set, but attempts to use it as such were not rejected. Nowcharacter_set_clientcannot be set toucs2. This also affects statements such asSET NAMESandSET CHARACTER SET. (Bug#31615)A buffer used when setting variables was not dimensioned to accommodate the trailing
'\0'byte, so a single-byte buffer overrun was possible. (Bug#31588)For an almost-full
MyISAMtable, an insert that failed could leave the table in a corrupt state. (Bug#31305)myisamchk --unpack could corrupt a table that when unpacked has static (fixed-length) row format. (Bug#31277)
WIth small values of
myisam_sort_buffer_size,REPAIR TABLEforMyISAMtables could cause a server crash. (Bug#31174)Full-text searches on
ucs2columns caused a server crash. (FULLTEXTindexes onucs2columns cannot be used, but it should be possible to performIN BOOLEAN MODEsearches onucs2columns without a crash.) (Bug#31159)Data in
BLOBorGEOMETRYcolumns could be cropped when performing aUNIONquery. (Bug#31158)Internal conversion routines could fail for several multi-byte character sets (
big5,cp932,euckr,gb2312,sjis) for empty strings or during evaluation ofSOUNDS LIKE. (Bug#31069, Bug#31070)The
GeomFromText()function could cause a server crash if the first argument wasNULLor the empty string. (Bug#30955)For
MEMORYtables,DELETEstatements that remove rows based on an index read could fail to remove all matching rows. (Bug#30590)Versions of mysqldump from MySQL 4.1 or higher tried to use
START TRANSACTION WITH CONSISTENT SNAPSHOTif the--single-transactionand--master-dataoptions were given, even with servers older than 4.1 that do not support consistent snapshots. (Bug#30444)Issuing a
DELETEstatement having both anORDER BYclause and aLIMITclause could cause mysqld to crash. (Bug#30385)Setting certain values on a table using a spatial index could cause the server to crash. (Bug#30286)
Tables with a
GEOMETRYcolumn could be marked as corrupt if you added a non-SPATIALindex on aGEOMETRYcolumn. (Bug#30284)On some 64-bit systems, inserting the largest negative value into a
BIGINTcolumn resulted in incorrect data. (Bug#30069)Adding
DISTINCTcould cause incorrect rows to appear in a query result. (Bug#29911)If one thread was performing concurrent inserts, other threads reading from the same table using equality key searches could see the index values for new rows before the data values had been written, leading to reports of table corruption. (Bug#29838)
In some cases,
INSERT INTO ... SELECT ... GROUP BYcould insert rows even if theSELECTby itself produced an empty result. (Bug#29717)A field packet with
NULLfields caused alibmysqlclientcrash. (Bug#29494)SELECT ... INTO OUTFILEfollowed byLOAD DATAcould result in garbled characters when theFIELDS ENCLOSED BYclause named a delimiter of'0','b','n','r','t','N', or'Z'due to an interaction of character encoding and doubling for data values containing the enclosed-by character. (Bug#29294)If an
ENUMcolumn contained''as one of its members (represented with numeric value greater than 0), and the column contained error values (represented as 0 and displayed as''), usingALTER TABLEto modify the column definition caused the 0 values to be given the numeric value of the nonzero''member. (Bug#29251)A network structure was initialized incorrectly, leading to embedded server crashes. (Bug#29117)
Denormalized double-precision numbers cannot be handled properly by old MIPS pocessors. For IRIX, this is now handled by enabling a mode to use a software workaround. (Bug#29085)
The semantics of
BIGINTdepended on platform-specific characteristics. (Bug#29079)For
InnoDBtables that use theutf8character set, incorrect results could occur for DML statements such asDELETEorUPDATEthat use an index on character-based columns. (Bug#28878)See also Bug#29449, Bug#30485, Bug#31395.
This regression was introduced by Bug#13195.
The MySQL preferences pane did not work to start or stop MySQL on Mac OS X 10.5 (Leopard). (Bug#28854)
When one thread attempts to lock two (or more) tables and another thread executes a statement that aborts these locks (such as
REPAIR TABLE,OPTIMIZE TABLE, orCHECK TABLE), the thread might get a table object with an incorrect lock type in the table cache. The result is table corruption or a server crash. (Bug#28574)PURGE MASTER LOGS BEFORE (caused a server crash. Subqueries are forbidden in thesubquery)BEFOREclause now. (Bug#28553)On Mac OS X, shared-library installation path names were incorrect. (Bug#28544)
Dropping a user-defined function could cause a server crash if the function was still in use by another thread. (Bug#27564)
Error returns from the
time()system call were ignored. (Bug#27198)On Mac OS X, the StartupItem for MySQL did not work. (Bug#25008)
Format strings in English error messages were insufficiently wide for path names printed in those messages by the embedded server. (Bug#16635)
On 64-bit Windows systems, the Config Wizard failed to complete the setup because 64-bit Windows does not resolve dynamic linking of the 64-bit
libmysql.dllto a 32-bit application like the Config Wizard. (Bug#14649)mysql_setpermission tried to grant global-only privileges at the database level. (Bug#14618)
Performing a full text search on a table could cause a crash on a 64-bit platforms with certain characteristics. Searches that were known to cause a crash with certain datasets included numerical values and strings where the match string included data enclosed in single or double quotes. (Bug#11392)
Using up-arrow for command-line recall in mysql could cause a segmentation fault. (Bug#10218)
End of Product LifecycleActive development and support for MySQL database server versions 3.23, 4.0, and 4.1 has ended. However, for MySQL 4.0 and 4.1, there is still extended support available. For details, see http://www.mysql.com/company/legal/lifecycle/#calendar. According to the MySQL Lifecycle Policy (see http://www.mysql.com/company/legal/lifecycle/#policy), only Security and Severity Level 1 issues will still be fixed for MySQL 4.0 and 4.1. Please consider upgrading to a recent version (MySQL 5.0 or 5.1).
This is a bugfix release for the MySQL 4.1 release family.
Functionality added or changed:
Incompatible Change: The
prepared_stmt_countsystem variable has been converted to thePrepared_stmt_countglobal status variable (viewable with theSHOW GLOBAL STATUSstatement). (Bug#23159)Incompatible Change: Previously, the
DATE_FORMAT()function returned a binary string. Now it returns a string with a character set and collation given bycharacter_set_connectionandcollation_connectionso that it can return month and weekday names containing non-ASCII characters. (Bug#22646)Important Change: When using
MERGEtables the definition of theMERGEtable and theMyISAMtables are checked each time the tables are opened for access (including anySELECTorINSERTstatement. Each table is compared for column order, types, sizes and associated. If there is a difference in any one of the tables then the statement will fail.INSERT DELAYEDstatements onBLACKHOLEtables are now rejected, due to the fact that theBLACKHOLEstorage engine does not support them. (Bug#27998)The server now includes a timestamp in error messages that are logged as a result of unhandled signals (such as
mysqld got signal 11messages). (Bug#24878)The
--memlockoption relies on system calls that are unreliable on some operating systems. If a crash occurs, the server now checks whether--memlockwas specified and if so issues some information about possible workarounds. (Bug#22860)If the user specified the server options
--max-connections=orN--table-cache=, a warning would be given in some cases that some values were recalculated, with the result thatM--table-cachecould be assigned greater value.In such cases, both the warning and the increase in the
--table-cachevalue were completely harmless. Note also that it is not possible for the MySQL Server to predict or to control limitations on the maximum number of open files, since this is determined by the operating system.The value of
--table-cacheis no longer increased automatically, and a warning is now given only if some values had to be decreased due to operating system limits. (Bug#21915)mysqldump --single-transaction now uses
START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */rather thanBEGINto start a transaction, so that a consistent snapshot will be used on those servers that support it. (Bug#19660)A dependency on the Intel runtime libraries existed in the
shared-RPMs for the IA-64 CPU of some versions of MySQL 4.1 (4.1.16, 4.1.20, and 4.1.22). This has been resolved. (Bug#18776)xxx
Bugs fixed:
Security Fix: The requirement of the
DROPprivilege forRENAME TABLEwas not enforced. (Bug#27515, CVE-2007-2691)Incompatible Change:
INSERT DELAYEDstatements are not supported forMERGEtables, but theMERGEstorage engine was not rejecting such statements, resulting in table corruption. Applications previously usingINSERT DELAYEDintoMERGEtable will break when upgrading to versions with this fix. To avoid the problem, removeDELAYEDfrom such statements. (Bug#26464)Incompatible Change: For
ENUMcolumns that had enumeration values containing commas, the commas were mapped to0xffinternally. However, this rendered the commas indistinguishable from true0xffcharacters in the values. This no longer occurs. However, the fix requires that you dump and reload any tables that haveENUMcolumns containing any true0xffvalues. Dump the tables using mysqldump with the current server before upgrading from a version of MySQL 4.1 older than 4.1.23 to version 4.1.23 or newer. (Bug#24660)MySQL Cluster: When an API node sent more than 1024 signals in a single batch,
NDBwould process only the first 1024 of these, and then hang. (Bug#28443)MySQL Cluster: In some circumstances, shutting down the cluster could cause connected mysqld processes to crash. (Bug#25668)
MySQL Cluster: The management client command
displayed the messagenode_idSTATUSNodewhennode_id: not connectednode_idwas not the node ID of a data node.Note
The
ALL STATUScommand in the cluster management client still displays status information for data nodes only. This is by design. See Section 15.7.2, “Commands in the MySQL Cluster Management Client”, for more information.Replication:
GRANTstatements were not replicated if the server was started with the--replicate-ignore-tableor--replicate-wild-ignore-tableoption. (Bug#25482)Replication: Changes to the
lc_time_namessystem variable were not replicated. (Bug#22645)Replication: SQL statements close to the size of
max_allowed_packetcould produce binary log events larger thanmax_allowed_packetthat could not be read by slave servers. (Bug#19402)Replication: If a slave server closed its relay log (for example, due to an error during log rotation), the I/O thread did not recognize this and still tried to write to the log, causing a server crash. (Bug#10798)
Replication: Transient errors in replication from master to slave may trigger multiple
Got fatal error 1236: 'binlog truncated in the middle of event'errors on the slave. (Bug#4053)Cluster Replication: Some queries that updated multiple tables were not backed up correctly. (Bug#27748)
Cluster API:
libndbclient.sowas not versioned. (Bug#13522)The
mysqlserver.liblibrary on Windows had many missing symbols. (Bug#29007)EXPLAINfor a query on an empty table immediately after its creation could result in a server crash. (Bug#28272)The second execution of a prepared statement from a
UNIONquery withORDER BY RAND()caused the server to crash. (Bug#27937)Changes to some system variables should invalidate statements in the query cache, but invalidation did not happen. (Bug#27792)
Comparisons using row constructors could fail for rows containing
NULLvalues. (Bug#27704)Incorrect results could be returned for some queries that contained a select list expression with
INorBETWEENtogether with anORDER BYorGROUP BYon the same expression usingNOT INorNOT BETWEEN. (Bug#27532)The fix for Bug#17212 provided correct sort order for misordered output of certain queries, but caused significant overall query performance degradation. (Results were correct (good), but returned much more slowly (bad).) The fix also affected performance of queries for which results were correct. The performance degradation has been addressed. (Bug#27531)
Passing nested row expressions with different structures to an
INpredicate caused a server crash. (Bug#27484)The error message for error number
137did not report which database/table combination reported the problem. (Bug#27173)Storing
NULLvalues in spatial fields caused excessive memory allocation and crashes on some systems. (Bug#27164)In a
MEMORYtable, using aBTREEindex to scan for updatable rows could lead to an infinite loop. (Bug#26996)For
MERGEtables defined on underlying tables that contained a shortVARCHARcolumn (shorter than four characters), usingALTER TABLEon at least one but not all of the underlying tables caused the table definitions to be considered different from that of theMERGEtable, even if theALTER TABLEdid not change the definition.In addition, when the underlying tables contained a
TINYINTorCHAR(1)column, theMERGEstorage engine incorrectly reported that they differed from theMERGEtable in certain cases. (Bug#26881)Added support for
--debugger=dbxfor mysql-test-run.pl and added support for--debugger=devenv,--debugger=DevEnv, and--debugger=. (Bug#26792)/path/to/devenvThe range optimizer could cause the server to run out of memory. (Bug#26625)
The range optimizer could consume a combinatorial amount of memory for certain classes of
WHEREclauses. (Bug#26624)For
MyISAMtables,COUNT(*)could return an incorrect value if theWHEREclause compared an indexedTEXTcolumn to the empty string (''). This happened if the column contained empty strings and also strings starting with control characters such as tab or newline. (Bug#26231)LOAD DATA INFILEsent an okay to the client before writing the binary log and committing the changes to the table had finished, thus violating ACID requirements. (Bug#26050)X() IS NULLandY() IS NULLcomparisons failed whenX()andY()returnedNULL. (Bug#26038)If a thread previously serviced a connection that was killed, excessive memory and CPU use by the thread occurred if it later serviced a connection that had to wait for a table lock. (Bug#25966)
Index hints (
USE INDEX,IGNORE INDEX,FORCE INDEX) cannot be used withFULLTEXTindexes, but were not being ignored. (Bug#25951)Running
CHECK TABLEconcurrently with aSELECT,INSERTor other statement on Windows could corrupt a MyISAM table. (Bug#25712)In certain cases it could happen that deleting a row corrupted an
RTREEindex. This affected indexes on spatial columns. (Bug#25673)The
InnoDBparser sometimes did not account for null bytes, causing spurious failure of some queries. (Bug#25596)mysql_stmt_fetch()did an invalid memory deallocation when used with the embedded server. (Bug#25492)Referencing an ambiguous column alias in an expression in the
ORDER BYclause of a query caused the server to crash. (Bug#25427)perror crashed on some platforms due to failure to handle a
NULLpointer. (Bug#25344)Difficult repair or optimization operations could cause an assertion failure, resulting in a server crash. (Bug#25289)
A reference to a nonexistent column in the
ORDER BYclause of anUPDATE ... ORDER BYstatement could cause a server crash. (Bug#25126)A return value of
-1from user-defined handlers was not handled well and could result in conflicts with server code. (Bug#24987)Duplicate entries were not assessed correctly in a
MEMORYtable with aBTREEprimary key on autf8ENUMcolumn. (Bug#24985)The result set of a query that used
WITH ROLLUPandDISTINCTcould lack some rollup rows (rows withNULLvalues for grouping attributes) if theGROUP BYlist contained constant expressions. (Bug#24856)Accessing a fixed record format table with a crashed key definition results in server/myisamchk segmentation fault. (Bug#24855)
mysqld_multi and mysqlaccess looked for option files in
/etceven if the--sysconfdiroption for configure had been given to specify a different directory. (Bug#24780)Certain joins using
Range checked for each recordin the query execution plan could cause the server to crash. (Bug#24776)If there was insufficient memory available to mysqld, this could sometimes cause the server to hang during startup. (Bug#24751)
Optimizations that are legal only for subqueries without tables and
WHEREconditions were applied for any subquery without tables. (Bug#24670)If an
ORDER BYorGROUP BYlist included a constant expression being optimized away and, at the same time, containing single-row subselects that returned more that one row, no error was reported. If a query required sorting by expressions containing single-row subselects that returned more than one row, execution of the query could cause a server crash. (Bug#24653)For
ALTER TABLE, usingORDER BYcould cause a server crash. Now theexpressionORDER BYclause allows only column names to be specified as sort criteria (which was the only documented syntax, anyway). (Bug#24562)mysqltest crashed with a stack overflow. (Bug#24498)
Attempts to access a
MyISAMtable with a corrupt column definition caused a server crash. (Bug#24401)ALTER ENABLE KEYSorALTER TABLE DISABLE KEYScombined with anotherALTER TABLEoption other thanRENAME TOdid nothing. In addition, if ALTER TABLE was used on a table having disabled keys, the keys of the resulting table were enabled. (Bug#24395)When opening a corrupted
.frmfile during a query, the server crashes. (Bug#24358)The
--externoption for mysql-test-run.pl did not function correctly. (Bug#24354)The
MERGEstorage engine could return incorrect results when several index values that compare equality were present in an index (for example,'gross'and'gross ', which are considered equal but have different lengths). (Bug#24342)Foreign key identifiers for
InnoDBtables could not contain certain characters. (Bug#24299)ALTER TABLEstatements that performed bothRENAME TOand{ENABLE|DISABLE} KEYSoperations caused a server crash. (Bug#24219)There was a race condition in the
InnoDBfil_flush_file_spaces()function. (Bug#24089)This regression was introduced by Bug#15653.
Hebrew-to-Unicode conversion failed for some characters. Definitions for the following Hebrew characters (as specified by the ISO/IEC 8859-8:1999) were added: LEFT-TO-RIGHT MARK (LRM), RIGHT-TO-LEFT MARK (RLM) (Bug#24037)
The server was built even when configure was run with the
--without-serveroption. (Bug#23973)See also Bug#32898.
ISNULL(DATE(NULL))andISNULL(CAST(NULL AS DATE))erroneously returned false. (Bug#23938)Using
CAST()to convertDATETIMEvalues to numeric values did not work. (Bug#23656)LAST_DAY('0000-00-00')could cause a server crash. (Bug#23653)DOUBLEvalues such as20070202191048.000000were being treated as illegal arguments byWEEK(). (Bug#23616)The stack size for NetWare binaries was increased to 128KB to prevent problems caused by insufficient stack size. (Bug#23504)
If elements in a nontop-level
INsubquery were accessed by an index and the subquery result set included aNULLvalue, the quantified predicate that contained the subquery was evaluated toNULLwhen it should return a non-NULLvalue. (Bug#23478)User-defined variables could consume excess memory, leading to a crash caused by the exhaustion of resources available to the
MEMORYstorage engine, due to the fact that this engine is used by MySQL for variable storage and intermediate results ofGROUP BYqueries. WhereSEThad been used, such a condition could instead give rise to the misleading error message You may only use constant expressions with SET, rather than Out of memory (Needed NNNNNN bytes). (Bug#23443)For ODBC compatibility, MySQL supports use of
WHEREforcol_nameIS NULLDATEorDATETIMEcolumns that areNOT NULL, to allow column values of'0000-00-00'or'0000-00-00 00:00:00'to be selected. However, this was not working forWHEREclauses inDELETEstatements. (Bug#23412)The arguments to the
ENCODE()and theDECODE()functions were not printed correctly, causing problems in the output ofEXPLAIN EXTENDEDand in view definitions. (Bug#23409)A table created with the
ROW_FORMAT = FIXEDtable option lost the option if an index was added or dropped withCREATE INDEXorDROP INDEX. (Bug#23404)For not-yet-authenticated connections, the
Timecolumn inSHOW PROCESSLISTwas a random value rather thanNULL. (Bug#23379)A deadlock could occur, with the server hanging on
Closing tables, with a sufficient number of concurrentINSERT DELAYED,FLUSH TABLES, andALTER TABLEoperations. (Bug#23312)MySQL failed to build on Linux/Alpha. (Bug#23256)
This regression was introduced by Bug#21250.
If
COMPRESS()returnedNULL, subsequent invocations ofCOMPRESS()within a result set or within a trigger also returnedNULL. (Bug#23254)NOW()returned the wrong value in statements executed at server startup with the--init-fileoption. (Bug#23240)If there was insufficient memory to store or update a blob record in a
MyISAMtable then the table will marked as crashed. (Bug#23196)A compressed
MyISAMtable that became corrupted could crash myisamchk and possibly the MySQL Server. (Bug#23139)The number of
setsockopt()calls performed for reads and writes to the network socket was reduced to decrease system call overhead. (Bug#22943)mysql did not check for errors when fetching data during result set printing. (Bug#22913)
InnoDBexhibited thread thrashing with more than 50 concurrent connections under an update-intensive workload. (Bug#22868)The return value from
my_seek()was ignored. (Bug#22828)The
Handler_rollbackstatus variable sometimes was incremented when no rollback had taken place. (Bug#22728)SET lc_time_names =allowed only exact literal values, not expression values. (Bug#22647)valueStoring values specified as hexadecimal values 64 or more bits long into
BIGINTorBIGINT UNSIGNEDcolumns did not raise any warning or error if the value was out of range. (Bug#22533)Queries using a column alias in an expression as part of an
ORDER BYclause failed, an example of such a query beingSELECT mycol + 1 AS mynum FROM mytable ORDER BY 30 - mynum. (Bug#22457)SHOW COLUMNSreported someNOT NULLcolumns asNULL. (Bug#22377)A server crash occurred when using
LOAD DATAto load a table containing aNOT NULLspatial column, when the statement did not load the spatial column. Now aNULL supplied to NOT NULL columnerror occurs. (Bug#22372)Some small double precision numbers (such as
1.00000001e-300) that should have been accepted were truncated to zero. (Bug#22129)Changing the value of
MI_KEY_BLOCK_LENGTHinmyisam.hand recompiling MySQL resulted in a myisamchk that saw existingMyISAMtables as corrupt. (Bug#22119)A crash of the MySQL Server could occur when unpacking a
BLOBcolumn from a row in a corrupted MyISAM table. This could happen when trying to repair a table using eitherREPAIR TABLEor myisamchk; it could also happen when trying to access such a “broken” row using statements likeSELECTif the table was not marked as crashed. (Bug#22053)Trailing spaces were not removed from Unicode
CHARcolumn values when used in indexes. This resulted in excessive usage of storage space, and could affect the results of someORDER BYqueries that made use of such indexes.Note
When upgrading, it is necessary to re-create any existing indexes on Unicode
CHARcolumns in order to take advantage of the fix. This can be done by using aREPAIR TABLEstatement on each affected table.STR_TO_DATE()returnedNULLif the format string contained a space following a nonformat character. (Bug#22029)Adding a day, month, or year interval to a
DATEvalue produced aDATE, but adding a week interval produced aDATETIMEvalue. Now all produce aDATEvalue. (Bug#21811)It was possible to use
DATETIMEvalues whose year, month, and day parts were all zeroes but whose hour, minute, and second parts contained nonzero values, an example of such an illegalDATETIMEbeing'0000-00-00 11:23:45'.Note
This fix was reverted in MySQL 4.1.24.
See also Bug#25301.
Through the C API, the member strings in
MYSQL_FIELDfor a query that contains expressions may return incorrect results. (Bug#21635)When updating a table that used a
JOINof the table itself (for example, when building trees) and the table was modified on one side of the expression, the table would either be reported as crashed or the wrong rows in the table would be updated. (Bug#21310)InnoDB: During a restart of the MySQL Server that followed the creation of a temporary table using theInnoDBstorage engine, MySQL failed to clean up in such a way thatInnoDBstill attempted to find the files associated with such tables. (Bug#20867)Selecting into variables sometimes returned incorrect wrong results. (Bug#20836)
Range searches on columns with an index prefix could miss records. (Bug#20732)
Some long error messages were printed incorrectly. (Bug#20710)
The creation of MySQL system tables was not checked for by mysql-test-run.pl. (Bug#20166)
The BUILD/check-cpu script did not recognize Celeron processors. (Bug#20061)
ORDER BYvalues of theDOUBLEorDECIMALtypes could change the result returned by a query. (Bug#19690)mysqltest incorrectly tried to retrieve result sets for some queries where no result set was available. (Bug#19410)
The server could send incorrect column count information to the client for queries that produce a larger number of columns than can fit in a two-byte number. (Bug#19216)
The server might fail to use an appropriate index for
DELETEwhenORDER BY,LIMIT, and a nonrestrictingWHEREare present. (Bug#17711)mysql_fix_privilege_tables did not accept a password containing embedded space or apostrophe characters. (Bug#17700)
mysql would lose its connection to the server if its standard output was not writable. (Bug#17583)
No warning was issued for use of the
DATA DIRECTORYorINDEX DIRECTORYtable options on a platform that does not support them. (Bug#17498)mysql-test-run did not work correctly for RPM-based installations. (Bug#17194)
IN()andCHAR()can returnNULL, but did not signal that to the query processor, causing incorrect results forIS NULLoperations. (Bug#17047)Conversion of
DATETIMEvalues in numeric contexts sometimes did not produce a double (YYYYMMDDHHMMSS.uuuuuu) value. (Bug#16546)InnoDBshowed substandard performance with multiple queries running concurrently. (Bug#15815)For
BOOLEANmode full-text searches on nonindexed columns,NULLrows generated by aLEFT JOINcaused incorrect query results. (Bug#14708, Bug#25637)mysqldump --order-by-primary failed if the primary key name was an identifier that required quoting. (Bug#13926)
INSERT...ON DUPLICATE KEY UPDATEcould causeError 1032: Can't find record in ...for inserts into anInnoDBtable unique index using key column prefixes with an underlyingutf8string column. (Bug#13191)Lack of validation for input and output
TIMEvalues resulted in several problems:SEC_TO_TIME()in some cases did not clip large values to theTIMErange appropriately;SEC_TO_TIME()treatedBIGINT UNSIGNEDvalues as signed; only truncation warnings were produced when both truncation and out-of-rangeTIMEvalues occurred. (Bug#11655, Bug#20927)Metadata for columns calculated from scalar subqueries was limited to integer, double, or string, even if the actual type of the column was different. (Bug#11032)
The internal functions for table preparation, creation, and alteration were not re-execution friendly, causing problems in code that: repeatedly altered a table; repeatedly created and dropped a table; opened and closed a cursor on a table, altered the table, and then reopened the cursor; used
ALTER TABLEto change a table's currentAUTO_INCREMENTvalue; created indexes onutf8columns.Re-execution of
CREATE DATABASE,CREATE TABLE, andALTER TABLEstatements as prepared statements also caused incorrect results or crashes. (Bug#4968, Bug#6895, Bug#19182, Bug#19733, Bug#22060, Bug#24879)
End of Product LifecycleActive development and support for MySQL database server versions 3.23, 4.0, and 4.1 has ended. However, for MySQL 4.0 and 4.1, there is still extended support available. For details, see http://www.mysql.com/company/legal/lifecycle/#calendar. According to the MySQL Lifecycle Policy (see http://www.mysql.com/company/legal/lifecycle/#policy), only Security and Severity Level 1 issues will still be fixed for MySQL 4.0 and 4.1. Please consider upgrading to a recent version (MySQL 5.0 or 5.1).
This is a bugfix release for the MySQL 4.1 release family.
This section documents all changes and bug fixes that have been applied since the last official MySQL release. If you would like to receive more fine-grained and personalized update alerts about fixes that are relevant to the version and features you use, please consider subscribing to MySQL Enterprise (a commercial MySQL offering). For more details please see http://www.mysql.com/products/enterprise.
Functionality added or changed:
MySQL did not properly do stack dumps on
x86_64andi386/NPTLsystems. (Note that the initial fix for this problem was discovered not to be correct. Further work on the problem was undertaken only for MySQL 5.1 and up. See Bug#31891.) (Bug#21250)The mysqld man page has been reclassified from volume 1 to volume 8. (Bug#21220)
A warning now is issued if the client attempts to set the
sql_log_offvariable without theSUPERprivilege. (Bug#16180)The
LOAD DATA FROM MASTERandLOAD TABLE FROM MASTERstatements are deprecated. See Section 12.6.2.2, “LOAD DATA FROM MASTERSyntax”, for recommended alternatives. (Bug#9125, Bug#20596, Bug#14399, Bug#12187, Bug#15025, Bug#18822)
Bugs fixed:
MySQL Cluster: Packaging: The ndb_mgm program was included in both the
MySQL-ndb-toolsandMySQL-ndb-managementRPM packages, resulting in a conflict if both were installed. Now ndb_mgm is included only inMySQL-ndb-tools. (Bug#21058)MySQL Cluster: Backup of a cluster failed if there were any tables with 128 or more columns. (Bug#23502)
MySQL Cluster:
INSERT ... ON DUPLICATE KEY UPDATEon anNDBtable could lead to deadlocks and memory leaks. (Bug#23200)MySQL Cluster: If a node restart could not be performed from the REDO log, no node takeover took place. This could cause partitions to be left empty during a system restart. (Bug#22893)
MySQL Cluster: Multiple node restarts in rapid succession could cause a system restart to fail , or induce a race condition. (Bug#22892, Bug#23210)
MySQL Cluster: (NDB API): Attempting to read a nonexistent tuple using
Commitmode forNdbTransaction::execute()caused node failures. (Bug#22672)MySQL Cluster: Setting
TransactionDeadlockDetectionTimeoutto a value greater than 12000 would cause scans to deadlock, time out, fail to release scan records, until the cluster ran out of scan records and stopped processing. (Bug#21800)MySQL Cluster: The node recovery algorithm was missing a version check for tables in the
ALTER_TABLE_COMMITTEDstate (as opposed to theTABLE_ADD_COMMITTEDstate, which has the version check). This could cause inconsistent schemas across nodes following node recovery. (Bug#21756)MySQL Cluster: The server provided a nondescriptive error message when encountering a fatally corrupted REDO log. (Bug#21615)
MySQL Cluster: The output for the
--helpoption used withNDBexecutable programs (such as ndbd, ndb_mgm, ndb_restore, ndb_config, and others mentioned in Section 15.6, “MySQL Cluster Programs”) referred to theNdb.cfgfile, instead of tomy.cnf. (Bug#21585)MySQL Cluster: A partial rollback could lead to node restart failures. (Bug#21536)
MySQL Cluster: The ndb_mgm management client did not set the exit status on errors, always returning 0 instead. (Bug#21530)
MySQL Cluster: The failure of a unique index read due to an invalid schema version could be handled incorrectly in some cases, leading to unpredictable results. (Bug#21384)
MySQL Cluster: Attempting to create an
NDBtable on a MySQL with an existing non-Cluster table with the same name in the same database could result in data loss or corruption. MySQL now issues a warning when aSHOW TABLESor other statement causing table discovery finds such a table. (Bug#21378)MySQL Cluster: Cluster logs were not rotated following the first rotation cycle. (Bug#21345)
MySQL Cluster: In a cluster with more than 2 replicas, a manual restart of one of the data nodes could fail and cause the other nodes in the same node group to shut down. (Bug#21213)
MySQL Cluster: The ndb_size.pl script did not account for
TEXTandBLOBcolumn values correctly. (Bug#21204)MySQL Cluster: When inserting a row into an
NDBtable with a duplicate value for a nonprimary unique key, the error issued would reference the wrong key. (Bug#21072)MySQL Cluster: Some queries involving joins on very large
NDBtables could crash the MySQL server. (Bug#21059)MySQL Cluster: In some situations with a high disk-load, writing of the redo log could hang, causing a crash with the error message GCP STOP detected. (Bug#20904)
MySQL Cluster: Under some circumstances, local checkpointing would hang, keeping any unstarted nodes from being started. (Bug#20895)
MySQL Cluster: When the redo buffer ran out of space, a Pointer too large error was raised and the cluster could become unusable until restarted with
--initial. (Bug#20892)MySQL Cluster: ndb_size.pl and ndb_error_reporter were missing from RPM packages. (Bug#20426)
MySQL Cluster: In some cases where
SELECT COUNT(*)from anNDBtable should have yielded an error,MAX_INTwas returned instead. (Bug#19914)MySQL Cluster: ndb_restore did not always make clear that it had recovered successfully from temporary errors while restoring a cluster backup. (Bug#19651)
MySQL Cluster: The server failed with a nondescriptive error message when out of data memory. (Bug#18475)
MySQL Cluster:
SELECT ... FOR UPDATEfailed to lock the selected rows. (Bug#18184)MySQL Cluster: A problem with takeover during a system restart caused ordered indexes to be rebuilt incorrectly. (Bug#15303)
Insufficient memory (
myisam_sort_buffer_size) could cause a server crash for several operations onMyISAMtables: repair table, create index by sort, repair by sort, parallel repair, bulk insert. (Bug#23175)REPAIR TABLE ... USE_FRMcould cause a server crash or hang when used for aMyISAMtable in a database other than the default database. (Bug#22562)Deleting entries from a large
MyISAMindex could cause index corruption when it needed to shrink. Deletes from an index can happen when a record is deleted, when a key changes and must be moved, and when a key must be un-inserted because of a duplicate key. This can also happen inREPAIR TABLEwhen a duplicate key is found and in myisamchk when sorting the records by an index. (Bug#22384)Some Linux-x86_64-icc packages (of previous releases) mistakenly contained 32-bit binaries. Only ICC builds are affected, not gcc builds. Solaris and FreeBSD x86_64 builds are not affected. (Bug#22238)
Execution of a prepared statement that uses an
INsubquery with aggregate functions in theHAVINGclause could cause a server crash. (Bug#22085)Running
SHOW MASTER LOGSat the same time as binary log files were being switched would causemysqldto hang. (Bug#21965)character_set_resultscan beNULLto signify “no conversion,” but some code did not check forNULL, resulting in a server crash. (Bug#21913)The optimizer sometimes mishandled R-tree indexes for
GEOMETRYdata types, resulting in a server crash. (Bug#21888)A query that used
GROUP BYand anALLorANYquantified subquery in aHAVINGclause could trigger an assertion failure. (Bug#21853)COUNT(*)queries withORDER BYandLIMITcould return the wrong result.Note
This problem was introduced by the fix for Bug#9676, which limited the rows stored in a temporary table to the
LIMITclause. This optimization is not applicable to nongroup queries with aggregate functions. The current fix disables the optimization in such cases.Redundant binary log
LAST_INSERT_IDevents could be generated;LAST_INSERT_ID(did not return the value ofexpr)expr;LAST_INSERT_ID()could return the value generated by the current statement if the call occurred after value generation, as in:CREATE TABLE t1 (i INT AUTO_INCREMENT PRIMARY KEY, j INT); INSERT INTO t1 VALUES (NULL, 0), (NULL, LAST_INSERT_ID());
Selecting from a
MERGEtable could result in a server crash if the underlying tables had fewer indexes than theMERGEtable itself. (Bug#21617, Bug#22937)For
INSERT ... ON DUPLICATE KEY UPDATE, use ofVALUES(within thecol_name)UPDATEclause sometimes was handled incorrectly. (Bug#21555)EXPORT_SET()did not accept arguments with coercible character sets. (Bug#21531)Adding
ORDER BYto aSELECT DISTINCT(query could produce incorrect results. (Bug#21456)expr)Table aliases in multiple-table
DELETEstatements sometimes were not resolved. (Bug#21392)For multiple-table
UPDATEstatements, storage engines were not notified of duplicate-key errors. (Bug#21381)Within a prepared statement,
SELECT (COUNT(*) = 1)(or similar use of other aggregate functions) did not return the correct result for statement re-execution. (Bug#21354)In the package of pre-built time zone tables that is available for download at http://dev.mysql.com/downloads/timezones.html, the tables now explicitly use the
utf8character set so that they work the same way regardless of the system character set value. (Bug#21208)Under heavy load (executing more than 1024 simultaneous complex queries), a problem in the code that handles internal temporary tables could lead to writing beyond allocated space and memory corruption. (Bug#21206)
A subquery that uses an index for both the
WHEREandORDER BYclauses produced an empty result. (Bug#21180)Certain malformed
INSERTstatements could crash the mysql client. (Bug#21142)Creating a
TEMPORARYtable with the same name as an existing table that was locked by another client could result in a lock conflict forDROP TEMPORARY TABLEbecause the server unnecessarily tried to acquire a name lock. (Bug#21096)For
InnoDBtables, the server could crash when executingNOT IN(...)subqueries. (Bug#21077)The
myisam_stats_methodvariable was mishandled when set from an option file or on the command line. (Bug#21054)A query using
WHEREdid not return consistent results on successive invocations. Thecolumn=constantORcolumnIS NULLcolumnin each part of theWHEREclause could be either the same column, or two different columns, for the effect to be observed. (Bug#21019)A query using
WHERE NOT (yielded a different result from the same query using the samecolumn< ANY (subquery))columnandsubquerywithWHERE (. (Bug#20975)column> ANY (subquery))Under certain circumstances,
AVG(returned a value butkey_val)MAX(returned an empty set due to incorrect application ofkey_val)MIN()/MAX()optimization. (Bug#20954)Using
ALTER TABLEto add anENUMcolumn with an enumeration value containing0xFFcaused the name of the first table column to be lost. (Bug#20922)WITH ROLLUPcould group unequal values. (Bug#20825)Using aggregate functions in subqueries yielded incorrect results under certain circumstances due to incorrect application of
MIN()/MAX()optimization. (Bug#20792)mysql_install_db incorrectly had a blank first line. (Bug#20721)
Character set collation was ignored in
GROUP BYclauses. (Bug#20709)If a column definition contained a character set declaration, but a
DEFAULTvalue began with an introducer, the introducer character set was used as the column character set. (Bug#20695)The
MD5(),SHA1(), andENCRYPT()functions should return a binary string, but the result sometimes was converted to the character set of the argument.MAKE_SET()andEXPORT_SET()now use the correct character set for their default separators, resulting in consistent result strings which can be coerced according to normal character set rules. (Bug#20536)LIKEsearches failed for indexedutf8character columns. (Bug#20471)User names have a maximum length of 16 characters (even if they contain multi-byte characters), but were being truncated to 16 bytes. (Bug#20393)
PROCEDURE ANALYSE()returned incorrect values ofMFLOAT(andM,D)DOUBLE(. (Bug#20305)M,D)SUBSTRING()results sometimes were stored improperly into a temporary table when multi-byte character sets were used. (Bug#20204)For an
ENUMcolumn that used theucs2character set, usingALTER TABLEto modify the column definition caused the default value to be lost. (Bug#20108)mysqld --flush failed to flush
MyISAMtable changes to disk following anUPDATEstatement for which no updated column had an index. (Bug#20060)libmysqld returned
TEXTcolumns to the client as number of bytes, not number of characters (which can be different for multi-byte character sets). (Bug#19983)For
TIME_FORMAT(), the%Hand%kformat specifiers can return values larger than two digits (if the hour is greater than 99), but for some query results that contained three-character hours, column values were truncated. (Bug#19844)On 64-bit systems, use of the
cp1250character set with a primary key column in aLIKEclause caused a server crash for patterns having letters in the range 128..255. (Bug#19741)For a
MyISAMtable with aFULLTEXTindex, compression with myisampack or a check with myisamchk after compression resulted in table corruption. (Bug#19702)The build process incorrectly tried to overwrite
sql/lex_hash.h. This caused the build to fail when using a shadow link tree pointing to original sources that were owned by another account. (Bug#18888)Setting
myisam_repair_threadscaused any repair operation on aMyISAMtable to fail to update the cardinality of indexes, instead making them always equal to 1. (Bug#18874)DELETE IGNOREcould hang for foreign key parent deletes. (Bug#18819)Using
> ALLwith subqueries that return no rows yielded incorrect results under certain circumstances due to incorrect application ofMIN()/MAX()optimization. (Bug#18503)Multiple invocations of the
REVERSE()function could return different results. (Bug#18243)For table-format output, mysql did not always calculate columns widths correctly for columns containing multi-byte characters in the column name or contents. (Bug#17939)
Views could not be updated within a stored function or trigger. (Bug#17591)
Using the extended syntax for
TRIM()— that is,TRIM(... FROM ...)— in aSELECTstatement defining a view caused an invalid syntax error when selecting from the view. (Bug#17526)Use of the join cache in favor of an index for
ORDER BYoperations could cause incorrect result sorting. (Bug#17212)Queries containing a subquery that used aggregate functions could return incorrect results. (Bug#16792)
Conversion of
TIMESTAMPvalues between UTC and the local time zone resulted in some values having the year 2069 rather than 1969. (Bug#16327)Using
ANYwith “nontable” subqueries such asSELECT 1yielded incorrect results under certain circumstances due to incorrect application ofMIN()/MAX()optimization. (Bug#16302)Parallel builds occasionally failed on Solaris. (Bug#16282)
A subquery in the
WHEREclause of the outer query and usingINandGROUP BYreturned an incorrect result. (Bug#16255)The
--collation-serverserver option was being ignored. With the fix, if you choose a nondefault character set with--character-set-server, you should also use--collation-serverto specify the collation. (Bug#15276)When using tables containing
VARCHARcolumns created under MySQL 4.1 with a 5.0 or later server, for some queries the metadata sent to the client could have an empty column name. (Bug#14897)The use of
WHEREincol_nameIS NULLSELECTstatements reset the value ofLAST_INSERT_ID()to zero. (Bug#14553)A literal string in a
GROUP BYclause could be interpreted as a column name. (Bug#14019)libmysqldproduced some warnings tostderrwhich could not be silenced. These warnings now are suppressed. (Bug#13717)The source distribution failed to compile when configured with the
--without-geometryoption. (Bug#12991)On Mac OS X, zero-byte
read()orwrite()calls to an SMB-mounted file system could return a nonstandard return value, leading to data corruption. Now such calls are avoided. (Bug#12620)Entries in the slow query log could have an incorrect
Rows_examinedvalue. (Bug#12240)The server returns a more informative error message when it attempts to open a
MERGEtable that has been defined to use non-MyISAMtables. (Bug#10974)DELETEwithWHEREcondition on aBTREE-indexed column for aMEMORYtable deleted only the first matched row. (Bug#9719)A server or network failure with an open client connection would cause the client to hang even though the server was no longer available.
As a result of this change, the
MYSQL_OPT_READ_TIMEOUTandMYSQL_OPT_WRITE_TIMEOUToptions formysql_options()now apply to TCP/IP connections on all platforms. Previously, they applied only to Windows. (Bug#9678)The optimizer could produce an incorrect result after
ANDwith collations such aslatin1_german2_ci,utf8_czech_ci, andutf8_lithianian_ci. (Bug#9509)FROM_UNIXTIME()did not accept arguments up toPOWER(2,31)-1, which it had previously. (Bug#9191)The result for
CAST()when casting a value toUNSIGNEDwas limited to the maximum signedBIGINTvalue (9223372036854775808), rather than the maximum unsigned value (18446744073709551615). (Bug#8663)OPTIMIZE TABLEwithmyisam_repair_threads> 1 could result inMyISAMtable corruption. (Bug#8283)For cross-database multiple-table
UPDATEstatements, a user with all privileges for the default database could update tables in another database for which the user did not haveUPDATEprivileges. (Bug#7391)The
--with-collationoption was not honored for client connections. (Bug#7192)Incorporated portability fixes into the definition of
__attribute__inmy_global.h. (Bug#2717)A patch fixing the omission of leading zeros in dates in MySQL 4.1.21 was reverted.
The patch for the following bugs was reverted: Bug#16377.
End of Product LifecycleActive development and support for MySQL database server versions 3.23, 4.0, and 4.1 has ended. However, for MySQL 4.0 and 4.1, there is still extended support available. For details, see http://www.mysql.com/company/legal/lifecycle/#calendar. According to the MySQL Lifecycle Policy (see http://www.mysql.com/company/legal/lifecycle/#policy), only Security and Severity Level 1 issues will still be fixed for MySQL 4.0 and 4.1. Please consider upgrading to a recent version (MySQL 5.0 or 5.1).
This is a bugfix release for the MySQL 4.1 release family.
This section documents all changes and bug fixes that have been applied since the last official MySQL release. If you would like to receive more fine-grained and personalized update alerts about fixes that are relevant to the version and features you use, please consider subscribing to MySQL Enterprise (a commercial MySQL offering). For more details please see http://www.mysql.com/products/enterprise.
Functionality added or changed:
The mysqldumpslow script has been moved from client RPM packages to server RPM packages. This corrects a problem where mysqldumpslow could not be used with a client-only RPM install, because it depends on my_print_defaults which is in the server RPM. (Bug#20216)
For a table with an
AUTO_INCREMENTcolumn,SHOW CREATE TABLEnow shows the nextAUTO_INCREMENTvalue to be generated. (Bug#19025)Added the
--set-charsetoption to mysqlbinlog to allow the character set to be specified for processing binary log files. (Bug#18351)For spatial data types, the server formerly returned these as
VARSTRINGvalues with a binary collation. Now the server returns spatial values asBLOBvalues. (Bug#10166)A new system variable,
lc_time_names, specifies the locale that controls the language used to display day and month names and abbreviations. This variable affects the output from theDATE_FORMAT(),DAYNAME()andMONTHNAME()functions. See Section 9.8, “MySQL Server Locale Support”.
Bugs fixed:
Security Fix: Invalid arguments to
DATE_FORMAT()caused a server crash. Thanks to Jean-David Maillefer for discovering and reporting this problem to the Debian project and to Christian Hammers from the Debian Team for notifying us of it. (Bug#20729, CVE-2006-3469)Security Fix: On Linux, and possibly other platforms using case-sensitive file systems, it was possible for a user granted rights on a database to create or access a database whose name differed only from that of the first by the case of one or more letters. (Bug#17647, CVE-2006-4226)
Security Fix: If a user has access to
MyISAMtablet, that user can create aMERGEtablemthat accessest. However, if the user's privileges ontare subsequently revoked, the user can continue to accesstby doing so throughm. If this behavior is undesirable, you can start the server with the new--skip-mergeoption to disable theMERGEstorage engine. (Bug#15195, CVE-2006-4031)MySQL Cluster: The repeated creating and dropping of a table would eventually lead to
NDBError 826, Too many tables and attributes ... Insufficient space. (Bug#20847)MySQL Cluster: When attempting to restart the cluster following a data import, the cluster failed during Phase 4 of the restart with Error 2334: Job buffer congestion. (Bug#20774)
MySQL Cluster: The ndb_mgm client command
ALL CLUSTERLOG STATISTICS=15had no effect. (Bug#20336)MySQL Cluster: A node failure during a scan could sometime cause the node to crash when restarting too quickly following the failure. (Bug#20197)
MySQL Cluster: The failure of a data node when preparing to commit a transaction (that is, while the node's status was
CS_PREPARE_TO_COMMIT) could cause the failure of other cluster data nodes. (Bug#20185)MySQL Cluster: Renaming a table in such a way as to move it to a different database failed to move the table's indexes. (Bug#19967)
MySQL Cluster: The cluster's data nodes failed while trying to load data when
NoOfFrangmentLogFileswas set equal to 1. (Bug#19894)MySQL Cluster: Resources for unique indexes on Cluster table columns were incorrectly allocated, so that only one-fourth as many unique indexes as indicated by the value of
UniqueHashIndexescould be created. (Bug#19623)MySQL Cluster: (NDBAPI): On big-endian platforms,
NdbOperation::write_attr()did not update 32-bit fields correctly. (Bug#19537)MySQL Cluster:
LOAD DATA LOCALfailed to ignore duplicate keys in Cluster tables. (Bug#19496)MySQL Cluster: A problem with error handling when
ndb_use_exact_countwas enabled could lead to incorrect values returned from queries usingCOUNT(). A warning is now returned in such cases. (Bug#19202)MySQL Cluster:
TRUNCATEfailed on tables havingBLOBorTEXTcolumns with the error Lock wait timeout exceeded. (Bug#19201)MySQL Cluster: It was possible to use port numbers greater than 65535 for
ServerPortin theconfig.inifile. (Bug#19164)MySQL Cluster:
TRUNCATE TABLEfailed to reset theAUTO_INCREMENTcounter. (Bug#18864)MySQL Cluster: Repeated
CREATE-INSERT-DROPoperations on tables could in some circumstances cause the MySQL table definition cache to become corrupt, so that some mysqld processes could access table information but others could not. (Bug#18595)MySQL Cluster: Repeated use of the
SHOWandALL STATUScommands in the ndb_mgm client could cause the mgmd process to crash. (Bug#18591)MySQL Cluster: Some queries having a
WHEREclause of the formc1=val1 OR c2 LIKE 'val2'were not evaluated correctly. (Bug#17421)MySQL Cluster: An issue with ndb_mgmd prevented more than 27
mysqldprocesses from connecting to a single cluster at one time. (Bug#17150)MySQL Cluster: Using “stale” mysqld
.FRMfiles could cause a newly-restored cluster to fail. This situation could arise when restarting a MySQL Cluster using the--initialoption while leaving connected mysqld processes running. (Bug#16875)MySQL Cluster: A Cluster whose storage nodes were installed from the
MySQL-ndb-storage-RPMs could not perform*CREATEorALTERoperations that made use of nondefault character sets or collations. (Bug#14918)MySQL Cluster: Data node failures could cause excessive CPU usage by ndb_mgmd. (Bug#13987)
Replication: The binary log would create an incorrect
DROPquery when creating temporary tables during replication. (Bug#17263)Failure to account for a
NULLtable pointer on big-endian machines could cause a server crash during type conversion. (Bug#21135)Closing of temporary tables failed if binary logging was not enabled. (Bug#20919)
The
fill_help_tables.sqlfile did not contain aSET NAMES 'utf8'statement to indicate its encoding. This caused problems for some settings of the MySQL character set such asbig5. (Bug#20551)The
fill_help_tables.sqlfile did not load properly if theANSI_QUOTESSQL mode was enabled. (Bug#20542)The mysql client did not ignore client-specific commands (such as
useorhelp) that occurred as the first word on a line within multiple-line/* ... */comments. (Bug#20432)Queries using an indexed column as the argument for the
MIN()andMAX()functions following anALTER TABLE .. DISABLE KEYSstatement returned Got error 124 from storage engine untilALTER TABLE ... ENABLE KEYSwas run on the table. (Bug#20357)The mysql client did not understand
helpcommands that had spaces at the end. (Bug#20328)Improper character set initialization in the embedded server could result in a server crash. (Bug#20318)
For a
DATEparameter sent via aMYSQL_TIMEdata structure,mysql_stmt_execute()zeroed the hour, minute, and second members of the structure rather than treating them as read-only. (Bug#20152)A number of dependency issues in the RPM
benchandtestpackages caused installation of these packages to fail. (Bug#20078)Use of
MIN()orMAX()withGROUP BYon aucs2column could cause a server crash. (Bug#20076)Using
SELECTon a corruptMyISAMtable using the dynamic record format could cause a server crash. (Bug#19835)InnoDBunlocked its data directory before committing a transaction, potentially resulting in nonrecoverable tables if a server crash occurred before the commit. (Bug#19727)A cast problem caused incorrect results for prepared statements that returned float values when MySQL was compiled with gcc 4.0. (Bug#19694)
InnoDBfailed to increment thehandler_read_prevcounter. (Bug#19542)Repeated
DROP TABLEstatements in a stored procedure could sometimes cause the server to crash. (Bug#19399)Multiple-table
DELETEstatements containing a subquery that selected from one of the tables being modified caused a server crash. (Bug#19225)Use of uninitialized user variables in a subquery in the
FROMclause resulted in invalid entries in the binary log. (Bug#19136)The MySQL server startup script /etc/init.d/mysql (created from mysql.server) is now marked to ensure that the system services ypbind, nscd, ldap, and NTP are started first (if these are configured on the machine). (Bug#18810)
mysqldump did not respect the order of tables named with the
--tablesoption. (Bug#18536)MONTHNAME(STR_TO_DATE(NULL, '%m'))could cause a server crash. (Bug#18501)The length of the pattern string prefix for
LIKEoperations was calculated incorrectly for multi-byte character sets. As a result, the scanned range was wider than necessary if the prefix contained any multi-byte characters, and rows could be missing from the result set. (Bug#18359, Bug#16674)The use of
MIN()andMAX()on columns with an index prefix produced incorrect results in some queries. (Bug#18206)An update that used a join of a table to itself and modified the table on both sides of the join reported the table as crashed. (Bug#18036)
Checking a
MyISAMtable (usingCHECK TABLE) having a spatial index and only one row would wrongly indicate that the table was corrupted. (Bug#17877)For a reference to a nonexistent index in
FORCE INDEX, the error message referred to a column, not an index. (Bug#17873)Slave SQL thread cleanup was not handled properly on Mac OS X when a statement was killed, resulting in a slave crash. (Bug#16900)
The
refoptimizer could choose theref_or_nullaccess method in cases where it was not applicable. This could cause inconsistentEXPLAINorSELECTresults for a given statement. (Bug#16798)Concatenating the results of multiple constant subselects produced incorrect results. (Bug#16716)
IS_USED_LOCK()could return an incorrect connection identifier. (Bug#16501)For
SELECT ... FOR UPDATEstatements that usedDISTINCTorGROUP BYover all key parts of a unique index (or primary key), the optimizer unnecessarily created a temporary table, thus losing the linkage to the underlying unique index values. This caused aResult set not updatableerror. (The temporary table is unnecessary because under these circumstances the distinct or grouped columns must also be unique.) (Bug#16458)The omission of leading zeros in dates could lead to erroneous results when these were compared with the output of certain date and time functions.
Note
The patch for this bug was reverted in MySQL 4.1.22.
Concurrent reading and writing of privilege structures could crash the server. (Bug#16372)
Certain queries having a
WHEREclause that included conditions on multi-part keys with more than 2 key parts could produce incorrect results and send [Note] Use_count: Wrong count for key at... messages toSTDERR. (Bug#16168)Some memory leaks in the
libmysqldembedded server were corrected. (Bug#16017)When mysqldump disabled keys and locked a
MyISAMtable, the lock operation happened second. If another client performed a query on the table in the interim, it could take a long time due to indexes not being used. Now the lock operation happens first. (Bug#15977)The server no longer uses a signal handler for signal 0 because it could cause a crash on some platforms. (Bug#15869)
The
ARCHIVEstorage engine does not supportTRUNCATE TABLE, but the server was not returning an appropriate error when truncation of anARCHIVEtable was attempted. (Bug#15558)The
MD5()andSHA()functions treat their arguments as case-sensitive strings. But when they are compared, their arguments were compared as case-insensitive strings, which leads to two function calls with different arguments (and thus different results) compared as being identical. This can lead to a wrong decision made in the range optimizer and thus to an incorrect result set. (Bug#15351)Invalid escape sequences in option files caused MySQL programs that read them to abort. (Bug#15328)
ANALYZE TABLEforTEMPORARYtables had no effect. (Bug#15225)A statement containing
GROUP BYandHAVINGclauses could return incorrect results when theHAVINGclause contained logic that returnedFALSEfor every row. (Bug#14927)An invalid comparison between keys with index prefixes over multi-byte character fields could lead to incorrect result sets if the selected query execution plan used a range scan by an index prefix over a
UTF8character field. This also caused incorrect results under similar circumstances with many other character sets. (Bug#14896)SHOW CREATE TABLEdid not display theAUTO_INCREMENTcolumn attribute if the SQL mode wasMYSQL323orMYSQL40. This also affected mysqldump, which usesSHOW CREATE TABLEto get table definitions. (Bug#14515)Using
SELECTand a table join while running a concurrentINSERToperation would join incorrect rows. (Bug#14400)The binary log lacked character set information for table names when dropping temporary tables. (Bug#14157)
DATE_ADD()andDATE_SUB()returnedNULLwhen the result date was on the day'9999-12-31'. (Bug#12356)For very complex
SELECTstatements could create temporary tables that were too large, and for which the temporary files were not removed, causing subsequent queries to fail. (Bug#11824)LOAD_FILE()returned an error if the file did not exist, rather thanNULLas it should according to the manual. (Bug#10418)When myisamchk needed to rebuild a table,
AUTO_INCREMENTinformation was lost. (Bug#10405)INSERT INTO ... SELECT ... LIMIT 1could be slow because theLIMITwas ignored when selecting candidate rows. (Bug#9676)The
DATA DIRECTORYtable option did not work forTEMPORARYtables. (Bug#8706)No error message was being issued for storage engines that do not support
ALTER TABLE. Now anER_NOT_SUPPORTED_YETerror occurs. (Bug#7643)In a multiple-row
INSERTstatement,LAST_INSERT_ID()should return the same value for each row. However, in some cases, the value could change if the table being inserted into had its ownAUTO_INCREMENTcolumn. (Bug#6880)Some queries that used
ORDER BYandLIMITperformed quickly in MySQL 3.23, but slowly in MySQL 4.x/5.x due to an optimizer problem. (Bug#4981)
End of Product LifecycleActive development and support for MySQL database server versions 3.23, 4.0, and 4.1 has ended. However, for MySQL 4.0 and 4.1, there is still extended support available. For details, see http://www.mysql.com/company/legal/lifecycle/#calendar. According to the MySQL Lifecycle Policy (see http://www.mysql.com/company/legal/lifecycle/#policy), only Security and Severity Level 1 issues will still be fixed for MySQL 4.0 and 4.1. Please consider upgrading to a recent version (MySQL 5.0 or 5.1).
This is a security fix release for the MySQL 4.1 release family.
This section documents all changes and bug fixes that have been applied since the last official MySQL release. If you would like to receive more fine-grained and personalized update alerts about fixes that are relevant to the version and features you use, please consider subscribing to MySQL Enterprise (a commercial MySQL offering). For more details please see http://www.mysql.com/products/enterprise.
Bugs fixed:
Security Fix: An SQL-injection security hole has been found in multi-byte encoding processing. The bug was in the server, incorrectly parsing the string escaped with the
mysql_real_escape_string()C API function.This vulnerability was discovered and reported by Josh Berkus
<josh@postgresql.org>and Tom Lane<tgl@sss.pgh.pa.us>as part of the inter-project security collaboration of the OSDB consortium. For more information about SQL injection, please see the following text.Discussion. An SQL injection security hole has been found in multi-byte encoding processing. An SQL injection security hole can include a situation whereby when a user supplied data to be inserted into a database, the user might inject SQL statements into the data that the server will execute. With regards to this vulnerability, when character set-unaware escaping is used (for example,
addslashes()in PHP), it is possible to bypass the escaping in some multi-byte character sets (for example, SJIS, BIG5 and GBK). As a result, a function such asaddslashes()is not able to prevent SQL-injection attacks. It is impossible to fix this on the server side. The best solution is for applications to use character set-aware escaping offered by a function suchmysql_real_escape_string().However, a bug was detected in how the MySQL server parses the output of
mysql_real_escape_string(). As a result, even when the character set-aware functionmysql_real_escape_string()was used, SQL injection was possible. This bug has been fixed.Workarounds. If you are unable to upgrade MySQL to a version that includes the fix for the bug in
mysql_real_escape_string()parsing, but run MySQL 5.0.1 or higher, you can use theNO_BACKSLASH_ESCAPESSQL mode as a workaround. (This mode was introduced in MySQL 5.0.1.)NO_BACKSLASH_ESCAPESenables an SQL standard compatibility mode, where backslash is not considered a special character. The result will be that queries will fail.To set this mode for the current connection, enter the following SQL statement:
SET sql_mode='NO_BACKSLASH_ESCAPES';
You can also set the mode globally for all clients:
SET GLOBAL sql_mode='NO_BACKSLASH_ESCAPES';
This SQL mode also can be enabled automatically when the server starts by using the command-line option
--sql-mode=NO_BACKSLASH_ESCAPESor by settingsql-mode=NO_BACKSLASH_ESCAPESin the server option file (for example,my.cnformy.ini, depending on your system). (Bug#8378, CVE-2006-2753)See also Bug#8303.
Replication: The dropping of a temporary table whose name contained a backtick ('
`') character was not correctly written to the binary log, which also caused it not to be replicated correctly. (Bug#19188)The client libraries were not compiled for position-independent code on Solaris-SPARC and AMD x86_64 platforms. (Bug#18091, Bug#13159, Bug#14202)
RPM packages had spurious dependencies on Perl modules and other programs. (Bug#13634)
Running myisampack followed by myisamchk with the
--unpackoption would corrupt theauto_incrementkey. (Bug#12633)The patch for Bug#8303 broke the fix for Bug#8378 and was reverted.
In string literals with an escape character (
\) followed by a multi-byte character that had (\) as its second byte, the literal was not interpreted correctly. Now only next byte now is escaped, and not the entire multi-byte character. This means it is a strict reverse of themysql_real_escape_string()function.
End of Product LifecycleActive development and support for MySQL database server versions 3.23, 4.0, and 4.1 has ended. However, for MySQL 4.0 and 4.1, there is still extended support available. For details, see http://www.mysql.com/company/legal/lifecycle/#calendar. According to the MySQL Lifecycle Policy (see http://www.mysql.com/company/legal/lifecycle/#policy), only Security and Severity Level 1 issues will still be fixed for MySQL 4.0 and 4.1. Please consider upgrading to a recent version (MySQL 5.0 or 5.1).
This release includes the patches for recently reported security
vulnerabilites in the MySQL client-server protocol. We would like
to thank Stefano Di Paola <stefano.dipaola@wisec.it>
for finding and reporting these to us.
Functionality added or changed:
Security Enhancement: Added the global
max_prepared_stmt_countsystem variable to limit the total number of prepared statements in the server. This limits the potential for denial-of-service attacks based on running the server out of memory by preparing huge numbers of statements. The current number of prepared statements is available through theprepared_stmt_countsystem variable. (Bug#16365)Packaging: The
MySQL-shared-compat-4.1.shared compatibility RPMs no longer contain libraries for MySQL 5.0 and up. They now contain libraries for MySQL 3.23, 4.0, and 4.1.1 only. (Bug#19288)X-.i386.rpmNew
charsetcommand added to mysql command-line client. By typingcharsetorname\C(such asname\C UTF8), the client character set can be changed without reconnecting. (Bug#16217)InnoDBnow caches a list of unflushed files instead of scanning for unflushed files during a table flush operation. This improves performance when--innodb_file_per_tableis set on a system with a large number ofInnoDBtables. (Bug#15653)When using the
GROUP_CONCAT()function where thegroup_concat_max_lensystem variable was greater than 512, the type of the result wasBLOBonly if the query included anORDER BYclause; otherwise the result was aVARCHAR.The result type of the
GROUP_CONCAT()function is nowVARCHARonly if the value of thegroup_concat_max_lensystem variable is less than or equal to 512. Otherwise, this function returns aBLOB. (Bug#14169)Large file support was re-enabled for the MySQL server binary for the AIX 5.2 platform. (Bug#13571)
Bugs fixed:
Security Fix: A malicious client, using specially crafted invalid login or
COM_TABLE_DUMPpackets was able to read uninitialized memory, which potentially, though unlikely in MySQL, could have led to an information disclosure. (, ) Thanks to Stefano Di Paola<stefano.dipaola@wisec.it>for finding and reporting this bug. (CVE-2006-1516, CVE-2006-1517)MySQL Cluster: A simultaneous
DROP TABLEand table update operation utilising a table scan could trigger a node failure. (Bug#18597)MySQL Cluster: A timeout in the handling of an
ABORTcondition with more that 32 operations could yield a node failure. (Bug#18414)MySQL Cluster: A node restart immediately following a
CREATE TABLEwould fail.Important
This fix supports 2-node Clusters only.
MySQL Cluster: In event of a node failure during a rollback, a “false” lock could be established on the backup for that node, which lock could not be removed without restarting the node. (Bug#18352)
MySQL Cluster: The cluster created a crashed replica of a table having an ordered index — or when logging was not enabled, of a table having a table or unique index — leading to a crash of the cluster following 8 successive restarts. (Bug#18298)
MySQL Cluster: When replacing a failed master node, the replacement node could cause the cluster to crash from a buffer overflow if it had an excessively large amount of data to write to the cluster log. (Bug#18118)
MySQL Cluster: Backups could fail for large clusters with many tables, where the number of tables approached
MaxNoOfTables. (Bug#17607)MySQL Cluster: The
REDOlog would become corrupted (and thus unreadable) in some circumstances, due to a failure in the query handler. (Bug#17295)MySQL Cluster: An
UPDATEwith an inner join failed to match any records if both tables in the join did not have a primary key. (Bug#17257)MySQL Cluster: A
DELETEwith a join in theWHEREclause failed to retrieve any records if both tables in the join did not have a primary key. (Bug#17249)MySQL Cluster: In some cases,
LOAD DATA INFILEdid not load all data intoNDBtables. (Bug#17081)MySQL Cluster: Restarting nodes were allowed to start and join the cluster too early. (Bug#16772)
MySQL Cluster: ndb_delete_all ran out of memory when processing tables containing
BLOBcolumns. (Bug#16693)MySQL Cluster: In a 2-node cluster with a node failure, restarting the node with a low value for
StartPartialTimeoutcould cause the cluster to come up partitioned (“split-brain” issue).A similar issue could occur when the cluster was first started with a sufficiently low value for this parameter. (Bug#16447, Bug#18612)
MySQL Cluster: On systems with multiple network interfaces, data nodes would get “stuck” in startup phase 2 if the interface connecting them to the management server was working on node startup while the interface interconnecting the data nodes experienced a temporary outage. (Bug#15695)
MySQL Cluster: Inserting and deleting
BLOBcolumn values while a backup was in process could cause data nodes to shut down. (Bug#14028)MySQL Cluster: No error message was generated for setting
NoOfFragmentLogFilestoo low. (Bug#13966)MySQL Cluster: No error message was generated for setting
MaxNoOfAttributestoo low. (Bug#13965)MySQL Cluster: The server would not compile with
NDBsupport on AIX 5.2. (Bug#10776)Replication: Use of
TRUNCATE TABLEfor aTEMPORARYtable on a master server was propagated to slaves properly, but slaves did not decrement theSlave_open_temp_tablescounter properly. (Bug#17137)Attempting to set the default value of an
ENUMorSETcolumn toNULLcaused a server crash. (Bug#19145)Index prefixes for
utf8VARCHARcolumns did not work forUPDATEstatements. (Bug#19080)Index corruption could occur in cases when
key_cache_block_sizewas not a multiple of themyisam-block-sizevalue (for example, with--key_cache_block_size=1536and--myisam-block-size=1024). (Bug#19079)Creating a table in an
InnoDBdatabase with a column name that matched the name of an internalInnoDBcolumn (includingDB_ROW_ID,DB_TRX_ID,DB_ROLL_PTRandDB_MIX_ID) would cause a crash. MySQL now returns Error 1005 Cannot create table witherrnoset to -1. (Bug#18934)MySQL would not compile on Linux distributions that use the
tinfolibrary. (Bug#18912)mysql_reconnect()sent aSET NAMESstatement to the server, even for pre-4.1 servers that do not understand the statement. (Bug#18830)For single-
SELECTunion constructs of the form (SELECT ... ORDER BYorder_list1[LIMITn]) ORDER BYorder_list2, theORDER BYlists were concatenated and theLIMITclause was ignored. (Bug#18767)Conversion of a number to a
CHAR UNICODEstring returned an invalid result. (Bug#18691)UNCOMPRESS(NULL)could cause subsequentUNCOMPRESS()calls to returnNULLfor legal non-NULLarguments. (Bug#18643)A
LOCK TABLESstatement that failed could causeMyISAMnot to update table statistics properly, causing a subsequentCHECK TABLEto report table corruption. (Bug#18544)The
IN-to-EXISTStransformation was making a reference to a parse tree fragment that was left out of the parse tree. This caused problems with prepared statements. (Bug#18492)The
-lmtmalloclibrary was removed from the output of mysql_config on Solaris, as it caused problems when buildingDBD::mysql(and possibly other applications) on that platform that tried to use dlopen() to access the client library. (Bug#18322)The euro sign (
€) was not stored correctly in columns using thelatin1_german1_ciorlatin1_general_cicollation. (Bug#18321)If
InnoDBencountered aHA_ERR_LOCK_TABLE_FULLerror and rolled back a transaction, the transaction was still written to the binary log. (Bug#18283)Connecting to a server with a UCS2 default character set with a client using a non-UCS2 character set crashed the server. (Bug#18004)
Executing
SELECTon a large table that had been compressed within myisampack could cause a crash. (Bug#17917)A call to
MIN()with aCASEexpression as its argument could return a nonminimum value. (Bug#17896)MyISAM: Keys for which the first part of the key was aCHARorVARCHARcolumn using the UTF-8 character set and longer than 254 bytes could become corrupted. (Bug#17705)SELECT ... WHERE, whencolumnLIKE 'A%'columnhad a key and used thelatin2_czech_cscollation, caused the wrong number of rows to be returned. (Bug#17374)A
FULLTEXTquery in aUNIONcould result in unexpected behavior. (Bug#16893)IA-64 RPM packages for Red Hat and SuSE Linux that were built with the icc compiler incorrectly depended on icc runtime libraries. (Bug#16662)
A race condition could occur when dropping the adaptive hash index for a B-tree page in
InnoDB. (Bug#16582)MySQL-shared-compat-4.1.15-0.i386.rpm,MySQL-shared-compat-4.1.16-0.i386.rpm, andMySQL-shared-compat-4.1.18-0.i386.rpmincorrectly depended onglibc2.3 and could not be installed on aglibc2.2 system. (Bug#16539)mysqldump tried to dump data from a view. (In MySQL 4.1, this applies when connecting to a server from MySQL 5.0 or higher.) (Bug#16389)
Dropping
InnoDBconstraints namedcould crash the server. (Bug#16387)tbl_name_ibfk_0A query using WHERE (
column_1,column_2) IN ((value_1,value_2)[, (..., ...), ...]) would return incorrect results. (Bug#16248)Character set conversion of string constants for
UNIONof constant and table column was not done when it was safe to do so. (Bug#15949)The
mysql_close()C API function leaked handles for shared-memory connections on Windows. (Bug#15846)Security improvement: In grant table comparisons, improper use of a
latin1collation caused some host name matches to be true that should have been false. Thanks to Deomid Ryabkov for finding this bug and proposing a solution. (Bug#15756)Binary distributions for Solaris contained files with group ownership set to the nonexisting
wheelgroup. Now thebingroup is used. (Bug#15562)When running a query that contained a
GROUP_CONCAT(SELECT GROUP_CONCAT(...) ), the result wasNULLexcept in theROLLUPpart of the result, if there was one. (Bug#15560)During conversion from one character set to
ucs2, multi-byte characters with noucs2equivalent were converted to multiple characters, rather than to0x003F QUESTION MARK. (Bug#15375)SETvalue definitions containing commas were not rejected. Now a definition such asSET('a,b','c,d')results in an error. (Bug#15316)LOAD DATA FROM MASTERproduced invalid warnings and Packet out of order errors when the database already existed on the slave. (Bug#15302)CAST(for largedoubleAS SIGNED INT)doublevalues outside the signed integer range truncated the result to be within range, but the result sometimes had the wrong sign, and no warning was generated. (Bug#15098)SELECT COUNT(*)for aMyISAMtable could return different results depending on whether an index was used. (Bug#14980)Killing a long-running query containing a subquery could cause a server crash. (Bug#14851)
A
FULLTEXTquery in a prepared statement could result in unexpected behavior. (Bug#14496)Security Improvement: GRANTs to users with wildcards in their host information could be erroneously applied to similar users with the same user name and similar wildcards. For example, a privilege granted to
foo@%are also applied to userfoo@192.%. (Bug#14385)Avoid trying to include
<asm/atomic.h>when it doesn't work in C++ code. (Bug#13621)mysql_config returned incorrect libraries on
x86_64systems. (Bug#13158)A key on a
MEMORYtable would sometimes fail to match a row. (Bug#12796)MYSQL_STMTobjects were not preserved following a connection reset. Attempting to operate on them afterwards caused the server to crash. (Bug#12744)The server was always built as though
--with-extra-charsets=complexhad been specified. (Bug#12076)Setting the
myisam_repair_threadssystem variable to a value larger than 1 could cause corruption of largeMyISAMtables. (Bug#11527)Repeated invocation of
my_init()andmy_end()caused corruption of character set data and connection failure. (Bug#6536)
End of Product LifecycleActive development and support for MySQL database server versions 3.23, 4.0, and 4.1 has ended. However, for MySQL 4.0 and 4.1, there is still extended support available. For details, see http://www.mysql.com/company/legal/lifecycle/#calendar. According to the MySQL Lifecycle Policy (see http://www.mysql.com/company/legal/lifecycle/#policy), only Security and Severity Level 1 issues will still be fixed for MySQL 4.0 and 4.1. Please consider upgrading to a recent version (MySQL 5.0 or 5.1).
Functionality added or changed:
Bugs fixed:
Replication: The
--replicate-doand--replicate-ignoreoptions were not being enforced on multiple-table statements. (Bug#16487, Bug#15699)UPDATEstatement crashed multi-byte character setFULLTEXTindex if update value was almost identical to initial value only differing in some spaces being changed to . (Bug#16489)Single table
UPDATEstatements withoutORDER BYclauses which updated the same indexed column that was being filtered on were optimized with a full index scan instead of a more appropriate index range scan. (Bug#15935)STR_TO_DATE(1,NULL)caused a server crash. (Bug#15828, CVE-2006-3081)Test suite
func_mathtest returned warnings when the server was not compiled withInnoDBsupport. (Bug#15429)RPM packages had an incorrect
zlibdependency. (Bug#15223)Running out of diskspace in the location specified by the
tmpdiroption resulted in incorrect error message. (Bug#14634)The
MBROverlapsGIS function returned incorrect results. (Bug#14320)The length of a
VARCHAR()column that used theutf8character set would increase each time the table was re-created in a stored procedure or prepared statement, eventually causing theCREATE TABLEstatement to fail. (Bug#13134)A prepared statement created from a
SELECT ... LIKEquery (such asPREPARE stmt1 FROM 'SELECT col_1 FROM tedd_test WHERE col_1 LIKE ?';) would begin to produce erratic results after being executed repeatedly numerous (thousands) of times. (Bug#12734)A
CREATE TABLE ... SELECT ...on an equation involvingDOUBLEvalues could result in the table being created with columns too small to hold the equation result. (Bug#9855)
End of Product LifecycleActive development and support for MySQL database server versions 3.23, 4.0, and 4.1 has ended. However, for MySQL 4.0 and 4.1, there is still extended support available. For details, see http://www.mysql.com/company/legal/lifecycle/#calendar. According to the MySQL Lifecycle Policy (see http://www.mysql.com/company/legal/lifecycle/#policy), only Security and Severity Level 1 issues will still be fixed for MySQL 4.0 and 4.1. Please consider upgrading to a recent version (MySQL 5.0 or 5.1).
Functionality added or changed:
Support files for compiling with Visual Studio 6 have been removed. (Bug#15094)
Internal
sha1_resultfunction renamed tomysql_sha1_resultto prevent conflicts with other projects. (Bug#13944)In the
latin5_turkish_cicollation, the order of the charactersA WITH CIRCUMFLEX,I WITH CIRCUMLEX, andU WITH CIRCUMFLEXwas changed. If you have used these characters in any indexed columns, you should rebuild those indexes. (Bug#13421)
Bugs fixed:
MySQL Cluster: If an abort by the Transaction Coordinator timed out, the abort condition was incorrectly handled, causing the transaction record to be released prematurely. (Bug#15685)
MySQL Cluster: Under some circumstances, it was possible for a restarting node to undergo a forced shutdown. (Bug#15632)
MySQL Cluster: A node which failed during cluster startup was sometimes not removed from the internal list of active nodes. (Bug#15587)
MySQL Cluster: There was a small window for a node failure to occur during a backup without an error being reported. (Bug#15425)
MySQL Cluster: A memory leak occurred when performing ordered index scans using indexes on columns larger than 32 bytes. This would eventually lead to the forced shutdown of all mysqld server processes used with the cluster. (Bug#13078)
Cluster API: Upon the completion of a scan where a key request remained outstanding on the primary replica and a starting node died, the scan did not terminate. This caused incomplete error handling for the failed node. (Bug#15908)
Performing a
RENAME TABLEon anInnoDBtable when the server was started with the--innodb_file_per_tableoption and the data directory was a symlink caused a server crash. (Bug#15991)Piping the
fill_help_tables.sqlfile into mysqld resulted in a syntax error. (Bug#15965)CAST(... AS TIME)operations returned different results when using versus not using prepared-statement protocol. (Bug#15805)Issuing a
DROP USERcommand could cause some users to encounter aerror. (Bug#15775)hostnameis not allowed to connect to this MySQL serverCertain permission management statements could create a
NULLhost name for a user, resulting in a server crash. (Bug#15598)The
COALESCE()function truncated data in aTINYTEXTcolumn. (Bug#15581)BDB: ADELETE,INSERT, orUPDATEof aBDBtable could cause the server to crash where the query contained a subquery using an index read. (Bug#15536)Characters in the
gb2312andeuckrcharacter sets which did not have Unicode mappings were truncated. (Bug#15377)Multiple-table update operations were counting updates and not updated rows. As a result, if a row had several updates it was counted several times for the “rows matched” value but updated only once. (Bug#15028)
Symbolic links did not function properly on Windows platforms. (Bug#14960, Bug#14310)
SELECTqueries that began with an opening parenthesis were not being placed in the query cache. (Bug#14652)InnoDB: Comparison of indexedVARCHAR CHARACTER SET ucs2 COLLATE ucs2_bincolumns usingLIKEcould fail. (Bug#14583)Using an aggregate function as the argument for a
HAVINGclause resulted in the aggregate function always returningFALSE. (Bug#14274)For
InnoDBtables, using a column prefix for autf8column in a primary key causedCannot find recorderrors when attempting to locate records. (Bug#14056)InnoDB: Ifforeign_key_checkswas 0,InnoDBallowed inconsistent foreign keys to be created. (Bug#13778)Certain
CREATE TABLE ... AS ...statements involvingENUMcolumns could cause server crash. (Bug#12913)Using
CAST()to convert values with long fractional and/or exponent parts to TIME returned wrong results. (Bug#12440)A race condition when creating temporary files caused a deadlock on Windows with threads in
Opening tablesorWaiting for tablestates. (Bug#12071)DELETEcould report full-text index corruption (Invalid key for table ...) if the index was built with repair-by-sort, the data in the full-text index used UCA collation, and some word appeared in the data terminated by a 0xC2A0 character as well as by other nonletter characters. (Bug#11336)Access Deniederror could be erroneously returned with specific grant combinations under high load. (Bug#7209)An
INSERT ... SELECTstatement between tables in aMERGEset can return errors when statement involves insert into child table from merge table or vice-versa. (Bug#5390)
End of Product LifecycleActive development and support for MySQL database server versions 3.23, 4.0, and 4.1 has ended. However, for MySQL 4.0 and 4.1, there is still extended support available. For details, see http://www.mysql.com/company/legal/lifecycle/#calendar. According to the MySQL Lifecycle Policy (see http://www.mysql.com/company/legal/lifecycle/#policy), only Security and Severity Level 1 issues will still be fixed for MySQL 4.0 and 4.1. Please consider upgrading to a recent version (MySQL 5.0 or 5.1).
Functionality added or changed:
When a date column is set
NOT NULLand contains0000-00-00, it will be updated for UPDATE statements that containsin the WHERE clause. (Bug#14186)columnnameIS NULLWhen executing single-table
UPDATEorDELETEqueries containing anORDER BY ... LIMITclause, but not having anyNWHEREclause, MySQL can now take advantage of an index to read the firstNrows in the ordering specified in the query. If an index is used, only the firstNrecords will be read, as opposed to scanning the entire table. (Bug#12915)The
MySQL-serverRPM now explicitly assigns themysqlsystem user to themysqluser group during the postinstallation process. This corrects an issue with upgrading the server on some Linux distributions whereby a previously existingmysqluser was not changed to themysqlgroup, resulting in wrong groups for files created following the installation. (Bug#12823)MySQL 4.1 now supports character set conversion for seven additional
cp950characters into thebig5character set:0xF9D6,0xF9D7,0xF9D8,0xF9D9,0xF9DA,0xF9DB, and0xF9DC.Note
If you move data containing these additional characters to an older MySQL installation which does not support them, you may encounter errors.
The
CHAR()function now takes an optionalUSINGclause that may be used to produce a result in a specific character set rather than in the connection character set.charset
Bugs fixed:
MySQL Cluster: Creating a table with packed keys failed silently.
NDBnow supports thePACK_KEYSoption toCREATE TABLEcorrectly. (Bug#14514)MySQL Cluster: Repeated transactions using unique index lookups could cause a memory leak leading to error 288,
Out of index operations in transaction coordinator. (Bug#14199)MySQL Cluster:
REPLACEfailed when attempting to update a primary key value in a Cluster table. (Bug#14007)MySQL Cluster: The perror utility included with the
MySQL-ServerRPM did not provide support for the--ndboption. It now supports this option, and so can be used to obtain error message text for MySQL Cluster error codes. (Bug#13740)MySQL Cluster: Placing multiple
[tcp default]sections in the cluster'sconfig.inifile crashed ndb_mgmd. (The process now exits gracefully in such cases, with an appropriate error message.) (Bug#13611)Replication: Multiple update queries using any type of subquery would be ignored by a replication slave when a condition such as
--replicate-ignore-tablelike condition was used. (Bug#13236)Replication: An
UPDATEquery using a join would be executed incorrectly on a replication slave. (Bug#12618)Replication: On Windows, the server could crash during shutdown if both replication threads and normal client connection threads were active. (Bug#11796)
Replication:
InnoDB: During replication, There was a failure to record events in the binary log that still occurred even in the event of aROLLBACK. For example, this sequence of commands:BEGIN; CREATE TEMPORARY TABLE t1 (a INT) ENGINE=INNODB; ROLLBACK; INSERT INTO t1 VALUES (1);
would succeed on the replication master as expected. However, the
INSERTwould fail on the slave because theROLLBACKwould (erroneously) cause theCREATE TEMPORARY TABLEstatement not to be written to the binlog. (Bug#7947)Closed a memory leak in the SSL code. (Bug#14780)
Deletes from a
CSVtable could cause table corruption. (Bug#14672)A
LIMIT-related optimization failed to take into account thatMyISAMtable indexes can be disabled, causing Error 124 when it tried to use such an index. (Bug#14616)Selecting from a table in both an outer query and a subquery could cause a server crash. (Bug#14482)
CREATE TABLEcould crash the server and write invalid data into thetbl_name(...) SELECT ....frmfile if theCREATE TABLEandSELECTboth contained a column with the same name. Also, if a default value is specified in the column definition, it is now actually used. (Bug#14480)mysql_fix_privilege_tables.sqlcontained an erroneous comment that resulted in an error when the file contents were processed. (Bug#14469)Creating a table containing an
ENUMorSETcolumn from within a stored procedure or prepared statement caused a server crash later when executing the procedure or statement. (Bug#14410)Non-
latin1object names were written with wrong character set to grant tables. (Bug#14406)For a table that had been opened with
HANDLER OPEN, issuingOPTIMIZE TABLE,ALTER TABLE, orREPAIR TABLEcaused a server crash. (Bug#14397)Portability fixes to support OpenSSL 0.9.8a. (Bug#14221)
A
UNIONofDECIMALcolumns could produce incorrect results. (Bug#14216)Statements of the form
CREATE TABLE ... SELECT ...that created a column with a multi-byte character set could incorrectly calculate the maximum length of the column, resulting in aSpecified key was too longerror. (Bug#14139)Use of
WITH ROLLUP PROCEDURE ANALYSE()could hang the server. (Bug#14138)When the
DATE_FORMAT()function appeared in both theSELECTandORDER BYclauses of a query but with arguments that differ by case (for example,%mand%M), incorrect sorting may have occurred. (Bug#14016)TIMEDIFF(),ADDTIME(), andSTR_TO_DATE()were not reporting that they could returnNULL, so functions that invoked them might misinterpret their results. (Bug#14009)An update of a
CSVtable could cause a server crash. (Bug#13894)For
MyISAMtables, incorrect query results or incorrect updates could occur under these conditions: There is a multiple-column index that includes aBLOBcolumn that is not the last column in the index, and the statement performs a lookup on the index using key column values that haveNULLfor theBLOBcolumn and that provide values for all columns up to theBLOBcolumn and at least the next column in the index. (Bug#13814)The example configuration files supplied with MySQL distributions listed the
thread_cache_sizevariable asthread_cache. (Bug#13811)mysqld_safe did not correctly start the
-maxversion of the server (if it was present) if the--lediroption was given. (Bug#13774)Character set conversion was not being done for
FIND_IN_SET(). (Bug#13751)On BSD systems, the system
crypt()call could return an error for some salt values. The error was not handled, resulting in a server crash. (Bug#13619)Given a column
col_namedefined asNOT NULL, aSELECT ... FROM ... WHEREquery followingcol_nameIS NULLSHOW TABLE STATUSwould erroneously return a nonempty result. (Bug#13535)Specifying
--default-character-set=cp-932for mysqld would cause SQL scripts containing comments written using that character set to fail with a syntax error. (Bug#13487)Use of
in thecol_name= VALUES(col_name)ON DUPLICATE KEY UPDATEclause of anINSERTstatement failed with anColumn 'error. (Bug#13392)col_name' in field list is ambiguousLIKEoperations did not work reliably for thecp1250character set. (Bug#13347)CAST(1E+300 TO SIGNED INT)produced an incorrect result on little-endian machines. (Bug#13344)The default value of
query_prealloc_sizewas set to 8192, lower than its minimum of 16384. The minimum has been lowered to 8192. (Bug#13334)mysqladmin and mysqldump would hang on SCO OpenServer. (Bug#13238)
SELECT DISTINCT CHAR(returned incorrect results aftercol_name)SET NAMES utf8. (Bug#13233)The server did not take character set into account in checking the width of the
mysql.user.Passwordcolumn. As a result, it could incorrectly generate long password hashes even if the column was not long enough to hold them. (Bug#13064)With
--log-slave-updatesExec_master_log_posof SQL thread lagged IO (Bug#13023)Maximum values were handled incorrectly for command-line options of type
GET_LL. (Bug#12925)The endian byte in for spatial values in WKB format was not consistently respected. (Bug#12839)
make failed when attempting to build MySQL in different directory other than that containing the source. (Bug#11827)
An expression in an
ORDER BYclause failed withUnknown column 'if the expression referred to a column alias. (Bug#11694)col_name' in 'order clause'LOAD DATA INFILEwould not accept the same character for both theESCAPED BYand theENCLOSED BYclauses. (Bug#11203)Issuing
STOP SLAVEafter having acquired a global read lock withFLUSH TABLES WITH READ LOCKcaused a deadlock. NowSTOP SLAVEis generates an error in such circumstances. (Bug#10942)Corrected a memory-copying problem for
big5values when using icc compiler on Linux IA-64 systems. (Bug#10836)PROCEDURE ANALYSE()could suggest a data type with a negative display width. (Bug#10716)InnoDB: Pad UTF-8VARCHARcolumns with0x20. Pad UCS2CHARcolumns with0x0020. (Bug#10511)Perform character set conversion of constant values whenever possible without data loss. (Bug#10446)
PURGE MASTER LOGSstatement that used subquery for date crashed server. (Bug#10308)Multiple race conditions existed in OpenSSL, particularly noticeable on Solaris. (Bug#9270)
The
--interactive-timeoutand--slave-net-timeoutoptions for mysqld were not being obeyed on Mac OS X and other BSD-based platforms. (Bug#8731)Queries of the form
(SELECT ...) ORDER BY ...were being treated as aUNION. This improperly resulted in only distinct values being returned (becauseUNIONby default eliminates duplicate results). Also, references to column aliases inORDER BYclauses following parenthesizedSELECTstatements were not resolved properly. (Bug#7672)Character set file parsing during
mysql_real_connect()read past the end of a memory buffer. (Bug#6413)Full-text indexing/searching failed for words that end with more than one apostrophe. (Bug#5686)
On Windows, the server was not ignoring hidden or system directories that Windows may have created in the data directory, and would treat them as available databases. (Bug#4375)
End of Product LifecycleActive development and support for MySQL database server versions 3.23, 4.0, and 4.1 has ended. However, for MySQL 4.0 and 4.1, there is still extended support available. For details, see http://www.mysql.com/company/legal/lifecycle/#calendar. According to the MySQL Lifecycle Policy (see http://www.mysql.com/company/legal/lifecycle/#policy), only Security and Severity Level 1 issues will still be fixed for MySQL 4.0 and 4.1. Please consider upgrading to a recent version (MySQL 5.0 or 5.1).
Functionality added or changed:
MySQL Cluster: The parsing of the
CLUSTERLOGcommand by ndb_mgm was corrected to allow multiple items. (Bug#12833)Replication: Better detection of connection timeout for replication servers on Windows allows elimination of extraneous
Lost connectionerrors in the error log. (Bug#5588)The limit of 255 characters on the input buffer for mysql on Windows has been lifted. The exact limit depends on what the system allows, but can be up to 64K characters. A typical limit is 16K characters. (Bug#12929)
Added the
myisam_stats_method, which controls whetherNULLvalues in indexes are considered the same or different when collecting statistics forMyISAMtables. This influences the query optimizer as described in Section 7.4.6, “MyISAMIndex Statistics Collection”. (Bug#12232)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)
RAND()no longer allows nonconstant initializers. (Prior to MySQL 4.1.15, the effect of nonconstant initializers is undefined.) (Bug#6172)When using
IF NOT EXISTSwithCREATE DATABASEorCREATE TABLE, a warning now is generated if the database or table already exists. : (Bug#6008)
Bugs fixed:
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: The cluster management client
START BACKUPcommand could be interrupted by aSHOWcommand. (Bug#13054)MySQL Cluster: Updating a column of one of the
TEXTtypes 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 usedlatin_ci, then “aAa” might be stored in the backup as “AAA”. (Bug#12950)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 Disk is full condition occurred, ndbd exited without reporting this condition in the error log. (Bug#12716)
MySQL Cluster: An
ALTER TABLEcommand caused loss of data stored prior to the issuing of the command. (Bug#12118)MySQL Cluster: Invalid values in
config.inicaused ndb_mgmd to crash. (Bug#12043)MySQL Cluster: Multiple ndb_mgmd processes in a cluster did not know each other's IP addresses. (Bug#12037)
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: With two mgmd processes in a cluster, ndb_mgm output for
SHOWwould display the same IP address for both processes, even when they were on different hosts. (Bug#11595)MySQL Cluster: MySQL failed to compile when
--with-ndb-ccflagswas specified. (Bug#11538)MySQL Cluster: Improved error messages related to file system issues. (Bug#11218)
MySQL Cluster:
LOAD DATA INFILEwith 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
NDBtable, an improperly dereferenced pointer could cause the mysqld process to crash. (Bug#9282)Replication: When any
--replicate-wild-* optionis used, the slave ignoresSET ONE_SHOT TIME_ZONEstatements as belonging to a nonreplicated table. (Bug#12542)Replication: The
--replicate-rewrite-dband--replicate-do-tableoptions 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 DATABASEfails 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 writeDROP TABLEstatements to the binary log for the tables so that they are dropped on slaves. (Bug#4680)The server could over-allocate memory when performing a
FULLTEXTsearch for stopwords only. (Bug#13582)After running configure with the
--with-embedded-privilege-controloption, the embedded server failed to build. (Bug#13501)UNIONof twoDECIMALcolumns returned wrong field type. (Bug#13372)Comparisons involving row constructors containing constants could cause a server crash. (Bug#13356)
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.errlog. (Bug#13218, Bug#11039)Aggregate functions sometimes incorrectly were allowed in the
WHEREclause ofUPDATEandDELETEstatements. (Bug#13180)If special characters such as
'_','%', or the escape character were included within the prefix of a column index,LIKEpattern matching on the indexed column did not return the correct result. (Bug#13046, Bug#13919)SHOW CREATE TABLEdid not display anyFOREIGN KEYclauses if a temporary file could not be created. NowSHOW CREATE TABLEdisplays an error message in an SQL comment if this occurs. (Bug#13002)On HP-UX 11.x (PA-RISC), the
-Loption caused mysqlimport to crash. (Bug#12958)The counters for the
Key_read_requests,Key_reads,Key_write_requests, andKey_writesstatus variables were changed fromunsigned longtounsigned longlongto accommodate larger values before the variables roll over and restart from 0. (Bug#12920)For queries with
DISTINCTandWITH ROLLUP, theDISTINCTshould be applied after the rollup operation, but was not always. (Bug#12887)A column that can be
NULLwas not handled properly forWITH ROLLUPin a subquery or view. (Bug#12885)MIN()andMAX()sometimes returned a non-NULLvalue for an empty row set (for example,SELECT MAX(1) FROM empty_table). (Bug#12882)GROUP_CONCAT()ignored an empty string if it was the first value to occur in the result. (Bug#12863)SELECT GROUP_CONCAT(...) FROM DUALin a subquery could cause the client to hang. (Bug#12861)If a client has opened an
InnoDBtable for which the.ibdfile is missing,InnoDBwould not honor aDROP TABLEstatement for the table. (Bug#12852)The server crashed when one thread resized the query cache while another thread was using it. (Bug#12848)
A concurrency problem for
CREATE ... SELECTcould cause a server crash. (Bug#12845)The
ARCHIVEstorage engine does not support deletes, but it was possible to delete by usingDELETEorTRUNCATE TABLEwith aFEDERATEDtable that points to anARCHIVEtable. (Bug#12836)After changing the character set with
SET CHARACTER SET, the result of theGROUP_CONCAT()function was not converted to the proper character set. (Bug#12829)Reverted a change introduced in MySQL 4.1.13 (
SHOW FIELDStruncated theTYPEcolumn 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)The patch for the following bugs was reverted: Bug#7142.
An optimizer estimate of zero rows for a nonempty
InnoDBtable used in a left or right join could cause incomplete rollback for the table. (Bug#12779)Shared-memory connections were not working on Windows. (Bug#12723)
Performing an
IS NULLcheck on theMIN()orMAX()of an indexed column in a complex query could produce incorrect results. (Bug#12695)CHECKSUM TABLElockedInnoDBtables and did not use a consistent read. (Bug#12669)A
SELECT DISTINCTquery with a constant value for one of the columns would return only a single row. (Bug#12625)The
LIKE ... ESCAPEsyntax produced invalid results when escape character was larger than one byte. (Bug#12611)DELETEorUPDATEfor an indexedMyISAMtable could fail. This was due to a change in end-space comparison behavior from 4.0 to 4.1. (Bug#12565)A
UNIONof longutf8VARCHARcolumns was sometimes returned as a column with aLONGTEXTdata type rather thanVARCHAR. This could prevent such queries from working at all if selected into aMEMORYtable because theMEMORYstorage engine does not support theTEXTdata types. (Bug#12537)A client connection thread cleanup problem caused the server to crash when closing the connection if the binary log was enabled. (Bug#12517)
MEMORYtables usingB-Treeindex on 64-bit platforms could produce false table is full errors. (Bug#12460)Deadlock occurred when several account management statements were run (particularly between
FLUSH PRIVILEGES/SET PASSWORDandGRANT/REVOKEstatements). (Bug#12423)InnoDBwas too permissive withLOCK TABLE ... READ LOCALand allowed new inserts into the table. NowREAD LOCALis equivalent toREADforInnoDB. This will cause slightly more locking in mysqldump, but makesInnoDBtable dumps consistent withMyISAMtable dumps. (Bug#12410)A prepared statement failed with
Illegal mix of collationsif the client character set wasutf8and the statement used a table that had a character set oflatin1. (Bug#12371)The value of
character_set_resultscould be set toNULL, but returned the string"NULL"when retrieved. (Bug#12363)On Windows, the server was preventing tables from being created if the table name was a prefix of a forbidden name. For example,
nulis a forbidden name because it is the same as a Windows device name, but a table with the name ofnornuwas being forbidden as well. (Bug#12325)Users created using an IP address or other alias rather than a host name listed in
/etc/hostscould not set their own passwords. (Bug#12302)CHECKSUM TABLEcommand 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)For
VARCHARcolumns with theucs2character set,InnoDBtrimmed trailing0x20bytes rather than0x0020words, resulting in incorrect index lookups later. (Bug#12178)Outer join elimination was erroneously applied for some queries that used a
NOT BETWEENcondition, anIN(condition, or anvalue_list)IF()condition. (Bug#12102, Bug#12101)LOAD DATA INFILEdid not respect theNO_AUTO_VALUE_ON_ZEROSQL mode setting. (Bug#12053)TRUNCATE TABLEdid not work withTEMPORARYInnoDBtables. (Bug#11816)Queries that created implicit temporary tables could return incorrect data types for some columns. (Bug#11718)
Use of a user-defined function within the
HAVINGclause of a query resulted in anUnknown columnerror. (Bug#11553)ALTER TABLEdid not move the table to default database unless the new name was qualified with the database name. (Bug#11493)db_name.tRENAMEtmysqld_multi now quotes arguments on command lines that it constructs to avoid problems with arguments that contain shell metacharacters. (Bug#11280)
Spatial index corruption could occur during updates. (Bug#9645)
The
have_innodbread-only system variable could not be selected withSELECT @@have_innodb. (Bug#9613)Queries against a
MERGEtable that has a composite index could produce incorrect results. (Bug#9112)Display of the
AUTO_INCREMENTattribute bySHOW CREATE TABLEwas not controlled by theNO_FIELD_OPTIONSSQL mode as it should have been. (Bug#7977)The data type for
DECIMALcolumns was not respected when updating the column from another column. For example, updating aDECIMAL(10,1)column with the value from aDECIMAL(10,5)column resulted in aDECIMAL(10,5)value being stored. Similarly, altering a column with aDECIMAL(10,5)datatype to aDECIMAL(10,1)data type did not properly convert data values. (Bug#7598)MySQL programs in binary distributions for Solaris 8/9/10 x86 systems would not run on Pentium III machines. (Bug#6772)
On Windows when the
--innodb_buffer_pool_awe_mem_mboption 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)myisampack did not properly pack
BLOBvalues larger than 224 bytes. (Bug#4214)
End of Product LifecycleActive development and support for MySQL database server versions 3.23, 4.0, and 4.1 has ended. However, for MySQL 4.0 and 4.1, there is still extended support available. For details, see http://www.mysql.com/company/legal/lifecycle/#calendar. According to the MySQL Lifecycle Policy (see http://www.mysql.com/company/legal/lifecycle/#policy), only Security and Severity Level 1 issues will still be fixed for MySQL 4.0 and 4.1. Please consider upgrading to a recent version (MySQL 5.0 or 5.1).
Functionality added or changed:
MySQL Cluster: Improved handling of the configuration variables
NoOfPagesToDiskDuringRestartACC,NoOfPagesToDiskAfterRestartACC,NoOfPagesToDiskDuringRestartTUP, andNoOfPagesToDiskAfterRestartTUPshould result in noticeably faster startup times for MySQL Cluster. (Bug#12149)MySQL Cluster: A new
-Poption is available for use with the ndb_mgmd client. When called with this option, ndb_mgmd prints all configuration data tostdout, then exits.If a thread (connection) has tables locked, the query cache is switched off for that thread. This prevents invalid results where the locking thread inserts values between a second thread connecting and selecting from the table. (Bug#12385)
Added an optimization that avoids key access with
NULLkeys for therefmethod when used in outer joins. (Bug#12144)Added support of where clause for queries with
FROM DUAL. (Bug#11745)SHOW CHARACTER SETandINFORMATION_SCHEMAnow properly report theLatin1character set ascp1252. (Bug#11216)Added new query cache test for the embedded server to the test suite, there are now specific tests for the embedded and nonembedded servers. (Bug#9508)
The MySQL server now starts correctly with all combinations of
--basedirand--datadir, resolving an issue introduced by the original fix for this bug in MySQL 4.1.9. (Bug#7249)See also Bug#7518.
Bugs fixed:
MySQL Cluster: The temporary tables created by an
ALTER TABLEon anNDBtable were visible to all SQL nodes in the cluster. (Bug#12055)MySQL Cluster:
NDBignored theHostnameoption in the[ndbd default]section of the cluster configuration file. (Bug#12028)MySQL Cluster: The output of perror
--helpdid not display any information about the--ndboption. (Bug#11999)MySQL Cluster: Attempting to create or drop tables during a backup would cause the cluster to shut down. (Bug#11942)
MySQL Cluster: ndb_mgmd leaked file descriptors. (Bug#11898)
Replication: Slave I/O threads were considered to be in the running state when launched (rather than after successfully connecting to the master server), resulting in incorrect
SHOW SLAVE STATUSoutput. (Bug#10780)Mishandling of comparison for rows containing
NULLvalues against rows produced by anINsubquery could cause a server crash. (Bug#12392)Concatenating
USER()orDATABASE()with a column produced invalid results. (Bug#12351)Creation of the
mysqlgroup account failed during the RPM installation. (Bug#12348)Renamed the
rest()macro inmy_list.htolist_rest()to avoid name clashes with user code. (Bug#12327)Performing
DATE(LEFT(on acolumn,8))DATEcolumn produces incorrect results. (Bug#12266)myisampack failed to delete
.TMDtemporary files when run with-Toption. (Bug#12235)Updated dependency list for RPM builds to include missing dependencies such as
useraddandgroupadd. (Bug#12233)InnoDB: Do not flush after each write, not even before setting up the doublewrite buffer. Flushing can be extremely slow on some systems. (Bug#12125)Two threads could potentially initialize different characters sets and overwrite each other. (Bug#12109)
GROUP_CONCATignores theDISTINCTmodifier when used in a query joining multiple tables where one of the tables has a single row. (Bug#12095)big5strings were not being stored inFULLTEXTindex. (Bug#12075)SHOW BINARY LOGSdisplayed a file size of 0 for all log files but the current one if the files were not located in the data directory. (Bug#12004)mysql_next_result()returns incorrect value if final query in a batch fails. (Bug#12001)Character data truncated when GBK characters
0xA3A0and0xA1are present. (Bug#11987)UNIONquery withFULLTEXTcould cause server crash. (Bug#11869)Corrected an optimizer problem with
NOT NULLconstraints within a subquery in anUPDATEstatement that resulted in a server crash. (Bug#11868)Some subqueries of the form
SELECT ... WHERE ROW(...) IN (were being handled incorrectly. (Bug#11867)subquery)Creating a table with a
SETorENUMcolumn with theDEFAULT 0clause caused a server crash if the table's character set wasutf8. (Bug#11819)Comparisons like
SELECT "A\\" LIKE "A\\";fail when usingSET NAMES utf8;. (Bug#11754)The
mysql_info()C API function could return incorrect data when executed as part of a multi-statement that included a mix of statements that do and do not return information. (Bug#11688)Attempting to repair a table having a fulltext index on a column containing words whose length exceeded 21 characters and where
myisam_repair_threadswas greater than 1 would crash the server. (Bug#11684)LIKE pattern matching using prefix index didn't return correct result. (Bug#11650)
Corrected a problem with the optimizer incorrectly adding
NOT NULLconstraints, producing in incorrect results for complex queries. (Bug#11482)Queries with subqueries that contain outer joins could return wrong results. (Bug#11479)
Multiplying
ABS()output by a negative number would return incorrect results. (Bug#11402)For PKG installs on Mac OS X, the preinstallation and postinstallation scripts were being run only for new installations and not for upgrade installations, resulting in an incomplete installation process. (Bug#11380)
Prepared statement parameters could cause errors in the binary log if the character set was
cp932. (Bug#11338)The
LPAD()andRPAD()functions returned the wrong length tomysql_fetch_fields(). (Bug#11311)For prepared statements, the SQL parser did not disallow “
?” parameter markers immediately adjacent to other tokens, which could result in malformed statements in the binary log. (For example,SELECT * FROM t WHERE? = 1could becomeSELECT * FROM t WHERE0 = 1.) (Bug#11299)The C API function
mysql_stmt_reset()did not clear error information. (Bug#11183)myisam.testfailed when server compiled using--without-geometryoption. (Bug#11083)User variables were not automatically cast for comparisons, causing queries to fail if the column and connection character sets differed. Now when mixing strings with different character sets but the same coercibility, allow conversion if one character set is a superset of the other. (Bug#10892)
SELECT @@local...returned@@session...in the column header. (Bug#10724)When two threads competed for the same table, a deadlock could occur if one thread also had a lock on another table through
LOCK TABLESand the thread was attempting to remove the table in some manner while the other thread tried to place locks on both tables. (Bug#10600)Incorrect error message displayed if user attempted to create a table in a nonexisting database using
CREATEsyntax. (Bug#10407)database_name.table_nameGROUP_CONCAT()sometimes returned a result with a different collation from that of its arguments. (Bug#10201)INSERT ... SELECT ... ON DUPLICATE KEY UPDATEcould fail with an erroneous “Column 'col_name' specified twice” error. (Bug#10109)Multiple-table
UPDATEqueries usingCONVERT_TZ()would fail with an error. (Bug#9979)The value of
max_connections_per_hourwas capped by the unrelatedmax_user_connectionssetting. (Bug#9947)mysql_fetch_fields()returned incorrect length information forMEDIUMandLONGTEXTandBLOBcolumns. (Bug#9735)FLUSH TABLES WITH READ LOCKcombined withLOCK TABLE .. WRITEcaused deadlock. (Bug#9459)Server-side prepared statements failed for columns with a character set of
ucs2. (Bug#9442)In SQL prepared statements, comparisons could fail for values not equally space-padded. For example,
SELECT 'a' = 'a ';returns 1, butPREPARE s FROM 'SELECT ?=?'; SET @a = 'a', @b = 'a '; PREPARE s FROM 'SELECT ?=?'; EXECUTE s USING @a, @b;incorrectly returned 0. (Bug#9379)References to system variables in an SQL statement prepared with
PREPAREwere evaluated duringEXECUTEto their values at prepare time, not to their values at execution time. (Bug#9359)For server shutdown on Windows, error messages of the form
Forcing close of threadwere being written to the error log. Now connections are closed more gracefully without generating error messages. (Bug#7403)nuser: 'name'ISO-8601formatted dates were not being parsed correctly. (Bug#7308)Pathame values for options such as
--basediror--datadirdidn't work on Japanese Windows machines for directory names containing multi-byte characters having a second byte of0x5C(“\”). (Bug#5439)
End of Product LifecycleActive development and support for MySQL database server versions 3.23, 4.0, and 4.1 has ended. However, for MySQL 4.0 and 4.1, there is still extended support available. For details, see http://www.mysql.com/company/legal/lifecycle/#calendar. According to the MySQL Lifecycle Policy (see http://www.mysql.com/company/legal/lifecycle/#policy), only Security and Severity Level 1 issues will still be fixed for MySQL 4.0 and 4.1. Please consider upgrading to a recent version (MySQL 5.0 or 5.1).
Functionality added or changed:
Security Fix: A UDF library-loading vulnerability could result in a buffer overflow and code execution. (CVE-2005-2558)
Incompatible Change: Previously, conversion of
DATETIMEvalues to numeric form by adding zero produced a result inYYYYMMDDHHMMSSformat. The result ofDATETIME+0is now inYYYYMMDDHHMMSS.000000format. (Bug#12268)Replication: Some data definition statements (
CREATE TABLEwhere the table was not a temporary table,TRUNCATE TABLE,DROP DATABASE, andCREATE DATABASE) were not being written to the binary log after aROLLBACK. This also caused problems with replication.Important
As a result of this fix, the folowing statements now cause an implicit commit:
(Bug#6883)
System variables are now treated as having
SYSVAR(system constant) coercibility. For example,@@versionis now treated likeVERSION()and@@character_set_clientis now treated likeCHARSET( USER() ). See Section 9.1.6.5, “Special Cases Where Collation Determination Is Tricky”. (Bug#10904)MEMORYtables now support indexes of up to 500 bytes. See Section 13.4, “TheMEMORY(HEAP) Storage Engine”. (Bug#10566)The
table,type, androwscolumns ofEXPLAINoutput can now beNULL. This is required for usingEXPLAINonSELECTqueries that use no tables, such asEXPLAIN SELECT 1). (Bug#9899)You can again refer to other tables in the
ON DUPLICATE KEY UPDATEpart of anINSERT ... SELECTstatement as long as there is noGROUP BYin theSELECTpart. One side effect of this is that you may have to qualify nonunique column names in the values part ofON DUPLICATE KEY UPDATE. (Bug#9728, Bug#8147)Added the
--log-slow-admin-statementsserver option to request logging of slow administrative statements such asOPTIMIZE TABLE,ANALYZE TABLE, andALTER TABLEto the slow query log. These statements were logged in MySQL 4.0, but not in 4.1. (Bug#9141)Expanded on information provided in general log and slow query log for prepared statements. (Bug#8367, Bug#9334)
Added
mysql_set_character_set()C API function for setting the default character set of the current connection. This allows clients to affect the character set used bymysql_real_escape_string(). (Bug#8317)Added the
--add-drop-databaseoption tomysqldump. (Bug#3716)SHOW BINARY LOGSnow displays aFile_sizecolumn that indicates the size of each file.InnoDB: When creating or extending anInnoDBdata file, allocate at most one megabyte at a time for initializing the file. Previously,InnoDBused to allocate and initialize 1 or 8 megabytes of memory, even if a few 16-kilobyte pages were to be written. This fix improves the performance ofCREATE TABLEininnodb_file_per_tablemode.
Bugs fixed:
Security Fix: A vulnerability in
zlibcould result in a buffer overflow and arbitrary code execution. Shortly after MySQL 4.1.13 was released, a second potentialzlibsecurity flaw was discovered and fixed. A patch for this flaw was applied to the 4.1.13 sources, and the result published as MySQL 4.1.13a. The affected binaries were rebuilt. (Bug#11844, CVE-2005-2096, CVE-2005-1849)Security Fix: On Windows systems, a user with any of the following privileges on
*.*could crash mysqld by issuing aUSE LPT1;orUSE PRN;command:In addition, any of the commands
USE NUL;,USE CON;,USE COM1;, orUSE AUX;would report success even though the database was not in fact changed. (Bug#9148)MySQL Cluster:
NDBfailed to build with gcc 4.0. (Bug#11377)MySQL Cluster: When trying to open a table that could not be discovered or unpacked, the cluster returned error codes which the MySQL server falsely interpreted as operating system errors. (Bug#10365)
Replication:
LOAD DATA ... REPLACE INTO ...on a replication slave failed for anInnoDBtable having a unique index in addition to the primary key. (Bug#11401)Replication: An invalid comaprison caused warnings for packet length in replication on 64-bit compilers. (Bug#11064)
Replication: Queries of the form
UPDATE ... (SELECT ... ) SET ...run on a replication master would crash all the slaves. (Bug#10442, CVE-2004-4380)Replication: An
UPDATEquery containing a subquery caused replication to fail. (Bug#9361)When applying the
group_concat_max_lenlimit,GROUP_CONCAT()could truncate multi-byte characters in the middle. (Bug#23451)Selecting the result of an aggregate function for an
ENUMorSETcolumn within a subquery could result in a server crash. (Bug#11821)Corrected an optimization failure where a query returned an incorrect result for use of a newly populated table until the table was flushed. (Bug#11700)
The
--master-dataoption for mysqldump resulted in no error if the binary log was not enabled. Now an error occurs unless the--forceoption is given. (Bug#11678)Invoking the
DES_ENCRYPT()function could cause a server crash if the server was started without the--des-key-fileoption. (Bug#11643)mysqldump now exports
HASHindex definitions usingUSINGrather thanTYPEwhen the index name is optional. This corrects a problem when reloading the output forPRIMARY KEYdefinition, becauseTYPEmust be preceded an index name, which is not given for aPRIMARY KEY. (Bug#11635)IP addresses not shown in
ndb_mgm SHOWcommand on second ndb_mgmd (or on ndb_mgmd restart). (Bug#11596)Modifying a
CHARcolumn with theutf8character set to a shorter length did not properly truncate values due to not computing their length inutf8character units. (Bug#11591)MySQL would not compile correctly on QNX due to missing
rint()function. (Bug#11544)A
ROLLUPquery could return a wrong result set when itsGROUP BYclause contained references to the same column. (Bug#11543)Queries with subqueries in the
FROMclause were not being added to the query cache. (Bug#11522)Using
CONCAT_WS()on a column setNOT NULLcaused incorrect results when used in aLEFT JOIN. (Bug#11469)Prepared statement with subqueries returned corrupt data. (Bug#11458)
Temporary tables were created in the data directory instead of
tmpdir. (Bug#11440)Errors could occur when performing
GROUP BYon calculated values of a single row table. These could sometimes cause the server to crash on Windows. (Bug#11414)Server crashed when using
GROUP BYon the result of aDIVoperation on aDATETIMEvalue. (Bug#11385)Manually inserting a row with
host=''intomysql.tables_privand performing aFLUSH PRIVILEGESwould cause the server to crash. (Bug#11330)Possible
NULLvalues inBLOBcolumns could crash the server when aBLOBwas used in aGROUP BYquery. (Bug#11295)Optimizer performed range check when comparing unsigned integers to negative constants, could cause errors. (Bug#11185)
Some internal functions did not take into account that, for multi-byte character sets,
CHARandVARCHARcolumns could exceed 255 bytes, which could cause the server to crash. (Bug#11167)Testing for
crypt()support caused compilation problems when using OpenSSL/yaSSL on HP-UX and Mac OS X. (Bug#11150, Bug#10675)The
NULLIF()function could produce incorrect results if the first argument wasNULL. (Bug#11142)mysqld_safewould sometimes fail to remove the pid file for the oldmysqlprocess after a crash. As a result, the server would fail to start due to a falseA mysqld process already exists...error. (Bug#11122)SHOW WARNINGSwith aLIMIT 0clause returned all messages rather than an empty result set. (Bug#11095)The server could crash due to an attempt to allocate too much memory when
GROUP BYandblob_colCOUNT(DISTINCT)were used. (Bug#11088)A
CREATE TABLEstatement would crash the server when no database was selected. (Bug#11028)db_name.tbl_nameLIKE ...The
mysql_configscript did not handle symbolic linking properly. (Bug#10986)The value returned by the
FIELD()function was incorrect when its parameter list contained one or more instances ofNULL. (Bug#10944)The host name cache was not working. (Bug#10931)
INSERT ... SELECT ... ON DUPLICATE KEY UPDATEproduced inaccurate results. (Bug#10886)A three byte buffer overflow in the client functions caused improper exiting of the client when reading a command from the user. (Bug#10841)
The mysql client would output a prompt twice following input of very long strings, because it incorrectly assumed that a call to the _cgets() function would clear the input buffer. (Bug#10840)
Setting
@@sql_mode = NULLcaused an erroneous error message. (Bug#10732)Inserting a
DOUBLEvalue into autf8string column crashed the server on Windows. (Bug#10714)On Mac OS X,
libmysqlclient_r.anow is built with--fno-commonto make it possible to link a shared two-level namespace library againstlibmysqlclient_r.a. (Bug#10638)InnoDBwrongly reported in the.errlog that MySQL wass trying to drop a nonexistent table, if no more room remained in the tablespace. (Bug#10607)Executing
LOAD INDEX INTO CACHEfor a table while other threads where selecting from the table caused a deadlock. (Bug#10602)DES_ENCRYPT()andDES_DECRYPT()require SSL support to be enabled, but were not checking for it. Checking for incorrect arguments or resource exhaustion was also improved for these functions. (Bug#10589)The
LAST_DAY()failed to returnNULLwhen supplied with an invalid argument. See Section 11.6, “Date and Time Functions”. (Bug#10568)INSERT ... ON DUPLICATE KEY UPDATEwithMERGEtables, which do not have unique indexes, caused the server to crash. (Bug#10400)A problem with the
my_global.hfile caused compilation of MySQL to fail on single-processor Linux systems running 2.6 kernels. (Bug#10364)SUBSTRING()did not work properly for input in theucs2character set. (Bug#10344)DROP DATABASEfailed check for all referencingInnoDBtables from other databases before dropping any tables. (Bug#10335)mysqldump crashed using the
--complete-insertoption while dumping tables with a large number of long column names. (Bug#10286)When used within a subquery,
SUBSTRING()returned an empty string. (Bug#10269)Queries against a table using a compound index based on the length of a UTF-8 text column produced incorrect results. For example, given a table with an index defined as shown:
CREATE TABLE t ( id INT NOT NULL, city VARCHAR(20) NOT NULL, KEY (city(7),id) ) TYPE=MYISAM CHARACTER SET=utf8;
Assuming that suitable data has been inserted into the table, then a query such as
SELECT * FROM t WHERE city = 'Durban';would fail. (Bug#10253)Using
#pragma interfaceor#pragma implementationin source files caused portability issues forcygwin. (Bug#10241)A simultaneous
CREATE TABLE ... SELECT FROMandtableALTER TABLEon the same table caused the server to crash. (Bug#10224)tableUnder certain rare circumstances, inserting into the
mysql.hosttable could cause the server to crash. (Bug#10181)For
MEMORYtables, it was possible for updates to be performed using outdated key statistics when the updates involved only very small changes in a very few rows. This resulted in the random failures of queries such asUPDATE t SET col = col + 1 WHERE col_key = 2;where the same query with noWHEREclause would succeed. (Bug#10178)CASEoperator returns incorrect result when its arguments are not constants and its return value is put into a regular or temporary table (temporary == created by SQL engine forUNION/nonindexedGROUP BYand such operations). (Bug#10151)When used in joins,
SUBSTRING()failed to truncate to zero those string values that could not be converted to numbers. (Bug#10124)For a
UNIONthat involved long string values, values were not being converted correctly toTEXTvalues. (Bug#10025)An overly strict debugging assertion caused debug server builds to fail for some
, wherecol_name=const_exprconst_exprwas a constant expression such as a subquery. (Bug#10020)The handling by the
HEX()function of numbers larger than 264 was improved. (Bug#9854)A problem with the
cp1250_czech_cscollation caused someLIKEcomparisons to fail. (Bug#9759)On Windows, with
lower_case_table_namesset to 2, usingALTER TABLEto alter aMEMORYorInnoDBtable that had a mixed-case name also improperly changed the name to lowercase. (Bug#9660)mysqldump --xmldid not formatNULLcolumn values correctly. (Bug#9657)ALTER TABLE ... ENABLE INDEXEStreatedNULLvalues as equal when collecting index statistics forMyISAMtables, resulting in different statistics from those generated byANALYZE TABLEand causing the optimizer to make poor index choices later. The same problem occurred for bulk insert statistics collection. NowNULLvalues are treated as unequal, just as forANALYZE TABLE. (Bug#9622)The
--no-dataoption for mysqldump was being ignored if table names were given after the database name. (Bug#9558)MySQL sometimes reported erroneously that certain character values had crashed a table when trying to convert other character sets to UTF-8. (Bug#9557)
CREATE TABLE t AS SELECT UUID()created aVARCHAR(12)column, which is too small to hold the 36-character result fromUUID(). (Bug#9535)Table names were not handled correctly when
lower_case_table_names = 2if the table name lettercase differed in theFROMandWHEREclauses. (Bug#9500)SHOW WARNINGSdid not properly display warnings generated by executing a cached query. (Bug#9414)Incorrect results when searching using
IN()where search items includedNULLand0. (Bug#9393)mysqldump could crash for illegal or nonexistent table names. (Bug#9358)
SELECT DISTINCT ... GROUP BYreturned multiple rows (it should return a single row). (Bug#8614)constantThe server timed out SSL connections too quickly on Windows. (Bug#8572)
For a
MERGEtable withMyISAMtables in other, symlinked, databases,SHOW CREATE TABLEreported theMyISAMtables using the name of the symlinked directory rather than the database name. (Bug#8183)OPTIMIZErun on anInnoDBtable did not return a Table is full error if there was insufficient room in the tablespace. (Bug#8135)The
mysqlhotcopyscript was not parsing the output ofSHOW SLAVE STATUScorrectly when called with the--record_log_posoption. (Bug#7967)An incorrect result was obtained for columns that included an aggregate function as part of an expression, and when
WITH ROLLUPwas used withGROUP BY. (Bug#7914)Queries with
ROLLUPreturned wrong results for expressions containingGROUP BYcolumns. (Bug#7894)A Boolean full-text search where a query contained more query terms than one-third of the query length caused the server to hang or crash. (Bug#7858)
GROUP_CONCAT()withDISTINCTandWITH ROLLUPignoredDISTINCTfor some rows. (Bug#7405)SHOW FIELDStruncated theTYPEcolumn to 40 characters.Note
This fix was reverted in MySQL 4.1.15 because it broke existing applications.
(Bug#7142)
See also Bug#12817.
Added a missing mutex when rotating the relay logs. Also, the server now logs an error message if the size of a relay log cannot be read. (Bug#6987)
Locking for
CREATE TABLE ... SELECTforInnoDBtables was too weak. It allowedINSERTstatements issued for the created table while theCREATE TABLEstatement was still running to appear in the binary log before theCREATE TABLEstatement. (Bug#6678)The incorrect sequence of statements
HANDLERwithout a precedingtbl_nameREADindex_nameNEXTHANDLERfor antbl_nameREADindex_name= (value_list)InnoDBtable resulted in a server crash rather than an error. (Bug#5373)
Note
The fix for interpretation of MERGE table
.MRG files (Bug#10687) was made for
Windows builds after MySQL 4.1.12 was released and is present
in MySQL 4.1.12a.
End of Product LifecycleActive development and support for MySQL database server versions 3.23, 4.0, and 4.1 has ended. However, for MySQL 4.0 and 4.1, there is still extended support available. For details, see http://www.mysql.com/company/legal/lifecycle/#calendar. According to the MySQL Lifecycle Policy (see http://www.mysql.com/company/legal/lifecycle/#policy), only Security and Severity Level 1 issues will still be fixed for MySQL 4.0 and 4.1. Please consider upgrading to a recent version (MySQL 5.0 or 5.1).
Functionality added or changed:
Incompatible Change: The behavior of
LOAD DATA INFILEandSELECT ... INTO OUTFILEhas changed when theFIELDS TERMINATED BYandFIELDS ENCLOSED BYvalues both are empty. Formerly, a column was read or written the display width of the column. For example,INT(4)was read or written using a field with a width of 4. Now columns are read and written using a field width wide enough to hold all values in the field. However, data files written before this change was made might not be reloaded correctly withLOAD DATA INFILEfor MySQL 4.1.12 and up. This change also affects data files read by mysqlimport and written by mysqldump --tab, which useLOAD DATA INFILEandSELECT ... INTO OUTFILE. For more information, see Section 12.2.5, “LOAD DATA INFILESyntax”. (Bug#12564)When the server cannot read a table because it cannot read the
.frmfile, print a message that the table was created with a different version of MySQL. (This can happen if you create tables that use new features and then downgrade to an older version of MySQL.) (Bug#10435)InnoDB: Whenforeign_key_checks = 0,ALTER TABLEandRENAME TABLEwill ignore any type incompatibilities between referencing and referenced columns. Thus, it will be possible to convert the character sets of columns that participate in a foreign key. Be sure to convert all tables before modifying any data! (Bug#9802)New
/*>prompt for mysql. This prompt indicates that a/* ... */comment was begun on an earlier line and the closing*/sequence has not yet been seen. (Bug#9186)InnoDB: When the maximum length ofSHOW INNODB STATUSoutput would be exceeded, truncate the beginning of the list of active transactions, instead of truncating the end of the output. (Bug#5436)Updated version of
libeditto 2.9. (Bug#2596)InnoDB: Ifinnodb_locks_unsafe_for_binlogis enabled and the isolation level of the transaction is not set toSERIALIZABLE,InnoDBuses a consistent read for select in clauses such asINSERT INTO ... SELECTandUPDATE ... (SELECT)that do not specifyFOR UPDATEorLOCK IN SHARE MODE. Thus, no locks are set to rows read from selected table.Previously in MySQL 4.1, an
Illegal mix of collationserror occurred when mixing strings from same character set when one had a nonbinary collation and the other a binary collation. Now the binary collation takes precedence, so that both strings are treated as having the binary collation. This restores compatibility with MySQL 4.0 behavior.Added the
cp932Japanese character set.Added a
--debugoption to my_print_defaults.
Bugs fixed:
Security Fix: Starting mysqld with
--user=caused it to run using the privileges of the account from which it was invoked, including thenon_existent_userrootaccount. (Bug#9833)Security Fix: mysql_install_db created the
mysql_install_db.Xfile with a predictable file name and insecure permissions, which allowed local users to execute arbitrary SQL statements by modifying the file's contents. (CVE-2005-1636)MySQL Cluster:
AUTO_INCREMENTdid not work withINSERT..SELECTonNDBtables. (Bug#9675)MERGEtables could fail on Windows due to incorrect interpretation of path name separator characters for file names in the.MRGfile. (Bug#10687)CHARandVARCHARcolumns that used thesjischaracter set were not being saved correctly, causing the following columns to be corrupted. (Bug#10493)Floats and doubles were not handled correctly when using the prepared statement API in the embedded server. (Bug#10443)
The
--delimiteroption for the nds_select program was nonfunctional. (Bug#10287)mysql.ccdid not compile correctly using VC++ on Windows. (Bug#10245)In some cases, concurrent
DELETEandINSERT...SELECTqueries could crash the MySQL server. The issue was a problem in the key cache. (Bug#10167)When
SELECTwas the finalconstantSELECTin aUNION, a trailingLIMIT ...worked, but a trailingORDER BY ...orORDER BY ... LIMIT ...did not. (Bug#10032)awk script portability problems were found in
cmd-line-utils/libedit/makelist.sh. (Bug#9954)The error message for exceeding
MAX_CONNECTIONS_PER_HOURmistakenly referred tomax_connections. (Bug#9947)Concurrent inserts were allowed into the tables in the
SELECTpart ofINSERT ... SELECT ... UNION .... This could result in the incorrect order of queries in the binary log. (Bug#9922)For a user-defined function invoked from within a prepared statement, the UDF's initialization routine was invoked for each execution of the statement, but the deinitialization routine was not. (It was invoked only when the statement was closed.) For UDFs that have an expensive deinit function (such as
myperl), this fix has negative performance consequences. (Bug#9913)RENAME TABLEfor anARCHIVEtable failed if the.arnfile was not present. (Bug#9911)mysql.server no longer uses nonportable alias command or LSB functions. (Bug#9852)
my_print_defaults was ignoring the
--defaults-extra-fileoption or crashing when the option was given. (Bug#9851, Bug#9136)SELECT ROUND(produced a different result fromexpr)CREATE TABLE ... SELECT ROUND(. (Bug#9837)expr)Starting mysqld with the
--skip-innodband--default-storage-engine=innodb(or--default-table-type=innodbcaused a server crash. (Bug#9815)Queries containing
CURRENT_USER()incorrectly were registered in the query cache. (Bug#9796)Corrected some failures of prepared statements for SQL (
PREPAREplusEXECUTE) to return all rows for someSELECTstatements. (Bug#9777, Bug#9096)CREATE TABLE ... LIKEdid not work correctly whenlower_case_table_nameswas set on a case-sensitive file system and the source table name was not given in lowercase. (Bug#9761)net_read_timeoutandnet_write_timeoutwere not being respected on Windows. (Bug#9721)Use of a subquery that used
WITH ROLLUPin theFROMclause of the main query sometimes resulted in aColumn cannot be nullerror. (Bug#9681)InnoDB: Assertion failures of typesut_a(cursor->old_stored == BTR_PCUR_OLD_STORED)andprebuilt->template_type == 0could occur when performing multi-table updates. This bug was introduced in 4.1.10 and 4.0.24. (Bug#9670)An error occurred if you specified a default value of
TRUEorFALSEfor aBOOLcolumn. (Bug#9666)A server installed as a Windows service and started with
--shared-memorycould not be stopped. (Bug#9665)A problem with
readlinecaused the mysql client to crash when the user pressedControl-R.. (Bug#9568)Memory block allocation did not function correctly for the query cache in the embedded server. (Bug#9549)
ENUMandSETcolumns inInnoDBtables were treated incorrectly as character strings. This bug did not manifest itself withlatin1collations, but it caused malfunction withutf8. Old tables will continue to work. In new tables,ENUMandSETwill be stored internally as unsigned integers. (Bug#9526)A segmentation fault in mysqlcheck occurred when the last table checked in
--auto-repairmode returned an error (such as the table being aMERGEtable). (Bug#9492)myisampack run on 64-bit systems resulted in segmentation violations. (Bug#9487)
Changed metadata for result of
SHOW KEYS: Data type forSub_partcolumn now isSMALLINTrather thanTINYINTbecause key part length can be longer than 255. (Bug#9439)An
InnoDBtest suite failure was caused by a locking conflict between two server instances at server shutdown or startup. This conflict on advisory locks appears to be the result of a bug in the operating system; these locks should be released when the files are closed, but somehow that does not always happen immediately in Linux. (Bug#9381)The optimizer did not compute the union of two ranges for the
ORoperator correctly. (Bug#9348)MAX()for anINT UNSIGNED(unsigned 4-byte integer) column could return negative values if the column contained values larger than 231. (Bug#9298)Indexes on
MyISAMtables could sometimes be corrupted; this was the result of padding values with blanks for comparison: Dumping a table with mysqldump, reloading it, and then re-running the binary log against it crashed the index and required a repair. (Bug#9188)mysqldump dumped core when invoked with
--tmpand--single-transactionoptions and a nonexistent table name. (Bug#9175)Multiple-table updates could produce spurious data-truncation warnings if they used a join across columns that are indexed using a column prefix. (Bug#9103)
Extraneous comparisons between
NULLvalues in indexed columns were performed by the optimzer for operators such as=that are never true forNULL. (Bug#8877)The server did not compile correctly with MinGW. Our thanks to Nils Durner for the patch. (Bug#8872)
In the client/server protocol for prepared statements, reconnection failed when the connection was killed with reconnection enabled. (Bug#8866)
The warning message from
GROUP_CONCAT()did not always indicate the correct number of lines. (Bug#8681)Remove extra slashes in
--tmpdirvalue (for example, convert/var//tmpto/var/tmp, because they caused various errors. (Bug#8497)MySQL no longer automatically blocks IP numbers for which
gethostbyname_r()fails when the reason is that the DNS server is down. Thanks to Jeremy Cole for patch. (Bug#8467)An error in the implementation of the
MyISAMcompression algorithm causedmyisampackto fail with very large sets of data (total size of all the records in a single column needed to be at least 3 GB in order to trigger this issue). (Bug#8321)TIMEDIFF()with a negative time first argument and positive time second argument produced incorrect results. (Bug#8068)A deadlock could occur on an update followed by a
SELECTon anInnoDBtable without any explicit locks being taken.InnoDBnow takes an exclusive lock whenINSERT ON DUPLICATE KEY UPDATEis checking duplicate keys. (Bug#7975)configure did not check the system for atomic operations capabilities. (Bug#7970)
A deadlock resulted from using
FLUSH TABLES WITH READ LOCKwhile anINSERT DELAYEDstatement was in progress. (Bug#7823)INSERT ... ON DUPLICATE KEY UPDATEincorrectly updated aTIMESTAMPcolumn to the current timestamp, even if the update list includedfor that column to prevent the update. (Bug#7806)col_name=col_nameAdditional fix for
mysql_server_init()andmysql_server_end()C API functions so that stopping and restarting the embedded server would not cause a crash. (Bug#7344)Setting the initial
AUTO_INCREMENTvalue for anInnoDBtable usingCREATE TABLE ... AUTO_INCREMENT =did not work, andnALTER TABLE ... AUTO_INCREMENT =did not reset the current value. (Bug#7061)nCAST(didn't work for big integers above the signed range. Now this function andstring_argumentAS UNSIGNED)CAST(also produces warnings for wrong string arguments. (Bug#7036)string_argumentAS SIGNED)The
latin2_croatian_cicollation was not sorted correctly. After upgrading to MySQL 4.1.12, all tables that have indexes using this collation are treated as crashed; for each such table, you must useCHECK TABLEand possibly repair the table.Support for the
cp1250_croatian_cicollation was also added as part of the fix for this bug. (Bug#6505)For
MERGEtables, avoid writing absolute path names in the.MRGfile for the names of the constituentMyISAMtables so that if the data directory is moved,MERGEtables will not break. For mysqld, write just theMyISAMtable name if it is in the same database as theMERGEtable, and a path relative to the data directory otherwise. For the embedded servers, absolute path names may still be used. (Bug#5964)mysqld was not checking whether the PID file was successfully created. (Bug#5843)
InnoDB: PreventALTER TABLEfrom changing the storage engine if there are foreign key constraints on the table. (Bug#5574, Bug#5670)With
DISTINCT CONCAT(returned incorrect results when the arguments tocol,...)CONCAT()were columns with an integer data type declared with a display width narrower than the values in the column. (For example, if anINT(1)column contain1111.) (Bug#4082)configure did not properly recognize whether NPTL was available on Linux. (Bug#2173)
InnoDB: Add fault tolerance in the scan of.ibdfiles at a crash recovery; formerly a single failure ofreaddir_get_nextcaused the rest of the directory to be skipped.InnoDB: Crash recovery of.ibdfiles on Windows did not work correctly iflower_case_table_names = 0orlower_case_table_names = 2had been used; the directory scan used in crash recovery failed to force all paths to lower case, so that the tablespace name was consistent with theInnoDBinternal data dictionary.InnoDB: At shutdown, the latest lsn is now written only to the first pages of theibdatafiles of the system tablespace, and not to the.ibdfiles, saving up to several minutes in some cases.
End of Product LifecycleActive development and support for MySQL database server versions 3.23, 4.0, and 4.1 has ended. However, for MySQL 4.0 and 4.1, there is still extended support available. For details, see http://www.mysql.com/company/legal/lifecycle/#calendar. According to the MySQL Lifecycle Policy (see http://www.mysql.com/company/legal/lifecycle/#policy), only Security and Severity Level 1 issues will still be fixed for MySQL 4.0 and 4.1. Please consider upgrading to a recent version (MySQL 5.0 or 5.1).
Functionality added or changed:
Replication: MySQL Cluster: Added a new global system variable
slave_transaction_retries: If the replication slave SQL thread fails to execute a transaction because of anInnoDBdeadlock or exceededInnoDB'sinnodb_lock_wait_timeoutorNDBCLUSTER'sTransactionDeadlockDetectionTimeoutorTransactionInactiveTimeout, it automatically retriesslave_transaction_retriestimes before stopping with an error. The default is 0, and you must explicitly set the value greater than 0 to enable the “retry” behavior. (Bug#8325)MySQL Cluster: More informative error messages are provided when a query is issued against an
NDBtable that has been modified by another mysqld server. (Bug#6762)Replication: For slave replication servers started with
--replicate-*options, statements that should not be replicated according those options no longer are written to the slave's general query log. (Bug#8297)The use of
SESSIONorGLOBALis now disallowed for user variables. (Bug#9286)mysqld_safe will create the directory where the UNIX socket file is to be located if the directory does not exist. This applies only to the last component of the directory path name. (Bug#8513)
ONLY_FULL_GROUP_BYno longer is included in theANSIcomposite SQL mode. (Bug#8510)Added
sql_notessession variable to causeNote-level warnings not to be recorded. (Bug#6662)Modified the parser to allow
SELECTstatements following theUNIONkeyword to be subqueries in parentheses. (Bug#2435)InnoDB: Commit after every 10,000 copied rows when executingCREATE INDEX,DROP INDEXorOPTIMIZE TABLE, which are internally implemented asALTER TABLE. This makes it much faster to recover from an aborted operation.User variable coercibility has been changed from “coercible” to “implicit.” That is, user variables have the same coercibility as column values.
Added
--with-big-tablescompilation option to configure. (Previously it was necessary to pass-DBIG_TABLESto the compiler manually in order to enable large table support.) See Section 2.9.2, “Typical configure Options”, for details.The coercibility for the return value of functions such as
USER()orVERSION()now is “system constant” rather than “implicit.” This makes these functions more coercible than column values so that comparisons of the two do not result inIllegal mix of collationserrors.COERCIBILITY()was modified to accommodate this new coercibility value. See Section 11.10.3, “Information Functions”.Added configuration directives
!includeand!includedirfor including option files and searching directories for option files. See Section 4.2.3.3, “Using Option Files”, for usage.NULLnow is considered more coercible than string constants. This resolves someIllegal mix of collationsconflicts.
Bugs fixed:
Replication: If multiple semicolon-separated statements were received in a single packet, they were written to the binary log as a single event rather than as separate per-statement events. For a server serving as a replication master, this caused replication to fail when the event was sent to slave servers. (Bug#8436)
Replication: A replication master stamped a generated statement (such as a
SETstatement) with an error code intended only for another statement. This could happen, for example, when a statement generated a duplicate key error on the master but still had be to replicated to the slave. (Bug#8412)Replication: If the slave was running with
--replicate-*-tableoptions which excluded one temporary table and included another, and the two tables were used in a singleDROP TEMPORARY TABLE IF EXISTSstatement, as the ones the master automatically writes to its binary log upon client's disconnection when client has not explicitly dropped these, the slave could forget to delete the included replicated temporary table. Only the slave needs to be upgraded. (Bug#8055)Replication: Treat user variables as having
IMPLICITderivation (coercibility) to avoid “Illegal mix of collations” errors when replicating user variables. (Bug#6676)For
MyISAMtables,REPAIR TABLEno longer discard rows that have incorrect checksum. (Bug#9824)Fixed option-parsing code for the embedded server to understand
K,M, andGsuffixes for thenet_buffer_lengthandmax_allowed_packetoptions. (Bug#9472)Some user variables were not being handled with “implicit” coercibility. (Bug#9425)
Using
TIMESTAMPcolumns with no minute or second parts inGROUP BYclauses with thenewsystem variable set to 1 caused the server to crash. (Bug#9401)Allow extra HKSCS and cp950 characters (
big5extension characters) to be accepted inbig5columns. (Bug#9357)Subqueries using
ALLorANYthat contained aHAVINGclause did not work correctly. (Bug#9350)BLOB(andM)TEXT(columns, withM)Mless than 256, were being created asBLOBandTEXTcolumns rather thanTINYBLOBorTINYTEXTcolumns. (Bug#9303)InnoDB: If MySQL wrote to its binlog, but for some reasontrx->update_undoandtrx->insert_undowere NULL inInnoDB, thentrx->commit_lsnwas garbage, andInnoDBcould assert in the log flush oftrx_commit_complete_for_mysql(). (Bug#9277)The
utf8_spanish2_cianducs2_spanish2_cicollations no longer considerrequal torr. If you upgrade to this version from an earlier version, you should rebuild the indexes of any affected tables. (Bug#9269)Depending on index statistics,
GROUP BYcould return incorrect results if the first table processed for a join had several indexes that cover the grouped columns. (Bug#9213)col1,col2, ...OPTIMIZE TABLEwas written twice to the binary log when used onInnoDBtables. (Bug#9149)The
CHARSET(),COLLATION(), andCOERCIBILITY()functions sometimes returnedNULL.CHARSET()andCOLLATION()returnedNULLwhen given any of these arguments that evaluated toNULL: A system function such asDATABASE(); a column value; and a user variable. NowCHARSET()andCOLLATION()return the system character set and collation; the column character set and collation; andbinary.COERCIBILITY(NULL)now returns “ignorable” coercibility rather thanNULL. (Bug#9129)mysqldump misinterpreted “
_” and “%” characters in the names of tables to be dumped as wildcard characters. (Bug#9123)Bundled
zlibin the source distribution was upgraded to 1.2.2. (Bug#9118)Setting the
max_error_countsystem variable to 0 resulted in a setting of 1. (Bug#9072)The use of
XORtogether withNOT ISNULL()erroneously resulted in some outer joins being converted to inner joins by the optimizer. (Bug#9017)MIN(andcol_name)MAX(could fail to produce the correct result ifcol_name)col_namewas contained in multiple indexes and the optimizer did not choose the first index that contained the column. (Bug#8893)Using a compariosn where the left expression of
IN,ALL, orANYwas a subquery caused the server to crash (Bug#8888)When using the
cp1250_czech_cscollation, empty literal strings were not regarded as equal to empty character columns. (Bug#8840)Binary data stored in
BLOBorBINARYcolumns would be erroneously dumped if mysqldump was invoked with--hex-bloband--skip-extended-insertarguments. This happened if data contained characters larger then 0x7F . (Bug#8830)Using
NOW()in a subquery caused the server to crash. (Bug#8824)In prepared statements, subqueries containing parameters were erroneously treated as
consttables during preparation, resulting in a server crash. (Bug#8807)Killing a filesort could cause an assertion failure. (Bug#8799)
Expressions involving nested
CONCAT()calls and character set conversion of string constants could return an incorrect result. (Bug#8785)Do not try to space-pad
BLOBcolumns containingucs2characters. (Bug#8771)This regression was introduced by Bug#7350.
If
max_join_sizewas set, a query containing a subquery that exceeded the examined-rows limit could hang. (Bug#8726)Table creation for a
MyISAMtable failed ifDATA DIRECTORYorINDEX DIRECTORYoptions were given that specified the path name to the database directory where the table files would be created by default. (Bug#8707)A rare race condition could cause
FLUSH TABLES WITH READ LOCKto hang. (Bug#8682)InnoDB: If one usedLOCK TABLES, created anInnoDBtemp table, and did a multiple-table update where aMyISAMtable was the update table and the temp table was a read table, thenInnoDBasserted inrow0sel.cbecausen_mysql_tables_in_usewas 0. Also, we remove the assertion altogether and just print an error to the.errlog if this important consistency check fails. (Bug#8677)AES_DECRYPT(could fail to returncol_name,key)NULLfor invalid values incol_name, ifcol_namewas declared asNOT NULL. (Bug#8669)Use of
GROUP_CONCAT(in a subquery, wherex)xwas an alias to a column in the outer query, resulted in a server crash. (Bug#8656)Too many rows were returned from queries that combined
ROLLUPandLIMITifSQL_CALC_FOUND_ROWSwas given. (Bug#8617)Incorrect results were returned from queries that combined
SELECT DISTINCT,GROUP BY, andROLLUP. (Bug#8616)Queries that combined
SELECT DISTINCT,SUM(), andROLLUPcould cause the MySQL server to crash. (Bug#8615)A join on two tables failed when each contained a
BIGINT UNSIGNEDcolumn that were compared when their values exceeded 263 – 1. The match failed and the join returned no rows. (Bug#8562)LIKEpattern-matching for strings did not work correctly with thecp1251_bincollation. (Bug#8560)MATCH ... AGAINSTin natural language mode could cause a server crash if theFULLTEXTindex was not used in a join (that is,EXPLAINdid not showfulltextjoin mode) and the search query matched no rows in the table. (Bug#8522)perror was printing a spurious extra line of output ("Error code ###: Unknown error ###" printed directly before the correct line with the error message). (Bug#8517)
The
teecommand could sometimes cause the mysql client to crash. (Bug#8499)The
MEMORYstorage engine did not properly increment anAUTO_INCREMENTcolumn if there was a second composite index that included the column. (Bug#8489)REPAIR TABLEdid not invalidate query results in the query cache that were generated from the table. (Bug#8480)For a statement string that contained multiple slow queries, only the last one would be written to the slow query log. (Bug#8475)
When the server was started with
--skip-name-resolve, specifying host name values that included netmasks inGRANTstatements did not work. (Bug#8471)The Cyrillic letters
I(И) andSHORT I(Й) were treated as being the same character by theutf8_general_cicollation. (Bug#8385)With a database was dropped with
lower_case_table_names = 2, tables in the database also were dropped but not being flushed properly from the table cache. If the database was re-created, the tables also would appear to have been re-created. (Bug#8355)When performing boolean full-text searches on
utf8columns, a double-quote character in the search string caused the server to crash. (Bug#8351)The
MAX_CONNECTIONS_PER_HOURresource limit was not being reset hourly and thus imposed an absolute limit on number of connections per account until the server is restarted or the limits flushed. (Bug#8350)The
--set-character-setoption for myisamchk was changed to--set-collation. The value needed for specifying how to sort indexes is a collation name, not a character set name. (Bug#8349)Corruption of
MyISAMtable indexes could occur withTRUNCATE TABLEif the table had already been opened. For example, this was possible if the table had been opened implicitly by selecting from aMERGEtable that mapped to theMyISAMtable. The server now issues an error message forTRUNCATE TABLEunder these conditions. (Bug#8306)In string literals with an escape character (“
\”) followed by a multi-byte character that has a second byte of “\”, the literal was not interpreted correctly. The next character now is escaped, not just the next byte. (Bug#8303)On Windows, create shared memory objects with the proper access rights to make them usable when the client and server are running under different accounts. (Bug#8226)
For a query with both
GROUP BYandCOUNT(DISTINCT)clauses and aFROMclause with a subquery,NULLwas returned for anyVARCHARcolumn selected by the subquery. (Bug#8218)With
lower_case_table_namesset to 1, mysqldump on Windows could write the same table name in different lettercase for different SQL statements. (Bug#8216)Matching of table names by mysqlhotcopy now accommodates
DBD::mysqlversions 2.9003 and up, which implement identifier quoting. (Bug#8136)Creating a table using a name containing a character that is illegal in
character_set_clientresulted in the character being stripped from the name and no error. The character now is considered an error. (Bug#8041)mysqldump now avoids writing
SET NAMESto the dump output if the server is older than version 4.1 and would not understand that statement. (Bug#7997)Mixed-case database and table names in the grant tables were ignored for authentication if the
lower_case_table_namessystem variable was set.GRANTwill not create such privileges whenlower_case_table_namesis set, but it is possible to create them by direct manipulation of the grant tables, or that old grant records were present before setting the variable. (Bug#7989)Accented letters were improperly treated as distinct by the
utf_general_cicollation. (Bug#7878)Conversion of strings to doubles is now more accurate for floating point values that can be represented by integers, such as
123.45E+02. (Bug#7840)ENUMandSETcolumns in privilege tables incorrectly had a case-sensitive collation, resulting in failure of assignments of values that did not have the same lettercase as given in the column definitions. The collation was changed to be case insensitive. (Bug#7617)The output of the
STATUS(\s) command in mysql had the values for the server and client character sets reversed. (Bug#7571)A problem in index cost calculation caused a
USE INDEXorFORCE INDEXhint not to be used properly for aLEFT JOINacross indexedBLOBcolumns. (Bug#7520)Ordering by an unsigned expression (more complex than a column reference) was treating the value as signed, producing incorrectly sorted results.
HAVINGwas also treating unsigned columns as signed. (Bug#7425)Changed
mysql_server_end()C API function to restore more variables to their initial state so that a subsequent call tomysql_server_init()would not cause a client program crash. (Bug#7344)Made the
relay_log_space_limitsystem variable show up in the output ofSHOW VARIABLES. (Bug#7100)An expression that tested a case-insensitive character column against string constants that differed in lettercase could fail because the constants were treated as having a binary collation. (For example,
WHERE city='London' AND city='london'could fail.) (Bug#7098, Bug#8690)When setting integer system variables to a negative value with
SET VARIABLES, the value was treated as a positive value modulo 232. (Bug#6958)If a
MyISAMtable on Windows hadINDEX DIRECTORYorDATA DIRECTORYtable options, mysqldump dumped the directory path names with single-backslash path name separators. This would cause syntax errors when importing the dump file. mysqldump now changes “\” to “/” in the path names on Windows. (Bug#6660)Incorrectly ordered results were returned from a query using a
FULLTEXTindex to retrieve rows and there was another index that was usable forORDER BY. For such a query,EXPLAINshowed thefulltextjoin type, but showed the other (notFULLTEXT) index in theKeycolumn. (Bug#6635)Neither
SHOW ERRORSnorSHOW WARNINGSwere displaying Error-level messages. (Bug#6572)Retrieving from a view defined as a
SELECTthat mixedUNION ALLandUNION DISTINCTresulted in a different result than retrieving from the originalSELECT. (Bug#6565)A problem with static variables did not allow building the server on Fedora Core 3. (Bug#6554)
Unions between binary and nonbinary columns failed due to a a collation coercibility problem. (Bug#6519)
The
CHAR()function was not ignoringNULLarguments, contrary to the documentation. (Bug#6317)FOUND_ROWS()returned an incorrect value for precedingSELECTstatements that used no table or view. (Bug#6089)InnoDB: Honor the--tmpdirstartup option when creating temporary files. Previously,InnoDBtemporary files were always created in the temporary directory of the operating system. On Netware,InnoDBwill continue to ignore--tmpdir. (Bug#5822)The bundled
readlinelibrary caused a segmentation fault in mysql when the user entered Shift+Enter. (Bug#5672)The data type for
MAX(was returned asdatetime_col)VARCHARrather thanDATETIMEif the query included aGROUP BYclause. (Bug#5615)Worked around a bug in support for NSS support in
glibcwhen static linking is used and LDAP is one of the NSS sources. The workaround is to detect when the bug causes a segmentation fault and issue a diagnostic message with information about the problem. (Bug#4872, Bug#3037)If the mysql prompt was configured to display the default database name, and that database was dropped, mysql did not update the prompt. (Bug#4802)
Platform and architecture information in version information produced for
--versionoption on Windows was alwaysWin95/Win98 (i32). More accurately determine platform asWin32orWin64for 32-bit or 64-bit Windows, and architecture asia32for x86,ia64for Itanium, andaxpfor Alpha. (Bug#4445)Host name matching didn't work if a netmask was specified for table-specific privileges. (Bug#3309)
InnoDB: An error in mysqld causedInnoDBin MySQL 4.1.8 to 4.1.10InnoDBto refuse to use a table created with MySQL 3.23.49 or earlier if it was in the new compactInnoDBtable format of 5.0.3 or later.Workaround. Upgrade to 4.1.11 or newer, or dump the table and re-create it with MySQL 3.23.50 or newer before upgrading.
InnoDB: A table with a primary key that contained at least two column prefixes was prone to memory corruption. An example of an affectedCREATE TABLEstatement is shown here:CREATE TABLE t ( a CHAR(100), b TINYBLOB, PRIMARY KEY(a(5), b(10)) );InnoDB: IfInnoDBcannot allocate memory, keep retrying for 60 seconds before we intentionally crashmysqld; maybe the memory shortage is just temporary.my_print_defaults ignored the
--defaults-extra-fileand--defaults-fileoptions.Privileges could be escalated via database wildcards in
GRANTstatements. (CVE-2004-0957)InnoDB: Work around a problem in AIX 5.1 patched with ML7 security patch:InnoDBwould refuse to open itsibdatafiles, complaining about an operating system error 0.
Note
The security improvements related to creation of table files
and to user-defined functions were made after MySQL 4.1.10 was
released and are present in MySQL 4.1.10a. We would like to
thank Stefano Di Paola <stefano.dipaola@wisec.it>
for making us aware of these.
End of Product LifecycleActive development and support for MySQL database server versions 3.23, 4.0, and 4.1 has ended. However, for MySQL 4.0 and 4.1, there is still extended support available. For details, see http://www.mysql.com/company/legal/lifecycle/#calendar. According to the MySQL Lifecycle Policy (see http://www.mysql.com/company/legal/lifecycle/#policy), only Security and Severity Level 1 issues will still be fixed for MySQL 4.0 and 4.1. Please consider upgrading to a recent version (MySQL 5.0 or 5.1).
Functionality added or changed:
Thread stack size was increased from 192KB to 256KB on Linux/IA-64 (too small stack size was causing server crashes on some queries). (Bug#8391)
Setting the connection collation to a value different from the server collation followed by a
CREATE TABLEstatement that included a quoted default value resulted in a server crash. (Bug#8235)The server now issues a warning when
lower_case_table_names = 2and the data directory is on a case-sensitive file system, just as whenlower_case_table_names = 0on a case-insensitive file system. (Bug#7887)The server now issues a warning to the error log when it encounters older tables that contain character columns that might be interpreted by newer servers to have a different column length. See Section 2.11.1.1, “Upgrading from MySQL 4.0 to 4.1”, for a discussion of this problem and what to do about it. (Bug#6913)
Added
mysql_library_init()andmysql_library_end()as synonyms for themysql_server_init()andmysql_server_end()C API functions.mysql_library_init()andmysql_library_end()are#definesymbols, but the names more clearly indicate that they should be called when beginning and ending use of a MySQL C API library no matter whether the application useslibmysqlclientorlibmysqld. (Bug#6149)InnoDB: Relaxed locking inINSERT ... SELECT, single tableUPDATE ... (SELECT)and single tableDELETE ... (SELECT)clauses wheninnodb_locks_unsafe_for_binlogis used and isolation level of the transaction is notSERIALIZABLE.InnoDBuses consistent read in these cases for a selected table.From the Windows distribution, predefined accounts without passwords for remote users ("root@%", "@%") were removed (other distributions never had them).
InnoDB: When MySQL/InnoDB is compiled on Mac OS X 10.2 or earlier, detect the operating system version at run time and use thefcntl()file flush method on Mac OS X versions 10.3 and later. In Mac OS X,fsync()does not flush the write cache in the disk drive, but the specialfcntl()does; however, the flush request is ignored by some external devices. Failure to flush the buffers may cause severe database corruption at power outages.Security improvement: User-defined functions should have at least one symbol defined in addition to the
xxxsymbol that corresponds to the mainxxx()function. These auxiliary symbols correspond to thexxx_init(),xxx_deinit(),xxx_reset(),xxx_clear(), andxxx_add()functions. mysqld by default no longer loads UDFs unless they have at least one auxiliary symbol defined in addition to the main symbol. The--allow-suspicious-udfsoption controls whether UDFs that have only anxxxsymbol can be loaded. By default, the option is off. mysqld also checks UDF file names when it reads them from themysql.functable and rejects those that contain directory path name separator characters. (It already checked names as given inCREATE FUNCTIONstatements.) See Section 18.2.2.1, “UDF Calling Sequences for Simple Functions”, Section 18.2.2.2, “UDF Calling Sequences for Aggregate Functions”, and Section 18.2.2.6, “User-Defined Function Security Precautions”. Thanks to Stefano Di Paola<stefano.dipaola@wisec.it>for finding and informing us about this issue. (CVE-2005-0709, CVE-2005-0710)Added back faster subquery execution from 4.1.8. This adds also back a bug from 4.1.8 in comparing
NULLto the value of a subquery. See Section A.1.8.4, “Open Issues in MySQL”.Security improvement: The server creates
.frm,.MYD,.MYI,.MRG,.ISD, and.ISMtable files only if a file with the same name does not already exist. Thanks to Stefano Di Paola<stefano.dipaola@wisec.it>for finding and informing us about this issue. (CVE-2005-0711)InnoDB: A shared record lock (LOCK_REC_NOT_GAP) is now taken for a matching record in the foreign key check because inserts can be allowed into gaps.
Bugs fixed:
Replication: Multiple-table updates did not replicate properly to slave servers where
--replicate-*-tableoptions had been specified. (Bug#7011)LOAD INDEXstatement now loads the index into memory. (Bug#8452)DELETE FROMwhen thetbl_name... WHERE ... ORDER BYtbl_name.col_nameORDER BYcolumn was qualified with the table name caused the server to crash. (Bug#8392)Cardinality estimates for
HASHindexes ofTEMPORARYtables created usingMEMORYstorage engine were inaccurate. As a result, queries that were using this index (as shown byEXPLAIN) could returned incorrect results. (Bug#8371)If multiple prepared statements were executed without retrieving their results, executing one of them again would cause the client program to crash. (Bug#8330)
Certain joins used with boolean full-text search could cause the server to crash. (Bug#8234)
Add description of
debugcommand to mysqladmin help output. (Bug#8207)Removed a dependence of boolean full-text search on
--default-character-setoption. (Bug#8159)Modify
SETstatements produced by mysqldump to write quoted strings using single quotes rather than double quotes. This avoids problems if the dump file is reloaded while theANSI_QUOTESSQL mode is in effect. (Bug#8148)Strings that began with
CHAR(31)were considered equal to the empty string. (Bug#8134)Re-execution of prepared statements containing subqueries caused the server to crash. (Bug#8125)
Certain correlated subqueries with forward references (referring to an alias defined later in the outer query) could crash the server. (Bug#8025)
Corrected a problem with references to
DUALwhere statements such asSELECT 1 AS a FROM DUALwould succeed but statements such asSELECT 1 AS a FROM DUAL LIMIT 1would fail. (Bug#8023)Comparing a nested row expression (such as
ROW(1,(2,3))) with a subquery caused the server to crash. (Bug#8022)InnoDB: Fixed a bug introduced in 4.1.9, where, if you usedinnodb_file_per_tablewith the Windows version of MySQL, mysqld stopped with Windows error 87. (See the Bugs database or the MySQL 4.1.9 changelog for information about a workaround for the issue in 4.1.9). (Bug#8021)The number of columns in a row comparison against a subquery was calculated incorrectly. (Bug#8020)
mysqld had problems finding its language files if the
--basedirvalue was specified as a very long path name. (Bug#8015)mysql_stmt_close()C API function was not clearing an error indicator when a previous prepare call failed, causing subsequent invocations of error-retrieving calls to indicate spurious error values. (Bug#7990)Executing a multi-statement query more than once with the query cache active could yield incorrect result sets. (Bug#7966)
A slave running MySQL 3.23.51 or newer hung while trying to connect to a master running MySQL 3.23.50 or older. (The reason for this was a bug in the old masters —
SELECT @@caused the server to hang — which was fixed in MySQL 3.23.50.) (Bug#7965)unknown_varErroneous output resulted from
SELECT DISTINCTcombined with a subquery andGROUP BY. (Bug#7946)FOUND_ROWS()returned an incorrect value after aSELECT SQL_CALC_FOUND_ROWS DISTINCTstatement that selected constants and includedGROUP BYandLIMITclauses. (Bug#7945)SHOW INDEXreportedSub_partvalues in bytes rather than characters for columns with a multi-byte character set. (Bug#7943)Changed mysql client so that including
\pas part of a prompt command uses the name of the shared memory connection when the connection is using shared memory. (Bug#7922)If one used
CONVERT_TZ()function inSELECT, which in its turn was used inCREATE TABLEstatements, then system time zone tables were added to list of tables joined in SELECT and thus erroneous result was produced. (Bug#7899)Comparing the result of a subquery to a nonexistent column caused the server to crash. This issue affected MySQL on Windows platforms only. (Bug#7885)
ALTER TABLEimproperly accepted an index on aTIMESTAMPcolumn thatCREATE TABLEwould reject. (Bug#7884)MySQL allowed concurrent updates (including inserts and deletes) to a table if binary logging was enabled. Now, all updates are executed in a serialized fashion, because they are executed serialized when the binary log is replayed. (Bug#7879)
Ensured that mysqldump --single-transaction sets its transaction isolation level to
REPEATABLE READbefore proceeding (otherwise if the MySQL server was configured to run with a default isolation level lower thanREPEATABLE READit could give an inconsistent dump). (Bug#7850)InnoDB:ALTER TABLE ... ADD CONSTRAINT PRIMARY KEY ...complained about bad foreign key definition. (Bug#7831)mysqlbinlog forgot to add backquotes around the collation of user variables (causing later parsing problems as
BINARYis a reserved word). (Bug#7793)A Table is full error occurred when the table was still smaller than
max_heap_table_size. (Bug#7791)Multiple-table
UPDATEstatements could cause spurious Table '#sql_....' is full errors if the number of rows to update was sufficiently large. (Bug#7788)Conversion of floating-point values to character values was not performed correctly when the absolute value of the float was less than 1 (including negative values). (Bug#7774)
Use of
GROUP_CONCAT()withHAVINGcaused the server to crash. (Bug#7769)The
CONV()function returned an unsignedBIGINTnumber, which does not fit in 32 bits. (Bug#7751)The
IN()operator did not return correct results if all values in the list were constants and some of them used substring functions such asLEFT(),RIGHT(), orMID(). (Bug#7716)The
CONVERT_TZ()function, when its second or third argument was from aconsttable, caused the server to crash. (See Section 12.3.2, “EXPLAINSyntax”.) (Bug#7705)The
TIMEDIFF()function returned incorrect results if one of its arguments had a nonzero microsecond part. (Bug#7586)TIMESTAMPcolumns with their display width so specified were not treated as identical toDATETIMEcolumns when the server was run inMAXDBmode. (Bug#7418)perror.exe was always returning “Unknown error” on Windows. See Section 4.8.1, “perror — Explain Error Codes”. (Bug#7390)
SHOW INDEXon aMERGEtable could cause debug versions of the server to crash. (Bug#7377)Corrected the handling of trailing spaces in the
ucs2character set. (Bug#7350)Adding an
ORDER BYclause for an indexed column caused aSELECTto return an empty result. (Bug#7331)ALTER TABLEon aTEMPORARYtable with a mixed-lettercase name could cause the table to disappear whenlower_case_table_nameswas set to 2. (Bug#7261)For indexes,
SHOW CREATE TABLEnow displays the index type even if it is the default, for storage engines that support multiple index types. (Bug#7235)Updates were being written to the binary log when there were
binlog-do-dborbinlog-ignore-dboptions even when there was no current database, contrary to Section 5.3.4, “The Binary Log”. (Bug#6749)CREATE TABLE ... LIKEfailed on Windows when the source or destination table was located in a symlinked database directory. (Bug#6607)Column headers in query results retrieved from the query cache could be corrupted when a non-4.1 client was served a result originally generated for a 4.1 client. The query cache was not keeping track of which client/server protocol was being used. (Bug#6511)
Correct a problem with mysql_config, which was failing to produce proper
zliboption for linking under some circumstances. (Bug#6273)Nonnumeric values inserted into a
YEARcolumn were being stored as2000rather than as0000. (Bug#6067)mysql_stmt_prepare()was very slow when used in client programs on Windows. (Bug#5787)A
HAVINGclause that referred toRAND()or a user-defined function in theSELECTpart of a query through an alias could cause MySQL to crash or to return an incorrect value. (Bug#5185)Key cache statistics were reported incorrectly by the server after receipt of a
SIGHUPsignal. (Bug#4285)A problem with
UNIONstatements resulted in the wrong number of examined rows being reported in the slow query log.A symlink vulnerability in the mysqlaccess script was reported by Javier Fernandez-Sanguino Pena and Debian Security Audit Team. (CVE-2005-0004)
InnoDB: Use nativetmpfile()function on Netware. AllInnoDBtemporary files are created undersys:\tmp. Previously,InnoDBtemporary files were never deleted on Netware.The combination of
-notandtrunc*operators in a full-text search did not work correctly. Using more than one truncated negative search term caused the result to be empty.InnoDB: A rare race condition could cause an assertion inDROP TABLEor inALTER TABLE.
End of Product LifecycleActive development and support for MySQL database server versions 3.23, 4.0, and 4.1 has ended. However, for MySQL 4.0 and 4.1, there is still extended support available. For details, see http://www.mysql.com/company/legal/lifecycle/#calendar. According to the MySQL Lifecycle Policy (see http://www.mysql.com/company/legal/lifecycle/#policy), only Security and Severity Level 1 issues will still be fixed for MySQL 4.0 and 4.1. Please consider upgrading to a recent version (MySQL 5.0 or 5.1).
Functionality added or changed:
mysqld_safe no longer tests for the presence of the data directory when using a relatively located server binary. It just assumes the directory is there, and fails to start up if it is not. This allows the data directory location to be specified on the command line, and avoids running a server binary that was not intended. (Bug#7249)
See also Bug#7518.
The
MySQL-shared-compatLinux RPM now includes the 3.23 as well as the 4.0libysqlclient.soshared libraries. (Bug#6342)The Mac OS X 10.3 installation disk images now include a MySQL Preference Pane for the Mac OS X Control Panel that enables the user to start and stop the MySQL server via the GUI and activate and deactivate the automatic MySQL server startup on bootup.
The naming scheme of the Windows installation packages has changed slightly:
The platform suffix was changed from
-winto-win32The product descriptions
-noinstalland-essentialhave been moved in front of the version number
Examples:
mysql-essential-4.1.9-win32.msi,mysql-noinstall-4.1.9-win32.zipSee Section 2.3, “Installing MySQL on Windows”.Seconds_Behind_MasterisNULL(which means “unknown”) if the slave SQL thread is not running, or if the slave I/O thread is not running or not connected to master. It is zero if the SQL thread has caught up with the I/O thread. It no longer grows indefinitely if the master is idle.InnoDB: Do not acquire an internalInnoDBtable lock inLOCK TABLESifautocommit = 1. This helps in porting oldMyISAMapplications toInnoDB.InnoDBtable locks in that case caused deadlocks very easily.The binary log file and binary log index file now behave like
MyISAMwhen there is a "disk full" or "quota exceeded" error. See Section A.1.4.3, “How MySQL Handles a Full Disk”.The product descriptions
-noinstalland-essentialhave been moved in front of the version numberInnoDB: Print a more descriptive error and refuse to startInnoDBif the size ofibdatafiles is smaller than what is stored in the tablespace header;innodb_force_recoveryoverrides this.The platform suffix was changed from
-winto-win32The MySQL server aborts immediately instead of simply issuing a warning if it is started with the
--log-binoption but cannot initialize the binary log at startup (that is, an error occurs when writing to the binary log file or binary log index file).
Bugs fixed:
Replication: A replication slave could crash after replicating many
ANALYZE TABLE,OPTIMIZE TABLE, orREPAIR TABLEstatements from the master. (Bug#6461, Bug#7658)When encountering a disk full or quota exceeded write error,
MyISAMsometimes failed to sleep and retry the write, resulting in a corrupted table. (Bug#7714)Running mysql_fix_privilege_tables could result in grant table columns with lengths that were too short if the server character set had been set to a multi-byte character set first. (Bug#7539)
Added a
--default-character-setoption to mysqladmin to avoid problems when the default character set is notlatin1. (Bug#7524)InnoDB: Wheninnodb_file_per_tablewas enabled inmy.cnf, records could disappear from the secondary indexes of a table after mysqld was killed.Note
This fix introduced a new Bug#8021, affecting Windows and users of
innodb_file_per_tableonly. If you are usinginnodb_file_per_tableon Windows, you can work around this new issue by adding the lineinnodb_flush_method= unbufferedto themy.cnformy.inifile.(Bug#7496)
Microseconds were dropped from the string result of the
STR_TO_DATEfunction, when there was some other specifier in the format string following%f. (Bug#7458)mysqladmin password now checks whether the server has
--old-passwordsturned on or predates 4.1 and uses the old-format password if so. (Bug#7451)Linking both the MySQL client library and IMAP library in the same build failed. (Bug#7428)
Made the MySQL server accept executing
SHOW CREATE DATABASEeven if the connection has an open transaction or locked tables. Refusing it made mysqldump --single-transaction sometimes fail to print a completeCREATE DATABASEstatement for some dumped databases. (Bug#7358)--expire-logs-dayswas not honored if using only transactions. (Bug#7236)Include compression library flags in the output from mysql_config --lib_r. (Bug#7021)
Corrected a problem with mysql_config not producing all relevant flags from
CFLAGS. (Bug#6964)Incorrect results were obtained for complex datetime expressions containing casts of datetime values to
TIMEorDATEvalues. (Bug#6914)InnoDB: 32-bit mysqld binaries built on HP-UX 11 did not work withInnoDBfiles greater than 2 GB in size. (Bug#6189)Corrected a problem with mysqld_safe not properly capturing output from ps. (Bug#5878)
PROCEDURE ANALYSE()did not quote someENUMvalues properly. (Bug#2813)InnoDB: Use thefcntl(F_FULLFSYNC)flush method on Mac OS X versions 10.3 and up instead offsync()that could cause corruption at power outages.InnoDB: The storgae of an SQLNULLvalue in some rare cases took more space than should have been required.InnoDB: Dropping a table where anINSERTwas waiting for a lock to check aFOREIGN KEYconstraint caused an assertion.InnoDB: WhenDISCARD TABLESPACEfailed because the table was referenced by a foreign key, the error code returned did not indicate that this was the case.Using
INSERT DELAYEDwith prepared statements could lead to table corruption.InnoDB:InnoDBfailed to drop a table in the background drop queue if the table was referenced by aFOREIGN KEYconstraint.
Note
Due to a libtool-related bug in the source
distribution, the creation of shared
libmysqlclient libraries was not possible
(the resulting files were missing the .so
file name extension). The file ltmain.sh
was updated to fix this problem and the resulting source
distribution was released as
mysql-4.1.8a.tar.gz. This modification
did not affect the binary packages. (Bug#7401)
End of Product LifecycleActive development and support for MySQL database server versions 3.23, 4.0, and 4.1 has ended. However, for MySQL 4.0 and 4.1, there is still extended support available. For details, see http://www.mysql.com/company/legal/lifecycle/#calendar. According to the MySQL Lifecycle Policy (see http://www.mysql.com/company/legal/lifecycle/#policy), only Security and Severity Level 1 issues will still be fixed for MySQL 4.0 and 4.1. Please consider upgrading to a recent version (MySQL 5.0 or 5.1).
Functionality added or changed:
MySQL Cluster: Added support for a
[mysql_cluster]section to themy.cnffile for configuration settings specific to MySQL Cluster. Thendb-connectstringvariable was moved here.Replication: mysqldump
--single-transaction --master-datais now able to take an online (nonblocking) dump ofInnoDBand report the corresponding binary log coordinates, which makes a backup suitable for point-in-time recovery, roll-forward or replication slave creation. See Section 4.5.4, “mysqldump — A Database Backup Program”.A connection doing a rollback now displays "Rolling back" in the
Statecolumn ofSHOW PROCESSLIST.Added
--lock-all-tablesto mysqldump to lock all tables by acquiring a global read lock.In the normal log MySQL now prints the log position for
Binlog Dumprequests.mysqlbinlognow prints an informative commented line (thread id, timestamp, server id, and so forth) before eachLOAD DATA INFILE, like it does for other queries; unless--short-formis used.Added
--disable-log-binoption to mysqlbinlog. Using this option you can disable binary logging for the statements produced by mysqlbinlog. That is, mysqlbinlog --disable-log-bin <file_name> | mysql won't write any statements to the MySQL server binary log.Automatic character set conversion formerly was done for operations that mix a column and a string such as assigning a string to a column, when this was possible without loss of information. Automatic conversion for operations that mix columns and strings has been expanded to cover many functions (such as
CONCAT()) and assignment operators. This reduces the frequency ofIllegal mix of collationserrors.For
ALTER DATABASE, the database name now can be omitted to apply the change to the default database.Added
WITH CONSISTENT SNAPSHOTclause toSTART TRANSACTIONto begin a transaction with a consistent read.The statements
CREATE TABLE,TRUNCATE TABLE,DROP DATABASE, andCREATE DATABASEcause an implicit commit.The
--master-dataoption for mysqldump now takes an optional argument of 1 or 2 to produce a noncommented or commentedCHANGE MASTER TOstatement. The default is 1 for backward compatibility.Added
--hex-bloboption to mysqldump for dumping binary string columns using hexadecimal notation.Added
--order-by-primaryto mysqldump, to sort each table's data in a dump file. This may be useful when dumping aMyISAMtable which will be loaded into anInnoDBtable. Dumping aMyISAMtable with this option is considerably slower than without.InnoDB: Commit after every 10,000 copied rows when executingALTER TABLE. This makes it much faster to recover from an abortedALTER TABLEorOPTIMIZE TABLE.FULLTEXTindex block size is changed to be 1024 instead of 2048.InnoDB: Do not periodically writeSHOW INNODB STATUSinformation to a temporary file unless the configuration optioninnodb_status_file = 1is set.Added
mysql_hex_string()C API function that hex-encodes a string.
Bugs fixed:
Replication: Changed semantics of
CREATE/ALTER/DROP DATABASEstatements so that replication ofCREATE DATABASEis possible when using--binlog-do-dband--binlog-ignore-db. (Bug#6391)Replication:
LOAD DATA INFILEnow works with option replicate-rewrite-db. (Bug#6353)Replication:
InnoDB: If one usedINSERT IGNOREto insert several rows at a time, and the first inserts were ignored because of a duplicate key collision, thenInnoDBin a replication slave assignedAUTO_INCREMENTvalues 1 bigger than in the master. This broke the MySQL replication. (Bug#6287)Replication:
OPTIMIZE TABLE,REPAIR TABLE, andANALYZE TABLEare now replicated without any erro