This release includes all fixes in MySQL 4.0.16 and most of the fixes in MySQL 4.0.17.
Fonctionnalité ajoutée ou modifiée :
New CHECKSUM TABLE
statement for
reporting table checksum values.
Added character_set_client
,
character_set_connection
,
character_set_database
,
character_set_results
,
character_set_server
,
character_set_system
,
collation_connection
,
collation_database
, and
collation_server
system variables to
provide information about character sets and collations.
It is now possible to create multiple key caches, assign
table indexes to particular caches, and to preload indexes
into caches. See Section 13.5.4.1, « Syntaxe de CACHE INDEX
». See
Section 13.5.4.4, « Syntaxe de LOAD INDEX INTO CACHE
». Structured system variables
are introduced as a means of grouping related key cache
parameters. See
Section 9.4.1, « Variables système structurées ».
New COERCIBILITY()
function to return the
collation coercibility of a string.
The --quote-names
option for
mysqldump
now is enabled by default.
mysqldump
now includes a statement in the
dump output to set FOREIGN_KEY_CHECKS
to
0 to avoid problems with tables having to be reloaded in a
particular order when the dump is reloaded. The existing
FOREIGN_KEY_CHECKS
value is saved and
restored.
Important note: If you
upgrade to InnoDB
-4.1.1 or higher, you
cannot downgrade to a version lower than 4.1.1 any more!
That is because earlier versions of
InnoDB
are not aware of multiple
tablespaces.
One can revoke all privileges from a user with
REVOKE ALL PRIVILEGES, GRANT FROM
user_list
.
Added IGNORE
option for
DELETE
statement.
The MySQL source distribution now also includes the MySQL
Internals Manual internals.texi
.
Added mysql_set_server_option()
C API
client function to allow multiple statement handling in the
server to be enabled or disabled.
The mysql_next_result()
C API function
now returns -1
if there are no more
result sets.
Renamed CLIENT_MULTI_QUERIES
connect
option flag to CLIENT_MULTI_STATEMENTS
.
To allow for a transition period, the old option will
continue to be recognized for a while.
Require DEFAULT
before table and database
default character set. This enables us to use ALTER
TABLE tbl_name ... CHARACTER SET=...
to change the
character set for all CHAR
,
VARCHAR
, and TEXT
columns in a table.
Added MATCH ... AGAINST( ... WITH QUERY
EXPANSION)
and the
ft_query_expansion_limit
server variable.
Removed unused ft_max_word_len_for_sort
system variable.
Removed unused ft_max_word_len_for_sort
variable from myisamchk
.
Full-text search now supports multi-byte character sets and
the Unicode utf8
character set. (The
Unicode ucs2
character set is not yet
supported.)
Phrase search in MATCH ... AGAINST ( ... IN BOOLEAN
MODE)
no longer matches partial words.
Added aggregate function BIT_XOR()
for
bitwise XOR operations.
Replication over SSL now works.
The START SLAVE
statement now supports an
UNTIL
clause for specifying that the
slave SQL thread should be started but run only until it
reaches a given position in the master's binary logs or in
the slave's relay logs.
Produce warnings even for single-row
INSERT
statements, not just for
multiple-row INSERT
statements.
Previously, it was necessary to set
SQL_WARNINGS=1
to generate warnings for
single-row statements.
Added delimiter
(\d
)
command to the mysql
command-line client
for changing the statement delimiter (terminator). The
default delimiter is semicolon.
CHAR
, VARCHAR
, and
TEXT
columns now have lengths measured in
characters rather than in bytes. The character size depends
on the column's character set. This means, for example, that
a CHAR(n)
column for a multi-byte
character set will take more storage than before. Similarly,
index values on such columns are measured in characters, not
bytes.
LIMIT
no longer accepts negative
arguments (they used to be treated as very big positive
numbers before).
The DATABASE()
function now returns
NULL
rather than the empty string if
there is no database selected.
Added --sql-mode=NO_AUTO_VALUE_ON_ZERO
option to suppress the usual behavior of generating the next
sequence number when zero is stored in an
AUTO_INCREMENT
column. With this mode
enabled, zero is stored as zero; only storing
NULL
generates a sequence number.
Warning: Incompatible
change! Client authentication now is based on
41-byte passwords in the user
table, not
45-byte passwords as in 4.1.0. Any 45-byte passwords created
for 4.1.0 must be reset after running the
mysql_fix_privilege_tables
script.
Added secure_auth
global server system
variable and --secure-auth
server option
that disallow authentication for accounts that have old
(pre-4.1.1) passwords.
Added --secure-auth
option to
mysql
command-line client. If this option
is set, the client refuses to send passwords in old
(pre-4.1.1) format.
Warning: Incompatible
change! Renamed the C API
mysql_prepare_result()
function to
mysql_get_metadata()
as the old name was
confusing.
Added DROP USER 'user_name'@'host_name'
statement to drop an account that has no privileges.
The interface to aggregated UDF
functions
has changed a bit. You must now declare a
xxx_clear()
function for each aggregate
function XXX()
.
Added new ADDTIME()
,
DATE()
, DATEDIFF()
,
LAST_DAY()
,
MAKEDATE()
,
MAKETIME()
,
MICROSECOND()
,
SUBTIME()
, TIME()
,
TIMEDIFF()
,
TIMESTAMP()
,
UTC_DATE()
,
UTC_TIME()
,
UTC_TIMESTAMP()
, and
WEEKOFYEAR()
functions.
Added new syntax for ADDDATE()
and
SUBDATE()
. The second argument now may be
a number representing the number of days to be added to or
subtracted from the first date argument.
Added new type
values
DAY_MICROSECOND
,
HOUR_MICROSECOND
,
MINUTE_MICROSECOND
,
SECOND_MICROSECOND
, and
MICROSECOND
for
DATE_ADD()
,
DATE_SUB()
, and
EXTRACT()
.
Added new %f
microseconds format
specifier for DATE_FORMAT()
and
TIME_FORMAT()
.
All queries in which at least one SELECT
does not use indexes properly now are written to the slow
query log when long log format is used.
It is now possible to create a MERGE
table from MyISAM
tables in different
databases. Formerly, all the MyISAM
tables had to be in the same database, and the
MERGE
table had to be created in that
database as well.
Added new COMPRESS()
,
UNCOMPRESS()
, and
UNCOMPRESSED_LENGTH()
functions.
When using SET sql_mode='mode'
for a
complex mode (like ANSI
), we now update
the sql_mode
variable to include all the
individual options implied by the complex mode.
Added the OLAP (On-Line Analytical Processing) function
ROLLUP
, which provides summary rows for
each GROUP BY
level.
Added SQLSTATE
codes for all server
errors.
Added mysql_sqlstate()
and
mysql_stmt_sqlstate()
C API client
functions that return the SQLSTATE
error
code for the last error.
TIME
columns with hour values greater
than 24 were returned incorrectly to the client.
ANALYZE TABLE
, OPTIMIZE
TABLE
, REPAIR TABLE
, and
FLUSH
statements are now stored in the
binary log and thus replicated to slaves. This logging does
not occur if the optional
NO_WRITE_TO_BINLOG
keyword (or its alias
LOCAL
) is given. Exceptions are that
FLUSH LOGS
, FLUSH
MASTER
, FLUSH SLAVE
, and
FLUSH TABLES WITH READ LOCK
are not
logged in any case. For a syntax example, see
Section 13.5.4.2, « Syntaxe de FLUSH
».
New global system variable
relay_log_purge
to enable or disable
automatic relay log purging.
LOAD DATA
now produces warnings that can
be fetched with SHOW WARNINGS
.
Added support for syntax CREATE TABLE table2 (LIKE
table1)
that creates an empty table
table2
with a definition that is exactly
the same as table1
, including any
indexes.
CREATE TABLE tbl_name (...)
TYPE=storage_engine
now generates a warning if the
named storage engine is not available. The table is still
created as a MyISAM
table, as before.
Most subqueries are now much faster than before.
Added PURGE BINARY LOGS
as an alias for
PURGE MASTER LOGS
.
Disabled the PURGE LOGS
statement that
was added in version 4.1.0. The statement now should be
issued as PURGE MASTER LOGS
or
PURGE BINARY LOGS
.
Added SHOW BDB LOGS
as an alias for
SHOW LOGS
.
Added SHOW MASTER LOGS
(which had been
deleted in version 4.1.0) as an alias for SHOW
BINARY LOGS
.
Added Slave_IO_State
and
Seconds_Behind_Master
columns to the
output of SHOW SLAVE STATUS
.
Slave_IO_State
indicates the state of the
slave I/O thread, and
Seconds_Behind_Master
indicates the
number of seconds by which the slave is late compared to the
master.
The --lower-case-table-names=1
server
option now also makes aliases case insensitive. (Bug#534)
Changed that the relay log is flushed to disk by the slave I/O thread every time it reads a relay log event. This reduces the risk of losing some part of the relay log in case of brutal crash.
Bogues corrigés :
Fixed mysql
parser not to erroneously
interpret ‘;
’ character
within /* ... */
comment as statement
terminator.
Fixed merging types and length of result set columns for
UNION
operations. The types and lengths
now are determined taking into account values for all
SELECT
statements in the
UNION
, not just the first
SELECT
.
Fixed a bug in privilege handling that caused connections from certain IP addresses to be assigned incorrect database-level privileges. A connection could be assigned the database privileges of the previous successful authentication from one of those IP addresses, even if the IP address username and database name were different. (Bug#1636)
Error-handling functions were not called properly when an
error resulted from [CREATE | REPLACE| INSERT] ...
SELECT
statements.
HASH
, BTREE
,
RTREE
, ERRORS
, and
WARNINGS
no longer are reserved words.
(Bug#724)
Fix for bug in ROLLUP
when all tables
were const
tables. (Bug#714)
Fixed a bug in UNION
that prohibited
NULL
values from being inserted into
result set columns where the first SELECT
of the UNION
retrieved NOT
NULL
columns. The type and max_length of the
result column is now defined based on all
UNION
parts.
Fixed name resolution of columns of reduced subqueries in unions. (Bug#745)
Fixed memory overrun in subqueries in select list with
WHERE
clause bigger than outer query
WHERE
clause. (Bug#726)
Fixed a bug that caused MyISAM
tables
with FULLTEXT
indexes created in 4.0.x to
be unreadable in 4.1.x.
Fixed a data loss bug in REPAIR TABLE ...
USE_FRM
when used with tables that contained
TIMESTAMP
columns and were created in
4.0.x.
Fixed reduced subquery processing in ORDER
BY
/GROUP BY
clauses. (Bug#442)
Fixed name resolution of outer columns of subquery in
INSERT
/REPLACE
statements. (Bug#446)
Fixed bug in marking columns of reduced subqueries. (Bug#679)
Fixed a bug that made CREATE FULLTEXT
INDEX
syntax illegal.
Fixed a crash when a SELECT
that required
a temporary table (marked by Using
temporary
in EXPLAIN
output)
was used as a derived table in EXPLAIN
command. (Bug#251)
Fixed a rare table corruption bug in
DELETE
from a big table with a
new (created by MySQL-4.1)
full-text index.
LAST_INSERT_ID()
now returns 0 if the
last INSERT
statement didn't insert any
rows.
Fixed missing last character in function output. (Bug#447)
Fixed a rare replication bug when a transaction spanned two
or more relay logs, and the slave was stopped while
executing the part of the transaction that was in the second
or later relay log. Then replication would resume at the
beginning of the second or later relay log, which was
incorrect. (It should resume at BEGIN
, in
the first relay log.) (Bug#53)
CONNECTION_ID()
now is properly
replicated. (Bug#177)
The new PASSWORD()
function in 4.1 is now
properly replicated. (Bug#344)
Fixed a bug with double freed memory.
Fixed a crashing bug in UNION
operations
that involved temporary tables.
Fixed a crashing bug in DERIVED TABLES
when EXPLAIN
is used on a
DERIVED TABLES
with a join.
Fixed a crashing bug in DELETE
with
ORDER BY
and LIMIT
caused by an uninitialized array of reference pointers.
Fixed a bug in the USER()
function caused
by an error in the size of the allocated string.
Fixed a crashing bug when attempting to create a table containing a spatial (GIS) column with a storage engine that does not support spatial types.
Fixed a crashing bug in UNION
caused by
the empty select list and a non-existent column being used
in some of the individual SELECT
statements.
Fixed a replication bug with a 3.23 master and a 4.0 slave:
The slave lost the replicated temporary tables if
FLUSH LOGS
was issued on the master. (Bug#254)
Fixed a security bug: A server compiled without SSL support
still allowed connections by users who had the
REQUIRE SSL
option specified for their
accounts.
When an undefined user variable was used in a updating query
on the master (such as INSERT INTO t
VALUES(@a)
, where @a
had never
been set by this connection before), the slave could
replicate the query incorrectly if a previous transaction on
the master used a user variable of the same name. (Bug#1331)
Fixed bug with prepared statements: Using the
?
prepared statement parameter as the
argument to certain functions or statement clauses caused a
server crash when mysql_prepare()
was
invoked. (Bug#1500)
Fixed bug with prepared statements: after call to mysql_prepare placeholders became allowed in all consequent statements, even if they are not prepared (Bug#1946)
SLAVE START
(which is a deprecated
syntax, START SLAVE
should be used
instead) could crash the slave. (Bug#2516)
Fixed bug in ALTER TABLE RENAME
, when
rename to the table with the same name in another database
silently dropped destination table if it existed. (Bug#2628)
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.