MySQL 5.0.19がリリースされました。


最も普及しているオープンソースデータベース管理システムであるMySQL 5.0.19がリリースされました。コミュニティエディションは、http://dev.mysql.com/downloads/とミラーサイトのダウンロード・ページから、ソースコード及び多くのプラットフォームのためのバイナリで現在利用可能です。






Functionality added or changed:

* Incompatible change: The InnoDB storage engine no longer ignores
  trailing spaces when comparing BINARY or VARBINARY column values.
  This means that (for example) the binary values 'a' and 'a ' are now
  regarded as unequal any time they are compared, as they are in
  MyISAM tables. (Bug #14189 (http://bugs.mysql.com/14189))
  See Section 11.4.2, "The BINARY and VARBINARY Types" for more
  information about the BINARY and VARBINARY types.
* The result type of the GROUP_CONCAT() function is now VARCHAR only
  if the the value of the group_concat_max_len system variable is less
  than or equal to 512. Otherwise, this funciton returns a BLOB. (Bug
  #14169 (http://bugs.mysql.com/14169))
* Added the mysql_upgrade program that checks all tables for
  incompatibilities with the current version of MySQL Server and
  repairs them if necessary. This program should be run for each MySQL
  upgrade (rather than mysql_fix_privilege_tables). See Section 5.6.2,
  "mysql_upgrade --- Check Tables for MySQL Upgrade."
* Added the FOR UPGRADE option for the CHECK TABLE statement. This
  option checks whether tables are incompatible with the current
  version of MySQL Server. Also added the --check-upgrade to
  mysqlcheck that invokes CHECK TABLE with the FOR UPGRADE option.
* mysql no longer terminates data value display when it encounters a
  NUL byte. Instead, it displays NUL bytes as spaces. (Bug #16859
* Added the --wait-timeout option to mysqlmanager to allow
  configuration of the timeout for dropping an inactive connection,
  and increased the default timeout from 30 seconds to 28,800 seconds
  (8 hours). (Bug #12674 (http://bugs.mysql.com/12674))
* A number of performance issues were resolved that had previously
  been encountered when using statements that repeatedly invoked
  stored functions. For example, calling BENCHMARK() using a stored
  function executed much more slowly than when invoking it with inline
  code that accomplished the same task. In most cases the two should
  now execute with approximately the same speed. (Bug #15014
  (http://bugs.mysql.com/15014), Bug #14946
* libmysqlclient now uses versioned symbols with GNU ld. (Bug #3074
* NDB Cluster: More descriptive warnings are now issued when
  inappropriate logging parameters are set in config.ini. (Formerly,
  the warning issued was simply Could not add logfile destination.)
  (Bug #11331 (http://bugs.mysql.com/11331))
* Added the --port-open-timeout option to mysqld to control how many
  seconds the server should wait for the TCP/IP port to become free if
  it cannot be opened. (Bug #15591 (http://bugs.mysql.com/15591))
* Repeated invocation of my_init() and my_end() caused corruption of
  character set data and connection failure. (Bug #6536
* Two new Hungarian collations are included: utf8_hungarian_ci and
  ucs2_hungarian_ci. These support the correct sort order for
  Hungarian vowels. However, they do not support the correct order for
  sorting Hungarian consonant contractions; this issue will be fixed
  in a future release.
* Wording of error 1329 changed to No data - zero rows fetched,
  selected, or processed. (Bug #15206 (http://bugs.mysql.com/15206))
* The INFORMATION_SCHEMA now skips data contained in
  unlistable/unreadable directories rather than returning an error.
  (Bug #15851 (http://bugs.mysql.com/15851))
* InnoDB now caches a list of unflushed files instead of scanning for
  unflushed files during a table flush operation. This improves
  performance when --innodb-file-per-table is set on a system with a
  large number of InnoDB tables. (Bug #15653
* The message for error 1109 changed from Unknown table ... in order
  clause to Unknown table ... in field list. (Bug #15091
* The mysqltest utility now converts all CR/LF combinations to LF to
  allow test cases intended for Windows to work properly on UNIX-like
  systems. (Bug #13809 (http://bugs.mysql.com/13809))
* The mysql_ping function will now retry if the reconnect flag is set
  and error CR_SERVER_LOST is encountered during the first attempt to
  ping the server. (Bug #14057 (http://bugs.mysql.com/14057))
* mysqldump now surrounds the DEFINER, SQL SECURITY DEFINER and WITH
  CHECK OPTION clauses of a CREATE VIEW statement with "not in
  version" comments to prevent errors in earlier versions of MySQL.
  (Bug #14871 (http://bugs.mysql.com/14871))

Bugs fixed:

* Setting the myisam_repair_threads system variable to a value larger
  than 1 could cause corruption of large MyISAM tables. (Bug #11527
* When using the GROUP_CONCAT() function where the
  group_concat_max_len system variable was greater than 512, the type
  of the result was BLOB only if the query included an ORDER BY
  clause; otherwise the result was a VARCHAR. (Bug #14169
* The length of a VARCHAR() column that used the utf8 character set
  would increase each time the table was re-created in a stored
  procedure or prepared statement, eventually causing the CREATE TABLE
  statement to fail. (Bug #13134 (http://bugs.mysql.com/13134))
* type_decimal failed with the prepared statement protocol. (Bug
  #17826 (http://bugs.mysql.com/17826))
* The MySQL server could crash with out of memory errors when
  performing aggregate functions on a DECIMAL column. (Bug #17602
* A stored procedure failed to return data the first time it was
  called per connection. (Bug #17476 (http://bugs.mysql.com/17476))
* Using DROP FUNCTION IF EXISTS func_name to drop a user-defined
  function caused a server crash if the server was running with the
  --skip-grant-tables option. (Bug #17595
* Using ALTER TABLE to increase the length of a BINARY(M) column
  caused column values to be padded with spaces rather than 0x00
  bytes. (Bug #16857 (http://bugs.mysql.com/16857))
* A large BIGINT value specified in a WHERE clause could be treated
  differently depending on whether it is specified as a quoted string.
  (For example, WHERE bigint_col = 17666000000000000000 versus WHERE
  bigint_col = '17666000000000000000'). (Bug #9088
* A natural join between INFORMATION_SCHEMA tables failed. (Bug #17523
* A memory leak caused warnings on slaves for certain statements that
  executed without warning on the master. (Bug #16175
* The embedded server did not allow binding of columns to the
  MYSQL_TYPE_VAR_STRING data type in prepared statements. (Bug #12070
* The embedded server failed various tests in the automated test
  suite. (Bug #9630 (http://bugs.mysql.com/9630), Bug #9631
  (http://bugs.mysql.com/9631), Bug #9633
  (http://bugs.mysql.com/9633), Bug #10801
  (http://bugs.mysql.com/10801), Bug #10911
  (http://bugs.mysql.com/10911), Bug #10924
  (http://bugs.mysql.com/10924), Bug #10925
  (http://bugs.mysql.com/10925), Bug #10926
  (http://bugs.mysql.com/10926), Bug #10930
  (http://bugs.mysql.com/10930), Bug #15433
* Instance Manager erroneously accepted a list of instance identifiers
  for the START INSTANCE and STOP INSTANCE commands (should accept
  only a single identifier). (Bug #12813
* For a transaction that used MyISAM and InnoDB tables, interruption
  of the transaction due to a dropped connection on a master server
  caused slaves to lose synchrony. (Bug #16559
* SELECT with GROUP BY on a view can cause a server crash. (Bug #16382
* If the query optimizer transformed a GROUP BY clause in a subquery,
  it did not also transform the HAVING clause if there was one,
  producing incorrect results. (Bug #16603
* SUBSTRING_INDEX() could yield inconsistent results when applied with
  the same arguments to consecutive rows in a query. (Bug #14676
* The parser allowed CREATE AGGREGATE FUNCTION for creating stored
  functions, even though AGGREGATE does not apply. (It is used only
  for CREATE FUNCTION only when creating user-defined functions.) (Bug
  #16896 (http://bugs.mysql.com/16896))
* Data truncations on non-UNIQUE indexes could crash InnoDB when using
  multi-byte character sets. (Bug #17530
* Triggers created without BEGIN and END clauses could not be properly
  restored from a mysqldump file. (Bug #16878
* The RENAME TABLE statement did not move triggers to the new table.
  (Bug #13525 (http://bugs.mysql.com/13525))
* Clients compiled from source with the --without-readline did not
  save command history from session to session. (Bug #16557
* Stored routines that contained only a single statement were not
  written properly to the dumpfile when using mysqldump. (Bug #14857
* For certain MERGE tables, the optimizer wrongly assumed that using
  index_merge/intersection was too expensive. (Bug #17314
* Executing a SHOW CREATE VIEW query of an invalid view caused the
  mysql_next_result function of libMySQL.dll to hang. (Bug #15943
* BIT fields were not properly handled when using row-based
  replication. (Bug #13418 (http://bugs.mysql.com/13418))
* Issuing GRANT EXECUTE on a procedure would display any warnings
  related to the creation of the procedure. (Bug #7787
* NDB Cluster: ndb_delete_all would run out of memory on tables
  containing BLOB columns. (Bug #16693 (http://bugs.mysql.com/16693))
* NDB Cluster: UNIQUE keys in Cluster tables were limited to 225 bytes
  in length. (Bug #15918 (http://bugs.mysql.com/15918))
* In a highly concurrent environment, a server crash or deadlock could
  result from execution of a statement that used stored functions or
  activated triggers coincident with alteration of the tables used by
  these functions or triggers. (Bug #16593
* Previously, a stored function invocation was written to the binary
  log as DO func_name() if the invocation changes data and occurs
  within a non-logged statement, or if the function invokes a stored
  procedure that produces an error. These invocations now are logged
  as SELECT func_name() instead for better control over error code
  checking (slave servers could stop due to detecting a different
  error than occurred on the master). (Bug #14769
* CHECKSUM TABLE returned different values on MyISAM table depending
  on whether the QUICK or EXTENDED options were used. (Bug #8841
* MySQL server dropped client connection for certain SELECT statements
  against views defined that used MERGE algorithm. (Bug #16260
* A call to the IF() function using decimal arguments could return
  incorrect results. (Bug #16272 (http://bugs.mysql.com/16272))
* A statement containing GROUP BY and HAVING clauses could return
  incorrect results when the HAVING clause contained logic that
  returned FALSE for every row. (Bug #14927
* Using GROUP BY on column used in WHERE clause could cause empty set
  to be returned. (Bug #16203 (http://bugs.mysql.com/16203))
* For a MySQL 5.0 server, using MySQL 4.1 tables in queries with a
  GROUP BY clause could result in buffer overrun or a server crash.
  (Bug #16752 (http://bugs.mysql.com/16752))
* SET sql_mode = N, where N > 31, did not work properly. (Bug #13897
* NDB Cluster: Cluster log file paths were truncated to 128
  characters. They may now be as long as MAX_PATH (the maximum path
  length permitted by the operating system). (Bug #17411
* The mysql_stmt_store_result() C API function could not be used for a
  prepared statement if a cursor had been opened for the statement.
  (Bug #14013 (http://bugs.mysql.com/14013))
* The mysql_stmt_sqlstate() C API function incorrectly returned an
  empty string rather than '00000' when no error occurred. (Bug #16143
* Using the TRUNCATE() function with a negative number for the second
  argument on a BIGINT column returned incorrect results. (Bug #8461
* Instance Manager searched wrong location for password file on some
  platforms. (Bug #16499 (http://bugs.mysql.com/16499))
* NDB Cluster: Following multiple forced shutdowns and restarts of
  data nodes, DROP DATABASE could fail. (Bug #17325
* NDB Cluster: An UPDATE with an inner join failed to match any
  records if both tables in the join did not have a primary key. (Bug
  #17257 (http://bugs.mysql.com/17257))
* NDB Cluster: A DELETE with a join in the WHERE clause failed to
  retrieve any records if both tables in the join did not have a
  primary key. (Bug #17249 (http://bugs.mysql.com/17249))
* The error message returned by perror --ndb was prefixed with OS
  error code: instead of NDB error code:. (Bug #17235
* NDB Cluster: In some cases, LOAD DATA INFILE did not load all data
  into NDB tables. (Bug #17081 (http://bugs.mysql.com/17081))
* NDB Cluster: The REDO log would become corrupted (and thus
  unreadable) in some circumstances, due to a failure in the query
  handler. (Bug #17295 (http://bugs.mysql.com/17295))
* NDB Cluster: No error message was generated for setting
  NoOfFragmentLogFiles too low. (Bug #13966
* NDB Cluster: No error message was generated for setting
  MaxNoOfAttributes too low. (Bug #13965
* Binary distributions for Solaris contained files with group
  ownership set to the non-existing wheel group. Now the bin group is
  used. (Bug #15562 (http://bugs.mysql.com/15562))
* The DECIMAL data type was not being handled correctly with prepared
  statements. (Bug #16511 (http://bugs.mysql.com/16511))
* The SELECT privilege was required for triggers that performed no
  selects. (Bug #15196 (http://bugs.mysql.com/15196))
* The UPDATE privilege was required for triggers that performed no
  updates. (Bug #15166 (http://bugs.mysql.com/15166))
* CAST(... AS TIME) operations returned different results when using
  versus not using prepared-statement protocol. (Bug #15805
* Improper memory handling for stored routine variables could cause
  memory overruns and binary log corruption. (Bug #15588
* Killing a long-running query containing a subquery could cause a
  server crash. (Bug #14851 (http://bugs.mysql.com/14851))
* A FULLTEXT query in a prepared statement could result in unexpected
  behavior. (Bug #14496 (http://bugs.mysql.com/14496))
* A RETURN statement within a trigger caused a server crash. RETURN
  now is disallowed within triggers. To exit immediately, use LEAVE.
  (Bug #16829 (http://bugs.mysql.com/16829))
* STR_TO_DATE(1,NULL) caused a server crash. (Bug #15828
* An invalid stored routine could not be dropped. (Bug #16303
* When evaluation of the test in a CASE failed in a stored procedure
  that contained a CONTINUE handler, execution resumed at the
  beginning of the CASE statement instead of at the end. (Bug #16568
* An INSERT statement in a stored procedure corrupted the binary log.
  (Bug #16621 (http://bugs.mysql.com/16621))
* When MyODBC or any other client called my_init()/my_end() several
  times, it caused corruption of charset data stored in once_mem_pool.
  (Bug #11892 (http://bugs.mysql.com/11892))
* When multiple handlers are created for the same MySQL error number
  within nested blocks, the outermost handler took precedence. (Bug
  #15011 (http://bugs.mysql.com/15011))
* Certain LEAVE statements in stored procedures were not properly
  optimized. (Bug #15737 (http://bugs.mysql.com/15737))
* Setting InnoDB path settings to an empty string caused InnoDB
  storage engine to crash upon server startup. (Bug #16157
* InnoDB used full explicit table locks in trigger processing. (Bug
  #16229 (http://bugs.mysql.com/16229))
* Server crash when dropping InnoDB constraints named
  TABLENAME_ibfk_0. (Bug #16387 (http://bugs.mysql.com/16387))
* Corrected race condition when dropping the adaptive hash index for a
  B-tree page in InnoDB. (Bug #16582 (http://bugs.mysql.com/16582))
* MYSQL_OPT_RECONNECT option was modified by calls to the
  mysql_real_connect() function. (Bug #15719
* InnoDB: After upgrading an InnoDB table having a VARCHAR BINARY
  column created in MySQL 4.0 to MySQL 5.0, update operations on the
  table would cause the server to crash. (Bug #16298
* Trying to compile the server on Windows generated a stack overflow
  warning due to a recursive definition of the internal
  Field_date::store() method. (Bug #15634
* The use of LOAD INDEX within a stored routine was permitted and
  caused the server to crash. Note: LOAD INDEX statements within
  stored routines are not supported, and now yield an error if
  attempted. This behavior is intended. (Bug #14270
* The mysqlbinlog utility did not output DELIMITER statements, causing
  syntax errors for stored routine creation statements. (Bug #11312
* NDB Cluster returned incorrect Can't find file error for OS error
  24, changed to Too many open files. (Bug #15020
* Performing a RENAME TABLE on an InnoDB table when the server is
  started with the --innodb-file-per-table and the data directory is a
  symlink caused a server crash. (Bug #15991
* The mysql_stmt_attr_get function returned an unsigned int instead of
  a boolean for STMT_ATTR_UPDATE_MAX_LENGTH. (Bug #16144
* Multi-byte path names for LOAD DATA and SELECT ... INTO OUTFILE
  caused errors. Added the character_set_filesystem system variable,
  which controls the interpretation of string literals that refer to
  filenames. (Bug #12448 (http://bugs.mysql.com/12448))
* Certain subqueries where the inner query is the result of a
  aggregate function would return different results on MySQL 5.0 than
  on MySQL 4.1. (Bug #15347 (http://bugs.mysql.com/15347))
* Attempts to create FULLTEXT indexes on VARCHAR columns larger than
  1000 bytes resulted in error. (Bug #13835
* Characters in the gb2312 and euckr character sets which did not have
  Unicode mappings were truncated. (Bug #15377
* Certain nested LEFT JOIN operations were not properly optimized.
  (Bug #16393 (http://bugs.mysql.com/16393))
* GRANT statements specifying schema names that included underscore
  characters (i.e. my_schema) did not match if the underscore was
  escaped in the GRANT statement (i.e. GRANT ALL ON `my\_schema` ...).
  (Bug #14834 (http://bugs.mysql.com/14834))
* Running out of diskspace in the location specified by the tmpdir
  option resulted in incorrect error message. (Bug #14634
* Test suite sp test left behind tables when the test failed that
  could cause future tests to fail. (Bug #15866
* UPDATE statement crashed multi-byte character set FULLTEXT index if
  update value was almost identical to initial value only differing in
  some spaces being changed to  . (Bug #16489
* A SELECT query which contained a GROUP_CONCAT() and an ORDER BY
  clause against the INFORMATION_SCHEMA resulted in an empty result
  set. (Bug #15307 (http://bugs.mysql.com/15307))
* The --replicate-do and --replicate-ignore options were not being
  enforced on multiple-table statements. (Bug #15699
  (http://bugs.mysql.com/15699), Bug #16487
* A prepared statement created from a SELECT ... LIKE query (such as
  PREPARE 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
* The server would crash when the size of an ARCHIVE table grew beyond
  2GB. (Bug #15787 (http://bugs.mysql.com/15787))
* Created a user function with an empty string (that is, CREATE
  FUNCTION ''()), was accepted by the server. Following this, calling
  SHOW FUNCTION STATUS would cause the server to crash. (Bug #15658
* In some cases the query optimizer did not properly perform multiple
  joins where inner joins followed left joins, resulting in corrupted
  result sets. (Bug #15633 (http://bugs.mysql.com/15633))
* The absence of a table in the left part of a left or right join was
  not checked prior to name resolution, which resulted in a server
  crash. (Bug #15538 (http://bugs.mysql.com/15538))
* NDBCluster: A bitfield whose offset and length totaled 32 would
  crash the cluster. (Bug #16125 (http://bugs.mysql.com/16125))
* NDBCluster: 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 incompleted error
  handling of the failed node. (Bug #15908
* NDBCluster: The ndb_autodiscover test failed sporadically due to a
  node not being permitted to connect to the cluster. (Bug #15619
* NDBCluster: When running more than one management process in a
  + ndb_mgm -c host:port -e "node_id stop" would stop a management
  process running only on the same system on which the command
  was issued.
  + ndb_mgm -e "shutdown" failed to shut down any management
  processes at all.
  (Bug #12045 (http://bugs.mysql.com/12045), Bug #12124
* The contents of fill_help_tables.sql could not be loaded in strict
  SQL mode. (Bug #15760 (http://bugs.mysql.com/15760))
* fill_help_tables.sql was not included in binary distributions for
  several platforms. (Bug #15759 (http://bugs.mysql.com/15759))
* An INSERT ... SELECT statement between tables in a MERGE set can
  return errors when statement involves insert into child table from
  merge table or vice-versa. (Bug #5390 (http://bugs.mysql.com/5390))
* Certain permission management statements could create a NULL
  hostname for a user, resulting in a server crash. (Bug #15598
* A COMMIT statement followed by a ALTER TABLE statement on a BDB
  table caused server crash. (Bug #14212
* A DELETE statement involving a LEFT JOIN and an IS NULL test on the
  right-hand table of the join crashed the server when the
  innodb_locks_unsafe_for_binlog option was enabled. (Bug #15650
* Performing an ORDER BY on an indexed ENUM column returned error.
  (Bug #15308 (http://bugs.mysql.com/15308))
* The NOT FOUND condition handler for stored procedures did not
  distinguish between a NOT FOUND condition and an exception or
  warning. (Bug #15231 (http://bugs.mysql.com/15231))
* A stored procedure with an undefined variable and an exception
  handler would hang the client when called. (Bug #14498
* Subselect could return wrong results when records cache and grouping
  was involved. (Bug #15347 (http://bugs.mysql.com/15347))
* Temporary table aliasing did not work inside stored functions. (Bug
  #12198 (http://bugs.mysql.com/12198))
* MIN() and MAX() operations were not optimized for views. (Bug #16016
* Using an aggregate function as the argument for a HAVING clause
  would result in the aggregate function always returning FALSE. (Bug
  #14274 (http://bugs.mysql.com/14274))
* Parallel builds occasionally failed on Solaris. (Bug #16282
* The FORCE INDEX keyword in a query would prevent an index merge from
  being used where an index merge would normally be chosen by the
  optimizer. (Bug #16166 (http://bugs.mysql.com/16166))
* The COALESCE() function truncated data in a TINYTEXT column. (Bug
  #15581 (http://bugs.mysql.com/15581))
* InnoDB: Comparison of indexed VARCHAR CHARACTER SET ucs2 COLLATE
  ucs2_bin columns using LIKE could fail. (Bug #14583
* An attempt to open a table that requires a disabled storage engine
  could cause a server crash. (Bug #15185
* Issuing a DROP USER command could cause some users to encounter a
  hostname is not allowed to connect to this MySQL server error. (Bug
  #15775 (http://bugs.mysql.com/15775))
* Setting innodb_log_file_size to a value greater than 4G crashed the
  server. (Bug #15108 (http://bugs.mysql.com/15108))
* A SELECT of a stored function that references the INFORMATION_SCHEMA
  could crash the server. (Bug #15533 (http://bugs.mysql.com/15533))
* Tarball install package was missing a proper fill_help_tables.sql
  file. (Bug #15151 (http://bugs.mysql.com/15151)