End of Product Lifecycle. Active development and support for MySQL Database Server versions 3.23, 4.0, and 4.1 has ended. For details, see http://www.mysql.com/about/legal/lifecycle/#calendar. Please consider upgrading to a recent version. Further updates to the content of this manual will be minimal. All formats of this manual will continue to be available until 31 Dec 2010.
Functionality added or changed:
Incompatible Change:
TIMESTAMP
is now returned as a
string of type 'YYYY-MM-DD HH:MM:SS'
and
different timestamp lengths are not supported.
This change was necessary for SQL standards compliance. In a future version, a further change will be made (backward compatible with this change), allowing the timestamp length to indicate the desired number of digits of fractions of a second.
Replication:
Replication now works with RAND()
and user variables @var
.
Allow index type to be specified explicitly for some storage
engines via USING type_name
syntax in index
definition.
Allow
DEFAULT(
in expressions; it produces the column's default value.
col_name
)
Added database and real table name (in case of alias) to the
MYSQL_FIELD
structure.
Renamed SHOW
MASTER LOGS
statement to SHOW
BINARY LOGS
.
Unicode (UTF8) support.
Allow one to change mode for
ANSI_QUOTES
on the fly.
Faster embedded server (new internal communication protocol).
One can specify many temporary directories to be used in a
round-robin fashion with:
--tmpdir=dirname1:dirname2:dirname3
.
New faster client/server protocol that supports prepared statements, bound parameters, and bound result columns, binary transfer of data, warnings.
Aliases are now forced in derived tables, as per standard SQL.
libmysqlclient
did not always fetch column
default values correctly.
Support for GIS (Geometrical data). See Chapter 16, Spatial Extensions.
The mysql
command-line client attempted to
interpret quotes within comments.
(Bug#539)
REPAIR TABLE
and
OPTIMIZE TABLE
now can be killed.
See Section 12.4.6.3, “KILL
Syntax”.
Added record_in_range()
method to
MERGE
tables to be able to choose the correct
index when there are many to choose from.
New CHARSET()
and
COLLATION()
functions to return
the character set and collation of a string.
Added new
VARIANCE(
function returns the variance of expr
)expr
In CREATE TABLE foo (a INT not null primary
key)
the PRIMARY
word is now
optional.
CHAR BYTE
is an alias for the
CHAR BINARY
data type.
VARCHARACTER
is an alias for
VARCHAR
.
Added support for UNION
in
derived tables.
SHOW [COUNT(*)] WARNINGS
shows warnings from
the last command.
New operators integer MOD integer
and
integer DIV integer
. DIV
is now a reserved word.
One can specify a data type for a column in
CREATE TABLE ...
SELECT
by defining the column in the
CREATE TABLE
part.
CREATE TABLE foo (a TINYINT NOT NULL) SELECT b+1 AS a FROM bar;
Multi-line queries: You can now issue several queries at once and then read the results in one go.
New CONVERT(... USING ...)
syntax
for converting string values between character sets.
Added old-password
command to
mysqladmin for changing password but storing
it using the old password-hashing format.
In CREATE TABLE
the attribute
SERIAL
is now an alias for BIGINT
UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE
.
One can specify the different
BLOB
/TEXT
types with the syntax
BLOB(
and
length
)TEXT(
.
MySQL automatically changes it to one of the internal
length
)BLOB
/TEXT
types.
New more secure client authentication based on 45-byte passwords
in the user
table.
(CVE-2000-0981)
Subqueries: SELECT * from t1 where t1.a=(SELECT t2.b
FROM t2)
.
START SLAVE
(STOP SLAVE
) no longer returns an
error if the slave is started (stopped); it returns a warning
instead.
New options --reconnect
and
--skip-reconnect
for the mysql client, to reconnect
automatically or not if the connection is lost.
TRUE
and FALSE
added as
alias for 1 and 0, respectively.
DATE
/DATETIME
checking is now a bit stricter to support the ability to
automatically distinguish between date, datetime, and time with
microseconds. For example, dates of type YYYYMMDD
HHMMDD
are no longer supported; you must either have
separators between each
DATE
/TIME
part or not at all.
REPAIR TABLE
of
MyISAM
tables now uses less temporary disk
space when sorting char columns.
Derived tables:
SELECT a.col1, b.col2 FROM (SELECT MAX(col1) AS col1 FROM root_table) a, other_table b WHERE a.col1=b.col1;
Added --compatible
option to
mysqldump for producing output that is
compatible with other database systems or with older MySQL
servers.
DROP TEMPORARY TABLE
now drops only temporary
tables and doesn't end transactions.
SELECT .. LIMIT 0
did not return the proper
row count for SQL_CALC_FOUND_ROWS
.
One can create a table from the existing table using
CREATE [TEMPORARY] TABLE [IF NOT EXISTS]
. The table can be
either normal or temporary.
table
(LIKE
table
)
One can add a comment per column in CREATE
TABLE
.
SERIAL DEFAULT VALUE
added as an alias for
AUTO_INCREMENT
.
New function IS_USED_LOCK()
for
determining the connection identifier of the client that holds a
given advisory lock.
SELECT ... FROM DUAL
is an alias for
SELECT ...
. (To be compatible with some other
database systems).
EXPLAIN
SELECT
now can be killed. See Section 12.4.6.3, “KILL
Syntax”.
Server side help for all MySQL functions. One can now type
help week
in the mysql
client and get help for the week()
function.
Allow empty index lists to be specified for USE
INDEX
, IGNORE INDEX
, and
FORCE INDEX
.
SHOW FULL COLUMNS FROM
shows column
comments.
tbl_name
Character sets to be defined per column, table and database.
Added new
mysql_get_server_version()
C API
client function.
New CRC32()
function to compute
cyclic redundancy check value.
BTREE
index on MEMORY
(HEAP
) tables.
If one creates a too long
CHAR
/VARCHAR
it is now automatically changed to
TEXT
or
BLOB
; One get a warning in this
case.
On Windows, we are now using shared memory to communicate
between server and client when they are running on the same
machine and you are connecting to localhost
.
SLAVE START
and SLAVE STOP
are no longer accepted by the query parser; use
START SLAVE
and
STOP SLAVE
instead.
The --opt
option for
mysqldump now is enabled by default, as are
all the options implied by
--opt
.
User Comments
Add your own comment.