All table lock handing is changed to avoid some very subtle
deadlocks when using DROP TABLE
,
ALTER TABLE
, DELETE FROM
TABLE
and mysqladmin
flush-tables
under heavy usage. Changed locking
code to get better handling of locks of different types.
Updated DBI
to 1.00 and
DBD
to 1.2.0.
Added a check that the error message file contains error
messages suitable for the current version of
mysqld
. (To avoid errors if you
accidentally try to use an old error message file.)
All count structures in the client
(affected_rows()
,
insert_id()
, ...) are now of type
BIGINT
to allow 64-bit values to be used.
This required a minor change in the MySQL protocol which
should affect only old clients when using tables with
AUTO_INCREMENT
values > 16M.
The return type of mysql_fetch_lengths()
has changed from uint *
to ulong
*
. This may give a warning for old clients but
should work on most machines.
Change mysys
and dbug
libraries to allocate all thread variables in one struct.
This makes it easier to make a threaded
libmysql.dll
library.
Use the result from gethostname()
(instead of uname()
) when constructing
.pid
file names.
New better compressed server/client protocol.
COUNT()
, STD()
and
AVG()
are extended to handle more than 4G
rows.
You can now store values in the range
-838:59:59
<= x <=
838:59:59
in a TIME
column.
Warning: incompatible
change!! If you set a TIME
column to too short a value, MySQL now assumes the value is
given as: [[[D ]HH:]MM:]SS
instead of
HH[:MM[:SS]]
.
TIME_TO_SEC()
and
SEC_TO_TIME()
can now handle negative
times and hours up to 32767.
Added new option SET SQL_LOG_UPDATE={0|1}
to allow users with the PROCESS
privilege
to bypass the update log. (Modified patch from Sergey A
Mukhin <violet@rosnet.net>
.)
Fixed fatal bug in LPAD()
.
Initialize line buffer in mysql.cc
to
make BLOB
reading from pipes safer.
Added -O max_connect_errors=#
option to
mysqld
. Connect errors are now reset for
each correct connection.
Increased the default value of
max_allowed_packet
to
1M
in mysqld
.
Added --low-priority-updates
option to
mysqld
, to give table-modifying
operations (INSERT
,
REPLACE
, UPDATE
,
DELETE
) lower priority than retrievals.
You can now use {INSERT | REPLACE | UPDATE |
DELETE} LOW_PRIORITY ...
You can also use
SET SQL_LOW_PRIORITY_UPDATES={0|1}
to
change the priority for one thread. One side effect is that
LOW_PRIORITY
is now a reserved word. :(
Add support for INSERT INTO table ...
VALUES(...),(...),(...)
, to allow inserting
multiple rows with a single statement.
INSERT INTO tbl_name
is now also cached
when used with LOCK TABLES
. (Previously
only INSERT ... SELECT
and LOAD
DATA INFILE
were cached.)
Allow GROUP BY
functions with
HAVING
:
mysql> SELECT col FROM table GROUP BY col HAVING COUNT(*)>0;
mysqld
will now ignore trailing
‘;
’ characters in queries.
This is to make it easier to migrate from some other SQL
servers that require the trailing
‘;
’.
Fix for corrupted fixed-format output generated by
SELECT INTO OUTFILE
.
Warning: incompatible
change! Added Oracle
GREATEST()
and LEAST()
functions. You must now use these instead of the
MAX()
and MIN()
functions to get the largest/smallest value from a list of
values. These can now handle REAL
,
BIGINT
and string
(CHAR
or VARCHAR
)
values.
Warning: incompatible
change! DAYOFWEEK()
had offset
0 for Sunday. Changed the offset to 1.
Give an error for queries that mix GROUP
BY
columns and fields when there is no
GROUP BY
specification.
Added --vertical
option to
mysql
, for printing results in vertical
mode.
Index-only optimization; some queries are now resolved using only indexes. Until MySQL 4.0, this works only for numeric columns. See Section 7.4.5, « Comment MySQL utilise les index ».
Lots of new benchmarks.
A new C API chapter and lots of other improvements in the manual.
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.