Fonctionnalités ajoutées ou modifiées :
ONLY_FULL_GROUP_BY
no longer is included
in the ANSI
composite SQL mode. (Bug#8510)
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 pathname. (Bug#8513)
The coercibility for the return value of functions such as
USER()
or VERSION()
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 in
Illegal mix of collations
errors.
COERCIBILITY()
was modified to
accommodate this new coercibility value. See
Section 12.8.3, « Fonctions d'informations ».
User variable coercibility has been changed from ``coercible'' to ``implicit.'' That is, user variables have the same coercibility as column values.
NULL
now is considered more coercible
than string constants. This resolves some Illegal
mix of collations
conflicts.
Modified the parser to allow SELECT
statements following the UNION
keyword to
be subqueries in parentheses. (Bug#2435)
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)
Added SQL_NOTES
session variable to cause
Note
-level warnings not to be recorded.
(Bug#6662)
InnoDB
: Commit after every 10,000 copied
rows when executing CREATE INDEX
,
DROP INDEX
or OPTIMIZE
TABLE
, which are internally implemented as
ALTER TABLE
. This makes it much faster to
recover from an aborted operation.
Added a new global system variable
slave_transaction_retries
: If the
replication slave SQL thread fails to execute a transaction
because of an InnoDB
deadlock or exceeded
InnoDB's innodb_lock_wait_timeout
or
NDBCluster's
TransactionDeadlockDetectionTimeout
or
TransactionInactiveTimeout
, it
automatically retries
slave_transaction_retries
times before
stopping with an error. The default in MySQL 4.1 is 0. You
must explicitly set the value greater than 0 to enable the
``retry'' behavior. (In MySQL 5.0.3 or newer, the default is
10.) (Bug#8325)
Added --with-big-tables
compilation option
to configure. (Previously it was
necessary to pass -DBIG_TABLES
to the
compiler manually in order to enable large table support.)
See Section 2.4.2, « Options habituelles de configure
» for details.
Added configuration directives !include
and !includedir
for including option
files and searching directories for option files. See
Section 4.3.2, « Fichier d'options my.cnf
» for usage.
Bogues corrigés :
The use of XOR
together with NOT
ISNULL()
erroneously resulted in some outer joins
being converted to inner joins by the optimizer. (Bug#9017)
Fixed utf8_spanish2_ci
and
ucs2_spanish2_ci
collations to not
consider ‘r
’ equal to
‘rr
’. If you upgrade to this
version from an earlier version, you should rebuild the
indexes of affected tables. (Bug#9269)
Allow extra HKSCS and cp950 characters
(big5
extension characters) to be
accepted in big5
columns. (Bug#9357)
BLOB(
and
M
)TEXT(
columns, with M
)M
less than 256,
were being created as BLOB
and
TEXT
columns rather than
TINYBLOB
or TINYTEXT
columns. (Bug#9303)
Fixed a problem with INSERT ... SELECT ... ON
DUPLICATE KEY UPDATE
where a column named in the
insert list and in the ON DUPLICATE KEY
UPDATE
clause was erroneously declared to be
ambiguous. (Bug#8147)
In prepared statements, subqueries containing parameters
were erroneously treated as const
tables
during preparation, resulting in a server crash. (Bug#8807)
Fixed a problem with OPTIMIZE TABLE
for
InnoDB
tables being written twice to the
binary log. (Bug#9149)
Provide more informative error messages in clustered setting
when a query is issued against a table that has been
modified by another mysqld
server. (Bug#6762)
For MyISAM
tables, REPAIR
TABLE
no longer discard rows that have incorrect
checksum. (Bug#9824)
Depending on index statistics, GROUP BY
could return
incorrect results if the first table processed for a join
had several indexes that cover the grouped columns. (Bug#9213)
col1
,
col2
, ...
Fixed incorrect evaluation of ALL/ANY
subqueries that contain a HAVING
clause.
(Bug#9350)
Fixed server crash when left expression of
IN/ALL/ANY
comparision was a subquery.
(Bug#8888)
Fixed option-parsing code for the embedded server to
understand K
, M
, and
G
suffixes for the
net_buffer_length
and
max_allowed_packet
options. (Bug#9472)
Fixed a crash when using TIMESTAMP
columns with no minute or second parts in GROUP
BY
with the new
system variable
set to 1. (Bug#9401)
If a MyISAM
table on Windows had
INDEX DIRECTORY
or DATA
DIRECTORY
table options,
mysqldump dumped the directory pathnames
with single-backslash pathname separators. This would cause
syntax errors when importing the dump file.
mysqldump now changes
‘\
’ to
‘/
’ in the pathnames on
Windows. (Bug#6660)
Fixed a server crash caused by use of
NOW()
is a subquery. (Bug#8824)
Fixed problems with static variables to allow building on Fedora Core 3. (Bug#6554)
Some user variables were not being handled with ``implicit'' coercibility. (Bug#9425)
Setting the max_error_count
system
variable to 0 resulted in a setting of 1. (Bug#9072)
Fixed a collation coercibility problem that caused a union between binary and non-binary columns to fail. (Bug#6519)
Fixed a problem with the tee
command in
mysql that resulted in
mysql crashing. (Bug#8499)
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)
Bundled zlib
in the source distribution
was upgraded to 1.2.2. (Bug#9118)
Fixed server crash resulting from queries that combined
SELECT DISTINCT
,
SUM()
, and ROLLUP
.
(Bug#8615)
Incorrect results were returned from queries that combined
SELECT DISTINCT
, GROUP BY
, and ROLLUP
. (Bug#8616)
Fixed a bug that under certain circumstances could allow a
privilege escalation via database wildcards in
GRANT
. (CVE-2004-0957)
Too many rows were returned from queries that combined
ROLLUP
and LIMIT
if
SQL_CALC_FOUND_ROWS
was given. (Bug#8617)
mysqldump misinterpreted
‘_
’ and
‘%
’ characters in the names
of tables to be dumped as wildcard characters. (Bug#9123)
Made the relay_log_space_limit
system
variable show up in the output of SHOW
VARIABLES
. (Bug#7100)
Use of
GROUP_CONCAT(
in a subquery, where x
)x
was an
alias to a column in the outer query, resulted in a server
crash. (Bug#8656)
The CHARSET()
,
COLLATION()
, and
COERCIBILITY()
functions sometimes
returned NULL
.
CHARSET()
and
COLLATION()
returned
NULL
when given any of these arguments
that evaluated to NULL
: A system function
such as DATABASE()
; a column value; and a
user variable. Now CHARSET()
and
COLLATION()
return the system character
set and collation; the column character set and collation;
and binary
.
COERCIBILITY(NULL)
now returns
``ignorable'' coercibility rather than
NULL
. (Bug#9129)
Expressions involving nested CONCAT()
calls and character set conversion of string constants could
return an incorrect result. (Bug#8785)
The MEMORY
storage engine did not
properly increment an AUTO_INCREMENT
column if there was a second composite index that included
the column. (Bug#8489)
Fixed a bug in the filesort routine such that killing a filesort could cause an assertion failure. (Bug#8799)
REPAIR TABLE
did not invalidate query
results in the query cache that were generated from the
table. (Bug#8480)
If max_join_size
was set, a query
containing a subquery that exceeded the examined-rows limit
could hang. (Bug#8726)
Mixed-case database and table names in the grant tables were
ignored for authentication if the
lower_case_table_names
system variable
was set. GRANT
will not create such
privileges when lower_case_table_names
is
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)
AES_DECRYPT(
could fail to return col_name
,key
)NULL
for invalid
values in col_name
, if
col_name
was declared as
NOT NULL
. (Bug#8669)
Ordering by unsigned expression (more complex than a column reference) was treating the value as signed, producing incorrectly sorted results. (Bug#7425)
HAVING
was treating unsigned columns as
signed. (Bug#7425)
Fixed a problem with boolean full-text searches on
utf8
columns where a double quote in the
search string caused a server crash. (Bug#8351)
MIN(
and
col_name
)MAX(
could fail to produce the correct result if
col_name
)col_name
was contained in
multiple indexes and the optimizer did not choose the first
index that contained the column. (Bug#8893)
Table creation for a MyISAM
table failed
if DATA DIRECTORY
or INDEX
DIRECTORY
options were given that specified the
pathname to the database directory where the table files
would be created by default. (Bug#8707)
Fixed a problem with LIKE
pattern-matching for strings with the
cp1251_bin
binary collation. (Bug#8560)
A join on two tables failed when each contained a
BIGINT UNSIGNED
column that were compared
when their values exceeded 2^63 − 1. The match failed and
the join returned no rows. (Bug#8562)
For a query with both GROUP BY
and
COUNT(DISTINCT)
clauses and a
FROM
clause with a subquery,
NULL
was returned for any
VARCHAR
column selected by the subquery.
(Bug#8218)
Fixed an optimizer bug that caused incorrectly ordered
result from a query that used a FULLTEXT
index to retrieve rows and there was another index that was
usable for ORDER BY
. For such a query,
EXPLAIN
showed
fulltext
join type, but regular (not
FULLTEXT
) index in the
Key
column. (Bug#6635)
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 hostname
values that included netmasks in GRANT
statements did not work. (Bug#8471)
The --set-character-set
option 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)
Hostname matching didn't work if a netmask was specified for table-specific privileges. (Bug#3309)
Binary data stored in BLOB
or
BINARY
columns would be erroneously
dumped if mysqldump was invoked with
--hex-blob
and
--skip-extended-insert
arguments. This
happened if data contained characters larger then 0x7F (Bug#8830).
Corruption of MyISAM
table indexes could
occur with TRUNCATE TABLE
if the table
had already been opened. For example, this was possible if
the table had been opened implicitly by selecting from a
MERGE
table that mapped to the
MyISAM
table. The server now issues an
error message for TRUNCATE TABLE
under
these conditions. (Bug#8306)
Fixed handling of table-name matching in
mysqlhotcopy to accommodate
DBD::mysql
2.9003 and up (which implement
identifier quoting). (Bug#8136)
In the mysql_real_escape_string()
C API
function, when a multi-byte character is encountered that is
illegal in the current character set, escape only the first
byte, not each byte. This avoids creating a valid character
from an invalid one. (Bug#8378)
Fixed a problem with the cp1250_czech_cs
collation that caused empty literal strings not to compare
equal to empty character columns. (Bug#8840)
Fixed a problem in index cost calculation that caused a
USE INDEX
or FORCE
INDEX
hint not to be used properly for a
LEFT JOIN
across indexed
BLOB
columns. (Bug#7520)
The column type for
MAX(
was returned as datetime_col
)VARCHAR
rather than
DATETIME
if the query included a
GROUP BY
clause. (Bug#5615)
FOUND_ROWS()
returned an incorrect value
for preceding SELECT
statements that used
no table or view. (Bug#6089)
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)
InnoDB: Work around a problem in AIX 5.1 patched with ML7
security patch: InnoDB would refuse to open its
ibdata
files, complaining about an
operating system error 0.
InnoDB: Fixed a memory corruption bug if one created a table
with a primary key that contained at least two column
prefixes. An example: CREATE TABLE t(a char(100), b
tinyblob, PRIMARY KEY(a(5), b(10)))
.
InnoDB
: Do not try to space-pad
BLOB
columns containing
ucs2
characters. This avoids an assertion
failure that was introduced when fixing Bug#7350. (Bug#8771)
InnoDB: Fixed a bug : MySQL-4.1.8 - 4.1.10 could complain that an InnoDB table created with MySQL-3.23.49 or earlier was in the new compact InnoDB table format of 5.0.3 or later, and InnoDB would refuse to use that table. There is nothing wrong with the table, it is mysqld that is in error. Workaround: wait that 4.1.11 is released before doing an upgrade, or dump the table and recreate it with any MySQL version >= 3.23.50 before upgrading.
InnoDB
: Honor the
--tmpdir
startup option when creating
temporary files. Previously, InnoDB
temporary files were always created in the temporary
directory of the operating system. On Netware,
InnoDB
will continue to ignore
--tmpdir
. (Bug#5822)
InnoDB
: If MySQL wrote to its binlog, but
for some reason trx->update_undo
and
trx->insert_undo
were NULL in InnoDB,
then trx->commit_lsn
was garbage, and
InnoDB could assert in the log flush of
trx_commit_complete_for_mysql()
. (Bug#9277)
InnoDB
: If InnoDB cannot allocate memory,
keep retrying for 60 seconds before we intentionally crash
mysqld
; maybe the memory shortage is
just temporary.
InnoDB
: If one used LOCK
TABLES
, created an InnoDB temp table, and did a
multi-table update where a MyISAM table was the update table
and the temp table was a read table, then InnoDB asserted in
row0sel.c
because
n_mysql_tables_in_use
was 0. Also, we
remove the assertion altogether and just print an error to
the .err
log if this important
consistency check fails. (Bug#8677)
mysqldump now avoids writing SET
NAMES
to the dump output if the server is older
than version 4.1 and would not understand that statement.
(Bug#7997)
Fixed a bug in my_print_defaults that
made it ignore the --defaults-extra-file
and --defaults-file
options.
Retrieving from a view defined as a
SELECT
that mixed UNION
ALL
and UNION DISTINCT
resulted
in a different result than retrieving from the original
SELECT
. (Bug#6565)
Worked around a bug in support for NSS support in
glibc
when static linking is used and
LDAP is one of the NSS sources. The workaround is to detect
when the bug causes a segfault and issue a diagnostic
message with information about the problem. (Bug#3037, Bug#4872)
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)
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 CHAR()
function was not ignoring
NULL
arguments, contrary to the
documentation. (Bug#6317)
Neither SHOW ERRORS
nor SHOW
WARNINGS
were displaying Error-level messages.
(Bug#6572)
Creating a table using a name containing a character that is
illegal in character_set_client
resulted
in the character being stripped from the name and no error.
The character now is considered an error. (Bug#8041)
Fixed a problem with the Cyrillic letters I and SHORT I
being treated the same by the
utf8_general_ci
collation. (Bug#8385)
The MAX_CONNECTIONS_PER_HOUR
resource
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)
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 recreated, the
tables also would appear to have been recreated. (Bug#8355)
Changed mysql_server_end()
C API function
to restore more variables to their initial state so that a
subsequent call to mysql_server_init()
would not cause a client program crash. (Bug#7344)
Fixed a problem with accented letters improperly being
treated as distinct with the
utf_general_ci
collation. (Bug#7878)
ENUM
and SET
columns
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)
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)
The output of the STATUS
(\s
) command in mysql
had the values for the server and client character sets
reversed. (Bug#7571)
If the slave was running with
--replicate-*-table
options which excluded
one temporary table and included another, and the two tables
were used in a single DROP TEMPORARY TABLE IF
EXISTS
statement, 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)
Treat user variables as having IMPLICIT
derivation (coercibility) to avoid ``Illegal mix of
collations'' errors when replicating user variables. (Bug#6676)
When setting integer system variables to a negative value
with SET VARIABLES
, the value was treated
as a positive value modulo 2^32. (Bug#6958)
Fixed a bug in bundled readline
library
that caused segmentation fault in mysql
when user entered Shift+Enter. (Bug#5672)
Fix conversion of strings -> double to get higher
accuracy for floating point values that are integers, like:
123.45E+02
(Bug#7840).
Fixed a bug in MATCH ... AGAINST
in
natural language mode that could cause a server crash if the
FULLTEXT
index was not used in a join
(EXPLAIN
did not show
fulltext
join mode) and the search query
matched no rows in the table (Bug#8522).
Platform and architecture information in version information
produced for --version
option on Windows
was always Win95/Win98 (i32)
. More
accurately determine platform as Win32
or
Win64
for 32-bit or 64-bit Windows, and
architecture as ia32
for x86,
ia64
for Itanium, and
axp
for Alpha. (Bug#4445)
Fixed a rare race condition which could lead to
FLUSH TABLES WITH READ LOCK
hanging. (Bug#8682)
Fixed a bug that caused the slave to stop on statements that produced an error on the master. (Bug#8412)
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)
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.