Functionality Added or Changed
Incompatible Change:
The behavior of LOAD
DATA INFILE and
SELECT ... INTO
OUTFILE has changed when the FIELDS
TERMINATED BY and FIELDS ENCLOSED
BY values 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 with LOAD
DATA INFILE for MySQL 4.1.12 and up. This change also
affects data files read by mysqlimport and
written by mysqldump --tab, which use
LOAD DATA
INFILE and
SELECT ... INTO
OUTFILE. For more information, see
LOAD DATA INFILE Syntax.
(Bug #12564)
Incompatible Change:
MyISAM and InnoDB tables
created with DECIMAL columns in
MySQL 5.0.3 to 5.0.5 will appear corrupt after an upgrade to
MySQL 5.0.6. Dump such tables with mysqldump
before upgrading, and then reload them after upgrading. (The
same incompatibility will occur for these tables created in
MySQL 5.0.6 after a downgrade to MySQL 5.0.3 to 5.0.5.)
(Bug #10465, Bug #10625)
The INFORMATION_SCHEMA.SCHEMATA
table now has a DEFAULT_COLLATION_NAME
column.
(Bug #8998)
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)
The variable concurrent_insert
now takes 3 values. Setting this to 2 changes
MyISAM to do concurrent inserts to end of
table if table is in use by another thread.
Added a --debug option
to my_print_defaults.
Updated version of libedit to 2.9.
(Bug #2596)
Changed default value of
myisam_data_pointer_size from 4
to 6. This enables us to avoid table is full
errors for most cases.
Removed unused system variable
myisam_max_extra_sort_file_size.
Added the log_bin_trust_routine_creators
system variable, which applies when binary logging is enabled.
It controls whether stored routine creators can be trusted not
to create stored routines that will cause unsafe events to be
written to the binary log.
Removed a limitation that prevented use of FIFOs as logging targets (such as for the general query log). This modification does not apply to the binary log and the relay log. (Bug #8271)
InnoDB: When the maximum length of
SHOW INNODB STATUS output would
be exceeded, truncate the beginning of the list of active
transactions, instead of truncating the end of the output.
(Bug #5436)
Implemented the STMT_ATTR_PREFETCH_ROWS
option for the
mysql_stmt_attr_set() C API
function. This sets how many rows to fetch at a time when using
cursors with prepared statements.
Added a --show-warnings option to
mysql to cause warnings to be shown after
each statement if there are any. This option applies to
interactive and batch mode. In interactive mode,
\w and \W may be used to
enable and disable warning display.
(Bug #8684)
The GRANT and
REVOKE statements now support an
object_type clause to be used for
disambiguating whether the grant object is a table, a stored
procedure, or a stored function. Use of this clause requires
that you upgrade your grant tables. See
mysql_fix_privilege_tables — Upgrade MySQL System Tables.
(Bug #10246)
If strict SQL mode is enabled,
VARCHAR and
VARBINARY columns with a length
greater than 65,535 no longer are silently converted to
TEXT or
BLOB columns. Instead, an error
occurs.
(Bug #8295, Bug #8296)
SHOW VARIABLES now shows the
slave_compressed_protocol,
slave_load_tmpdir and
slave_skip_errors system
variables.
(Bug #7800)
Added the --log-bin-trust-routine-creators
server option for setting the
log_bin_trust_routine_creators system
variable from the command line.
When the server cannot read a table because it cannot read the
.frm file, 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)
Added REFERENCED_TABLE_SCHEMA,
REFERENCED_TABLE_NAME, and
REFERENCED_COLUMN_NAME columns to the
KEY_COLUMN_USAGE table of
INFORMATION_SCHEMA.
(Bug #9587)
The precision of the DECIMAL data
type has been increased from 64 to 65 decimal digits.
Removed mysqlshutdown.exe and
mysqlwatch.exe from the Windows “With
Installer” distribution.
The use of SESSION or
GLOBAL for user variables, or for local
variables in stored routines, is no longer permitted.
(Bug #9286)
Added the
div_precision_increment system
variable, which indicates the number of digits by which to
increase the scale of the result of division operations
performed with the / operator.
InnoDB: If
innodb_locks_unsafe_for_binlog
is enabled and the isolation level of the transaction is not set
to SERIALIZABLE,
InnoDB uses a consistent read for select in
clauses such as
INSERT INTO ...
SELECT and UPDATE ... (SELECT) that
do not specify FOR UPDATE or LOCK IN
SHARE MODE. Thus, no locks are set to rows read from
selected table.
Bugs Fixed
Security Fix:
mysql_install_db created the
mysql_install_db.X file with a predictable
file name and insecure permissions, which permitted local users
to execute arbitrary SQL statements by modifying the file's
contents.
(CVE-2005-1636)
Replication: Statements that create and drop triggers were not being written to the binary log, which affects replication and data recovery options. Trigger-related statements now are logged, subject to the issues and limitations discussed in Binary Logging of Stored Programs. (Bug #10417)
Replication: Statements that create and use stored routines were not being written to the binary log, which affects replication and data recovery options. Stored routine-related statements now are logged, subject to the issues and limitations discussed in Binary Logging of Stored Programs. (Bug #2610)
Added Create_routine_priv,
Alter_routine_priv, and
Execute_priv privileges to the
mysql.host privilege table. (They had been
added to mysql.db in MySQL 5.0.3 but not to
the host table.)
(Bug #8166)
awk script portability problems were found in
cmd-line-utils/libedit/makelist.sh
.
(Bug #9954)
Using #pragma interface or #pragma
implementation in source files caused portability
issues for cygwin.
(Bug #10241)
In strict SQL mode, some assignments to numeric columns that
should have been rejected were not (such as the result of an
arithmetic expression or an explicit
CAST() operation).
(Bug #6961)
An error in the implementation of the MyISAM
compression algorithm caused myisampack to
fail with very large sets of data (total size of all the records
in a single column needed to be at least 3 GB to trigger this
issue).
(Bug #8321)
The error message for exceeding
MAX_CONNECTIONS_PER_HOUR mistakenly referred
to max_connections.
(Bug #9947)
SHOW CREATE VIEW got confused and
could not find the view if there was a temporary table with the
same name as the view.
(Bug #8921)
The optimizer was choosing suboptimal execution plans for
certain outer joins where the right table of a left join (or
left table of a right join) had both ON and
WHERE conditions.
(Bug #10162)
AUTO_INCREMENT in InnoDB
tables could assign the same value for several rows.
(Bug #10359)
INFORMATION_SCHEMA tables were inaccessible
depending on the lettercase used to refer to them.
(Bug #10018)
A deadlock resulted from using
FLUSH TABLES WITH READ
LOCK while an INSERT
DELAYED statement was in progress.
(Bug #7823)
Invoking a stored function that executed a
SHOW statement resulted in a
server crash.
(Bug #8408)
Corrected a problem where DEFAULT values were
not assigned properly to BIT(1) or
CHAR(1) columns if certain other columns
preceded them in the table definition.
(Bug #10179)
mysqldump crashed using the
--complete-insert option while
dumping tables with a large number of long column names.
(Bug #10286)
Using AVG(DISTINCT) with
GROUP BY ... WITH ROLLUP caused the server to
crash.
(Bug #9799)
The mysql_stmt_attr_set() C API
function now returns an error for option values that are defined
in mysql.h but not yet implemented, such as
CURSOR_TYPE_SCROLLABLE.
(Bug #9643)
INSERT ...
ON DUPLICATE KEY UPDATE with MERGE
tables, which do not have unique indexes, caused the server to
crash.
(Bug #10400)
Usi DISTINCT AVG() with GROUP BY ...
WITH ROLLUP caused the server to crash.
(Bug #9800)
MAX() for an INT
UNSIGNED (unsigned 4-byte integer) column could return
negative values if the column contained values larger than
231.
(Bug #9298)
The mysql_stmt_execute() and
mysql_stmt_reset() C API
functions now close any cursor that is open for the statement,
which prevents a server crash.
(Bug #9478)
Repeated calls to ABS() when the
argument evaluated to NULL crashed the
server.
(Bug #10599)
The INFORMATION_SCHEMA.COLUMNS
table was missing columns of views for which the user has
access.
(Bug #9838)
Within a stored procedure, attempting to update a view defined
as an inner join failed with a Table
' error.
(Bug #9841)tbl_name' was locked with a READ
lock and can't be updated
Memory block allocation did not function correctly for the query cache in the embedded server. (Bug #9549)
mysql.cc did not compile correctly using
VC++ on Windows.
(Bug #10245)
CREATE TABLE ...
LIKE did not work correctly when
lower_case_table_names was set
on a case-sensitive file system and the source table name was
not given in lowercase.
(Bug #9761)
The BLACKHOLE storage engine failed in
testing, causing the server to crash.
(Bug #10175)
Using GROUP BY ... WITH ROLLUP on an indexed
column in an InnoDB table could cause the
server to crash.
(Bug #9798)
CREATE
TABLE t AS SELECT UUID() created a
VARCHAR(12) column, which is too small to
hold the 36-character result from
UUID().
(Bug #9535)
SELECT
DISTINCT with a prepared statement that used a cursor
could cause the server to crash.
(Bug #9520)
Disabled binary logging within stored routines to avoid writing
spurious extra statements to the binary log. For example, if a
routine p() executes an
INSERT statement, then for
CALL p(), the
CALL statement appears in the
binary log, but not the INSERT
statement.
(Bug #9100)
Selecting from a single-table view defined on multiple-table views caused a server crash. (Bug #8528)
NULL key parts in hash indexes on
VARCHAR columns were not handled
correctly, resulting in incorrect query results.
(Bug #9489, Bug #10176)
my_print_defaults was ignoring the
--defaults-extra-file option or
crashing when the option was given.
(Bug #9851, Bug #9136)
libsupc++ was longer required for building on
FreeBSD 5.3.
(Bug #9714)
Corrected an inability to select from a view within a stored procedure. (Bug #9758)
SELECT 0/0 returned 0
rather than NULL.
(Bug #10404)
FORMAT() now performs better
rounding for double values (for example,
FORMAT(4.55,1) returns
4.6, not 4.5).
(Bug #9060)
Incomplete results were returned from
INFORMATION_SCHEMA.COLUMNS for
INFORMATION_SCHEMA tables for
non-root users.
(Bug #10261)
A CHECK TABLE statement whose
arguments were a view name followed by a table name caused the
server to crash.
(Bug #9897)
Use of a CHAR or
VARCHAR column with
MIN() or
MAX() and GROUP BY ...
WITH ROLLUP caused the server to crash.
(Bug #9820)
For MERGE tables, avoid writing absolute path
names in the .MRG file for the names of the
constituent MyISAM tables so that if the data
directory is moved, MERGE tables will not
break. For mysqld, write just the
MyISAM table name if it is in the same
database as the MERGE table, and a path
relative to the data directory otherwise. For the embedded
servers, absolute path names may still be used.
(Bug #5964)
RENAME TABLE for an
ARCHIVE table failed if the
.arn file was not present.
(Bug #9911)
MERGE tables could fail on Windows due to
incorrect interpretation of path name separator characters for
file names in the .MRG file.
(Bug #10687)
SELECT from
INFORMATION_SCHEMA tables failed if the
statement has a GROUP BY clause and an
aggregate function in the select list.
(Bug #9404)
Multiple calls to a stored procedure that assigned the result of
a subquery to a variable or compared it to a value with
IN could cause the server to crash.
(Bug #5963)
net_read_timeout and
net_write_timeout were not
being respected on Windows.
(Bug #9721)
Remove extra slashes in --tmpdir value (for
example, convert /var//tmp to
/var/tmp, because they caused various
errors.
(Bug #8497)
Corrected some failures of prepared statements for SQL
(PREPARE plus
EXECUTE) to return all rows for
some SELECT statements.
(Bug #9777, Bug #9096)
Corrected a problem resolving outer column references in correlated subqueries when using the prepared statements. (Bug #10041)
If the file named by a
--defaults-extra-file option
does not exist or is otherwise inaccessible, an error now
occurs.
(Bug #5056)
configure did not properly recognize whether NPTL was available on Linux. (Bug #2173)
