Documentation Home
MySQL 5.0 Release Notes
Related Documentation Download these Release Notes
PDF (US Ltr) - 2.1Mb
PDF (A4) - 2.1Mb
EPUB - 0.6Mb

MySQL 5.0 Release Notes  /  Changes in MySQL Enterprise 5.0.38 [MRU] (2007-03-20)

Changes in MySQL Enterprise 5.0.38 [MRU] (2007-03-20)

This is a Monthly Rapid Update release of the MySQL Enterprise Server 5.0.

This section documents all changes and bug fixes that have been applied since the last MySQL Enterprise Server release (5.0.36).

Functionality Added or Changed

  • The server now includes a timestamp in error messages that are logged as a result of unhandled signals (such as mysqld got signal 11 messages). (Bug #24878)

  • Added the --secure-file-priv option for mysqld, which limits the effect of the LOAD_FILE() function and the LOAD DATA and SELECT ... INTO OUTFILE statements to work only with files in a given directory. (Bug #18628)

  • Added the read-only hostname system variable, which the server sets at startup to the server host name.

  • To satisfy different user requirements, we provide several servers. mysqld is an optimized server that is a smaller, faster binary. Each package now also includes mysqld-debug, which is compiled with debugging support but is otherwise configured identically to the nondebug server.

Bugs Fixed

  • Incompatible Change: INSERT DELAYED statements are not supported for MERGE tables, but the MERGE storage engine was not rejecting such statements, resulting in table corruption. Applications previously using INSERT DELAYED into MERGE table will break when upgrading to versions with this fix. To avoid the problem, remove DELAYED from such statements. (Bug #26464)

  • MySQL Cluster: An inadvertent use of unaligned data caused ndb_restore to fail on some 64-bit platforms, including Sparc and Itanium-2. (Bug #26739)

  • MySQL Cluster: An infinite loop in an internal logging function could cause trace logs to fill up with Unknown Signal type error messages and thus grow to unreasonable sizes. (Bug #26720)

  • MySQL Cluster: An invalid pointer was returned following a FSCLOSECONF signal when accessing the REDO logs during a node restart or system restart. (Bug #26515)

  • MySQL Cluster: The failure of a data node when restarting it with --initial could lead to failures of subsequent data node restarts. (Bug #26481)

  • MySQL Cluster: Takeover for local checkpointing due to multiple failures of master nodes was sometimes incorrectly handled. (Bug #26457)

  • MySQL Cluster: The LockPagesInMainMemory parameter was not read until after distributed communication had already started between cluster nodes. When the value of this parameter was 1, this could sometimes result in data node failure due to missed heartbeats. (Bug #26454)

  • MySQL Cluster: Under some circumstances, following the restart of a management node, all data nodes would connect to it normally, but some of them subsequently failed to log any events to the management node. (Bug #26293)

  • MySQL Cluster: The message Error 0 in readAutoIncrementValue(): no Error was written to the error log whenever SHOW TABLE STATUS was performed on a Cluster table that did not have an AUTO_INCREMENT column. (Bug #21033)

  • Replication: A multiple-row delayed insert with an auto-increment column could cause duplicate entries to be created on the slave in a replication environment. (Bug #26116, Bug #25507)

  • Replication: Duplicating the usage of a user variable in a stored procedure or trigger would not be replicated correctly to the slave. (Bug #25167)

  • Replication: DROP TRIGGER statements would not be filtered on the slave when using the replication-wild-do-table option. (Bug #24478)

  • Replication: For INSERT ... ON DUPLICATE KEY UPDATE statements where some AUTO_INCREMENT values were generated automatically for inserts and some rows were updated, one auto-generated value was lost per updated row, leading to faster exhaustion of the range of the AUTO_INCREMENT column.

    Because the original problem can affect replication (different values on master and slave), it is recommended that the master and its slaves be upgraded to the current version. (Bug #24432)

  • Replication: Loading data using LOAD DATA INFILE may not replicate correctly (due to character set incompatibilities) if the character_set_database variable is set before the data is loaded. (Bug #15126)

  • Replication: User defined variables used within stored procedures and triggers are not replicated correctly when operating in statement-based replication mode. (Bug #14914, Bug #20141)

  • SELECT ... INTO OUTFILE with a long FIELDS ENCLOSED BY value could crash the server. (Bug #27231)

  • An INSERT ... ON DUPLICATE KEY UPDATE statement might modify values in a table but not flush affected data from the query cache, causing subsequent selects to return stale results. This made the combination of query cache plus ON DUPLICATE KEY UPDATE very unreliable. (Bug #27210)

    References: See also Bug #27006, Bug #27033. This bug was introduced by Bug #19978.

  • For MERGE tables defined on underlying tables that contained a short VARCHAR column (shorter than four characters), using ALTER TABLE on at least one but not all of the underlying tables caused the table definitions to be considered different from that of the MERGE table, even if the ALTER TABLE did not change the definition. (Bug #26881)

  • Use of a subquery containing GROUP BY and WITH ROLLUP caused a server crash. (Bug #26830)

  • Added support for --debugger=dbx for and added support for --debugger=devenv, --debugger=DevEnv, and --debugger=/path/to/devenv. (Bug #26792)

  • SSL connections failed on Windows. (Bug #26678)

  • Use of a subquery containing a UNION with an invalid ORDER BY clause caused a server crash. (Bug #26661)

  • In some error messages, inconsistent format specifiers were used for the translations in different languages. comp_err (the error message compiler) now checks for mismatches. (Bug #26571)

  • Views that used a scalar correlated subquery returned incorrect results. (Bug #26560)

  • UNHEX() IS NULL comparisons failed when UNHEX() returned NULL. (Bug #26537)

  • On 64-bit Windows, large timestamp values could be handled incorrectly. (Bug #26536)

  • For some values of the position argument, the INSERT() function could insert a NUL byte into the result. (Bug #26281)

  • INSERT DELAYED statements inserted incorrect values into BIT columns. (Bug #26238)

  • BENCHMARK() did not work correctly for expressions that produced a DECIMAL result. (Bug #26093)

  • LOAD DATA INFILE sent 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 NULL and Y() IS NULL comparisons failed when X() and Y() returned NULL. (Bug #26038)

  • Indexes on TEXT columns were ignored when ref accesses were evaluated. (Bug #25971)

  • 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)

  • VIEW restrictions were applied to SELECT statements after a CREATE VIEW statement failed, as though the CREATE had succeeded. (Bug #25897)

  • Several deficiencies in resolution of column names for INSERT ... SELECT statements were corrected. (Bug #25831)

  • Inserting utf8 data into a TEXT column that used a single-byte character set could result in spurious warnings about truncated data. (Bug #25815)

  • In certain cases it could happen that deleting a row corrupted an RTREE index. This affected indexes on spatial columns. (Bug #25673)

  • Expressions involving SUM(), when used in an ORDER BY clause, could lead to out-of-order results. (Bug #25376)

  • Use of a GROUP BY clause that referred to a stored function result together with WITH ROLLUP caused incorrect results. (Bug #25373)

  • A stored procedure that made use of cursors failed when the procedure was invoked from a stored function. (Bug #25345)

  • On Windows, the server exhibited a file-handle leak after reaching the limit on the number of open file descriptors. (Bug #25222)

  • The REPEAT() function did not permit a column name as the count parameter. (Bug #25197)

  • A reference to a nonexistent column in the ORDER BY clause of an UPDATE ... ORDER BY statement could cause a server crash. (Bug #25126)

  • A view on a join is insertable for INSERT statements that store values into only one table of the join. However, inserts were being rejected if the inserted-into table was used in a self-join because MySQL incorrectly was considering the insert to modify multiple tables of the view. (Bug #25122)

  • MySQL would not compile when configured using --without-query-cache. (Bug #25075)

  • IF(expr, unsigned_expr, unsigned_expr) was evaluated to a signed result, not unsigned. This has been corrected. The fix also affects constructs of the form IS [NOT] {TRUE|FALSE}, which were transformed internally into IF() expressions that evaluated to a signed result.

    For existing views that were defined using IS [NOT] {TRUE|FALSE} constructs, there is a related implication. The definitions of such views were stored using the IF() expression, not the original construct. This is manifest in that SHOW CREATE VIEW shows the transformed IF() expression, not the original one. Existing views will evaluate correctly after the fix, but if you want SHOW CREATE VIEW to display the original construct, you must drop the view and re-create it using its original definition. New views will retain the construct in their definition. (Bug #24532)

  • A user-defined variable could be assigned an incorrect value if a temporary table was employed in obtaining the result of the query used to determine its value. (Bug #24010)

  • Queries that used a temporary table for the outer query when evaluating a correlated subquery could return incorrect results. (Bug #23800)

  • When using certain server SQL modes, the mysql.proc table was not created by mysql_install_db. (Bug #23669)

  • DOUBLE values such as 20070202191048.000000 were being treated as illegal arguments by WEEK(). (Bug #23616)

  • The server could crash if two or more threads initiated query cache resize operation at moments very close in time. (Bug #23527)

  • NOW() returned the wrong value in statements executed at server startup with the --init-file option. (Bug #23240)

  • When nesting stored procedures within a trigger on a table, a false dependency error was thrown when one of the nested procedures contained a DROP TABLE statement. (Bug #22580)

  • Instance Manager did not remove the angel PID file on a clean shutdown. (Bug #22511)

  • EXPLAIN EXTENDED did not show WHERE conditions that were optimized away. (Bug #22331)

  • IN ((subquery)), IN (((subquery))), and so forth, are equivalent to IN (subquery), which is always interpreted as a table subquery (so that it is permitted to return more than one row). MySQL was treating the over-parenthesized subquery as a single-row subquery and rejecting it if it returned more than one row. This bug primarily affected automatically generated code (such as queries generated by Hibernate), because humans rarely write the over-parenthesized forms. (Bug #21904)

  • An INSERT trigger invoking a stored routine that inserted into a table other than the one on which the trigger was defined failed with a Table '...' doesn't exist referring to the second table when attempting to delete records from the first table. (Bug #21825)

  • When a stored routine attempted to execute a statement accessing a nonexistent table, the error was not caught by the routine's exception handler. (Bug #20713, Bug #8407)

  • The conditions checked by the optimizer to permit use of indexes in IN predicate calculations were unnecessarily tight and were relaxed. (Bug #20420)

  • When a TIME_FORMAT() expression was used as a column in a GROUP BY clause, the expression result was truncated. (Bug #20293)

  • The creation of MySQL system tables was not checked for by (Bug #20166)

  • For index reads, the BLACKHOLE engine did not return end-of-file (which it must because BLACKHOLE tables contain no rows), causing some queries to crash. (Bug #19717)

  • For expr IN(value_list), the result could be incorrect if BIGINT UNSIGNED values were used for expr or in the value list. (Bug #19342)

  • When attempting to call a stored procedure creating a table from a trigger on a table tbl in a database db, the trigger failed with ERROR 1146 (42S02): Table 'db.tbl' doesn't exist. However, the actual reason that such a trigger fails is due to the fact that CREATE TABLE causes an implicit COMMIT, and so a trigger cannot invoke a stored routine containing this statement. A trigger which does so now fails with ERROR 1422 (HY000): Explicit or implicit commit is not permitted in stored function or trigger, which makes clear the reason for the trigger's failure. (Bug #18914)

  • The update columns for INSERT ... SELECT ... ON DUPLICATE KEY UPDATE could be assigned incorrect values if a temporary table was used to evaluate the SELECT. (Bug #16630)

  • For SUBSTRING() evaluation using a temporary table, when SUBSTRING() was used on a LONGTEXT column, the max_length metadata value of the result was incorrectly calculated and set to 0. Consequently, an empty string was returned instead of the correct result. (Bug #15757)

  • Local variables in stored routines or triggers, when declared as the BIT type, were interpreted as strings. (Bug #12976)

  • CONNECTION is no longer treated as a reserved word. (Bug #12204)

Download these Release Notes
PDF (US Ltr) - 2.1Mb
PDF (A4) - 2.1Mb
EPUB - 0.6Mb