Note that we tend to update the manual at the same time we implement new things to MySQL. If you find a version listed below that you can't find on the MySQL download page, this means that the version has not yet been released!
The major difference between release 3.23 and releases 3.22 and 3.21 is that 3.23 contains a new ISAM library (MyISAM), which is more tuned for SQL than the old ISAM was.
The 3.23 release is under development, and things will be added at a fast pace to it. For the moment we recommend this version only for users that desperately need a new feature that is found only in this release (like big file support and machine-independent tables). (Note that all new functionality in MySQL 3.23 is extensively tested, but as this release involves much new code, it's difficult to test everything).
We are not adding any more new features that are likely to break any old code in MySQL 3.23 so this version should stabilise pretty soon and will soon be declared beta, gamma and release.
mysql_character_set_name(MYSQL *mysql)
function to the MySQL API.
ASCII 0
safe.
mysql_config
script.
<
or >
with a char column that was only
partly indexed.
mysqladmin
to use the CREATE DATABASE
/DROP
DATABASE
commands instead of the old deprecated API calls.
chown
warning in safe_mysqld
.
ORDER BY
that was introduced in 3.23.19.
DELETE FROM table_name
to do a drop+create of
the table if we are in AUTOCOMMIT
mode. (Needed for BDB tables).
ISAM
/MyISAM
index files gets full during an INSERT
/UPDATE
.
myisamchk
didn't correctly update row checksum when used with
-ro
(This only gave an warning in subsequent runs).
REPAIR TABLE
so that it works with tables without index.
DROP DATABASE
LOAD TABLE FROM MASTER
is sufficiently bug-free to announce it as
a feature.
DELETE FROM table_name
removed the .frm file.
MyISAM
table
when doing update based on key on a table with many keys and some key changed
values.
ORDER BY
can now uses REF
keys to find subset the rows
that needs to be sorted.
print_defaults
to my_print_defaults
to avoid
name confusion.
NULLIF()
to work according to ANSI SQL99.
net_read_timeout
and net_write_timeout
as startup
parameters to mysqld
.
myisamchk --sort-records
on a table with prefix compressed index.
BEGIN WORK
(the same as BEGIN
).
ORDER BY
on a CONV()
expression.
LOAD TABLE FROM MASTER
FLUSH MASTER
and FLUSH SLAVE
FLUSH TABLES WITH READ LOCK
to make a global lock suitable to
make a copy of MySQL data files.
CREATE TABLE ... SELECT ... PROCEDURE
now works.
GROUP BY
on VARCHAR/CHAR
columns.
READ
and a
WRITE
lock.
RAID
tables.
find_in_set()
when the first argument was NULL
.
LEFT JOIN
and ORDER BY
where the first
table had only one matching row.
my.cfg
example files in the `support-files'
directory.
duplicated key
problem when doing big GROUP BY
's.
(This bug was probably introduced in 3.23.15).
INNER JOIN
to match ANSI SQL.
NATURAL JOIN
syntax.
BDB
interface.
--no-defaults
and --defaults-file
to
safe_mysqld.sh
and mysql_install_db.sh
.
USE INDEX
works with PRIMARY
keys.
BEGIN
statement to start a transaction in AUTOCOMMIT
mode.
KILL
now works on a thread that is locked on a 'write' to a dead client.
log-slave-updates
to allow daisy-chaining the slaves
pthread_t
is not the same as int
INSERT DELAYED
code when doing
ALTER TABLE
.
INSERT DELAYED
TYPE=QUICK
to CHECK
and REPAIR
.
REPAIR TABLE
when the table was in use by other threads.
gdb
when one does a lot of reconnects. This will also improve
systems where you can't use persistent connections.
UPDATE IGNORE
will not abort if an update results in a
DUPLICATE_KEY
error.
CREATE TEMPORARY TABLE
commands in the update log.
delayed_key_writes
tables and CHECK TABLE
.
replicate-do-db
and replicate-ignore-db
options to
restrict which databases get replicated
SQL_LOG_BIN
option
mysqld
as root
, you must now use the --user=root
option.
FLUSH TABLES
command.
slow_launch_time
variable and the Slow_launch_threads
status variable to mysqld
. These can be examined with
mysqladmin variables
and mysqladmin extended-status
.
INET_NTOA()
and INET_ATON()
.
IF()
now depends on the second and
third arguments and not only on the second argument.
myisamchk
could go into a loop when trying to
repair a crashed table.
INSERT DELAYED
to update log if SQL_LOG_UPDATE=0
.
REPLACE
on HEAP
tables.
SHOW VARIABLES
.
DELETE
of many rows on a table with
compressed keys where MySQL scanned the index to find the rows.
CHECK
on table with deleted keyblocks.
LAST_INSERT_ID()
to update
a table with an auto_increment key.
NULLIF()
.
LOAD DATA INFILE
on a table with
BLOB/TEXT
columns.
EXPLAIN SELECT..
now also prints out whether MySQL needs to
create a temporary table or use file sorting when resolving the SELECT
.
ORDER BY
parts where the part is a
constant expression in the WHERE
part. Indexes can now be used
even if the ORDER BY
doesn't match the index exactly, as long as
all the not used index parts and all the extra ORDER BY
columns are constants in the WHERE
clause. See section 12.4 How MySQL uses indexes.
UPDATE
and DELETE
on a whole unique key in the WHERE
part,
is now faster than before.
RAID_CHUNKSIZE
to be in 1024 byte increments.
CONCAT()
where one of the arguments was a function
that returned a modified argument.
myisamchk
, where it updated the header in
the index file when one only checked the table. This confused the
mysqld
daemon if it updated the same table at the same time. Now
the status in the index file is only updated if one uses
--update-state
. With older myisamchk
versions you should
use --read-only
when only checking tables, if there is the
slightest chance that the mysqld
server is working on the table at the
same time!
DROP TABLE
is logged in the update log.
DECIMAL()
key field
where the column data contained leading zeros.
myisamchk
when the auto_increment isn't the first key.
DATETIME
in ISO8601 format: 2000-03-12T12:00:00
mysqld
binary can now handle many different
character sets (you can choose which when starting mysqld
).
REPAIR TABLE
.
mysql_thread_safe()
.
UMASK_DIR
environment variable.
CONNECTION_ID()
.
=
on BLOB
or VARCHAR BINARY
keys, where
only a part of the column was indexed, the whole column of the result
row wasn't compared.
ORDER BY
.
GROUP BY
part.
LOCK TABLE
command; This fixed the problem one got when running
the test-ATIS test with --fast
.
SQL_BUFFER_RESULT
to SELECT
.
CHECK TABLE
command.
MyISAM
involving REPLACE ... SELECT
which could
give a corrupted table.
myisamchk
where it wrongly reset the auto_increment value.
DISTINCT
on HEAP
temporary tables to use hashed
keys to quickly find duplicated rows. This mostly concerns queries of
type SELECT DISTINCT ... GROUP BY ..
. This fixes a problem where
not all duplicates were removed in queries of the above type. In
addition, the new code is MUCH faster.
MySQL
compile on MacOS X.
IF NOT EXISTS
to CREATE DATABASE
.
--all-databases
and --databases
to mysqldump
to allow dumping of many databases at the same time.
DECIMAL()
index in MyISAM
tables.
mysqladmin shutdown
on a local connection, mysqladmin
now
waits until the pidfile is gone before terminating.
COUNT(DISTINCT ...)
queries.
myisamchk
works properly with RAID:ed tables.
LEFT JOIN
and key_field IS NULL
.
net_clear()
which could give the error Aborted
connection
in the MySQL clients.
USE INDEX (key_list)
and IGNORE INDEX (key_list)
as
join parameters in SELECT
.
DELETE
and RENAME
should now work on RAID
tables.
ALTER TABLE tbl_name ADD (field_list)
syntax.
GRANT/REVOKE ALL PRIVILEGES
doesn't affect
GRANT OPTION
.
)
from the output of SHOW GRANTS
UNIQUE INDEX
in CREATE
statements.
mysqlhotcopy
- fast on-line hot-backup utility for local
MySQL databases. By Tim Bunce.
mysqlaccess
. Thanks to Steve Harvey for this.
--i-am-a-dummy
and --safe-updates
to mysql
.
select_limit
and max_join_size
to mysql
.
SQL_MAX_JOIN_SIZE
and SQL_SAFE_UPDATES
.
READ LOCAL
lock that doesn't lock the table for concurrent
inserts. (This is used by mysqldump
).
LOCK TABLES .. READ
doesn't anymore allow concurrent
inserts.
--skip-delay-key-write
to mysqld
.
_rowid
can now be used as an alias for an integer type unique indexed
column.
SIGPIPE
when compiling with --thread-safe-clients
to make things safe for old clients.
LOCK TABLES
.
INSERT DELAYED
.
date_column BETWEEN const_date AND const_date
works.
NULL
in a table with
BLOB/TEXT
columns.
WHERE K1=1 and K3=2 and (K2=2 and K4=4 or K2=3 and K4=5)
source
to mysql
to allow reading of batch files
inside the mysql
client. Original patch by Matthew Vanecek.
WITH GRANT OPTION
option.
GRANT
error when using tables from many
databases in the same query.
SELECT
when using many overlapping indexes.
MySQL should now be able to choose keys even better when there
is many keys to choose from.
SELECT * from key_part_1=const and key_part_2 > const2
VARCHAR
columns to CHAR
columns
didn't change row type from dynamic to fixed.
SELECT floor(pow(2,63))
.
mysqld
startup option --delay-key-write
to
--delay-key-write-for-all-tables
read-next-on-key
to HEAP
tables. This should fix all
problems with HEAP
tables when using not UNIQUE
keys.
--log-slow-queries
to mysqld
to log all queries that take a
long time to a separate log file with a time of how long the query took.
WHERE key_column=RAND(...)
SELECT .. LEFT JOIN ... key_column IS NULL
,
when key_column
could contain NULL
values.
LOAD DATA INFILE
.
NISAM
.
ISAM
when doing some ORDER BY ... DESC
queries.
--delay-key-write
didn't enable delayed key writing.
TEXT
column which only involved case changes.
INSERT DELAYED
doesn't update timestamps that are given.
YEARWEEK()
and options x
, X
, v
and
V
to DATE_FORMAT()
.
MAX(indexed_column)
and HEAP tables.
BLOB NULL
keys and LIKE
"prefix%".
MyISAM
and fixed length rows < 5 bytes.
GROUP BY
queries.
ENUM
field value
was too big.
pthread_mutex_timedwait
,
which is used with INSERT DELAYED
. See section 4.11.5 Linux notes (all Linux versions).
MyISAM
with keys > 250 characters.
MyISAM
one can now do an INSERT
at the same time as other
threads are reading from the table.
max_write_lock_count
to mysqld
to force a
READ
lock after a certain number of WRITE
locks.
delayed_key_write
on show variables
.
concurrency
to thread_concurrency
.
LOCATE(substr,str)
, POSITION(substr IN str)
,
LOCATE(substr,str,pos)
, INSTR(str,substr)
,
LEFT(str,len)
, RIGHT(str,len)
,
SUBSTRING(str,pos,len)
, SUBSTRING(str FROM pos FOR len)
,
MID(str,pos,len)
, SUBSTRING(str,pos)
, SUBSTRING(str
FROM pos)
, SUBSTRING_INDEX(str,delim,count)
, RTRIM(str)
,
TRIM([[BOTH | TRAILING] [remstr] FROM] str)
,
REPLACE(str,from_str,to_str)
, REVERSE(str)
,
INSERT(str,pos,len,newstr)
, LCASE(str)
, LOWER(str)
,
UCASE(str)
and UPPER(str)
; Patch by Wei He.
FULL
to SHOW PROCESSLIST
.
--verbose
to mysqladmin
.
REPLACE()
and LOAD DATA INFILE
.
mysqld
variable interactive_timeout
.
mysql_data_seek()
from ulong
to
ulonglong
.
mysqld
option -O lower_case_table_names={0|1}
to allow
users to force table names to lower case.
SELECT ... INTO DUMPFILE
.
--ansi
to make some functions ANSI SQL
compatible.
#sql
.
`
("
in --ansi
mode).
[floor()
overflow safe on FreeBSD.
--quote-names
to mysqldump
PRIMARY KEY NOT NULL
.
encrypt()
to be thread safe and not reuse buffer.
mysql_odbc_escape_string()
function to support big5 characters in
MyOBC.
FLOAT
and DOUBLE
(without any length modifiers) are
not anymore fixed decimal point numbers.
FLOAT(X)
: Now this is the same as FLOAT
if
X <= 24 and a DOUBLE
if 24 < X <= 53.
DECIMAL(X)
is now an alias for DECIMAL(X,0)
and DECIMAL
is now an alias for DECIMAL(10,0)
. The same goes for NUMERIC
.
ROW_FORMAT={default | dynamic | static | compressed}
to
CREATE_TABLE
.
DELETE FROM table_name
didn't work on temporary tables.
CHAR_LENGTH()
to be multi-byte character safe.
ORD(string)
.
SELECT DISTINCT ... ORDER BY RAND()
.
ALTER TABLE
+ adding a column after the last field didn't work.
CREATE TABLE foo (a int not null auto_increment, b char(5), primary key (b,a))
NULL
.
AS
on fieldname with CREATE TABLE table_name SELECT ...
didn't
work.
NATIONAL
and NCHAR
when defining character columns.
This is the same as not using BINARY
.
NULL
columns in a PRIMARY KEY
(only in UNIQUE
keys).
LAST_INSERT_ID
if one uses this in ODBC:
WHERE auto_increment_column IS NULL
. This seems to fix some problems
with Access.
SET SQL_AUTO_IS_NULL=0|1
now turns on/off the handling of
searching after the last inserted row with WHERE
auto_increment_column IS NULL
.
mysqld
variable concurrency
for Solaris.
--relative
to mysqladmin
to make
extended-status
more useful to monitor changes.
COUNT(DISTINCT..)
on an empty table.
LOAD DATA INFILE
and BLOB
columns.
~
(negation).
UDF
functions.
DATETIME
into a TIME
column will not anymore
try to store 'days' in it.
SUM()
.)
LIKE
"%" on an index that may have NULL
values.
REVOKE ALL PRIVILEGES
didn't revoke all privileges.
SHOW GRANTS FOR user
(by Sinisa).
date_add
syntax: date/datetime + INTERVAL # interval_type
.
By Joshua Chamas.
LOAD DATA REPLACE
.
REGEXP
is now case insensitive if you use non-binary strings.
ASC
is now the default again for ORDER BY
.
LIMIT
to UPDATE
.
mysql_change_user()
.
SHOW VARIABLES
.
--[whitespace]
comments.
INSERT into tbl_name VALUES ()
, that is, you may now specify
an empty value list to insert a row in which each column is set to its
default value.
SUBSTRING(text FROM pos)
to conform to ANSI SQL. (Before this
construct returned the rightmost 'pos' characters).
SUM(..)
with GROUP BY
returned 0 on some systems.
SHOW TABLE STATUS
.
DELAY_KEY_WRITE
option to CREATE TABLE
.
AUTO_INCREMENT
on any key part.
YEAR(NOW())
and YEAR(CURDATE())
.
CASE
construct.
COALESCE()
.
SELECT * FROM table_name WHERE
key_part1 >= const AND (key_part2 = const OR key_part2 = const)
. The
bug was that some rows could be duplicated in the result.
myisamchk
without -a
updated the index
distribution wrong.
SET SQL_LOW_PRIORITY_UPDATES=1
gave parse error before.
WHERE
clause.
UPDATE tbl_name SET KEY=KEY+1 WHERE KEY > 100
SELECT ... WHERE key_part1=const1 AND
key_part_2=const2 AND key_part1=const4 AND key_part2=const4
; Indextype
should be range
instead of ref
.
egcs
1.1.2 optimizer bug (when using BLOB
s) on Linux Alpha.
LOCK TABLES
combined with DELETE FROM table
.
NULL
and BLOB/TEXT
columns.
SELECT ... FROM t1 LEFT JOIN t2 ON ... WHERE t2.not_null_column IS NULL
.
ORDER BY
and GROUP BY
can be done on functions.
ORDER BY RAND()
.
WHERE key_column = function
.
WHERE key_column = column_name
even if
the columns are not identically packed.
WHERE column_name IS NULL
.
--init-file=file_name
to mysqld
.
COUNT(DISTINCT value,[value,...])
CREATE TEMPORARY TABLE
now creates a temporary table, in its own
namespace, that is automatically deleted if connection is dropped.
CASE
): CASE, THEN, WHEN, ELSE and END
.
EXPORT_SET()
and MD5()
.
MyISAM
) with a lot of new features.
See section 8.1 MyISAM tables.
HEAP
tables which are extremely fast for
lookups.
LOAD_FILE(filename)
to get the contents of a file as a
string value.
<=>
which will act as =
but will return TRUE
if both arguments are NULL
. This is useful for comparing changes
between tables.
EXTRACT(interval FROM datetime)
function.
FLOAT(X)
is not rounded on storage and may be
in scientific notation (1.0 E+10) when retrieved.
REPLACE
is now faster than before.
LIKE
character comparison to behave as =
;
This means that 'e' LIKE ''e'
is now true.
SHOW TABLE STATUS
returns a lot of information about the tables.
LIKE
to the SHOW STATUS
command.
SHOW COLUMNS
.
packed
and comment
to SHOW INDEX
.
CREATE TABLE ... COMMENT "xxx"
).
UNIQUE
, as in
CREATE TABLE table_name (col int not null UNIQUE)
CREATE TABLE table_name SELECT ....
CREATE TABLE IF NOT EXISTS ...
CHAR(0)
columns.
DATE_FORMAT()
now requires `%' before any format character.
DELAYED
is now a reserved word (sorry about that :( ).
analyse
, file: `sql_analyse.c'.
This will describe the data in your query. Try the following:
SELECT ... FROM ... WHERE ... PROCEDURE ANALYSE([max elements,[max memory]])This procedure is extremely useful when you want to check the data in your table!
BINARY
cast to force a string to be compared case sensitively.
--skip-show-database
to mysqld
.
UPDATE
now also works with
BLOB
/TEXT
columns.
INNER
join syntax. NOTE: This made INNER
a reserved word!
IP/NETMASK
syntax.
NOT NULL DATE/DATETIME
column with IS
NULL
, this is changed to a compare against 0
to satisfy some ODBC
applications. (By shreeve@uci.edu).
NULL IN (...)
now returns NULL
instead of 0
. This will
ensure that null_column NOT IN (...)
doesn't match
NULL
values.
TIME
columns.
TIME
strings to be more strict. Now the
fractional second part is detected (and currently skipped). The
following formats are supported:
[[DAYS] [H]H:]MM:]SS[.fraction]
[[[[[H]H]H]H]MM]SS[.fraction]
DATETIME
.
LOW_PRIORITY
attribute to LOAD DATA INFILE
.
LOAD DATA INFILE
.
DECIMAL(x,y)
now works according to ANSI SQL.
LAST_INSERT_ID()
is now updated for INSERT INTO ... SELECT
.
SELECT DISTINCT
is much faster; It uses the new UNIQUE
functionality in MyISAM
. One difference compared to MySQL 3.22
is that the output of DISTINCT
is not sorted anymore.
mysql_num_fields()
on
a MYSQL
object, you must use mysql_field_count()
instead.
LIBEWRAP
; Patch by Henning P . Schmiedehausen.
AUTO_INCREMENT
for other than numerical columns.
AUTO_INCREMENT
will now automatically make the column
NOT NULL
.
NULL
as the default value for AUTO_INCREMENT columns.
SQL_BIG_RESULT
; SQL_SMALL_RESULT
is now default.
--enable-large-files/--disable-large-files
switch to
configure
. See `configure.in' for some systems where this is
automatically turned off because of broken implementations.
readline
to 4.0.
CREATE TABLE
options: PACK_KEYS
and CHECKSUM
.
mysqld
option --default-table-type
.
The 3.22 version has faster and safer connect code and a lot of new nice enhancements. The reason for not including these changes in the 3.21 version is mainly that we are trying to avoid big changes to 3.21 to keep it as stable as possible. As there aren't really any MAJOR changes, upgrading to 3.22 should be very easy and painless. See section 4.16.2 Upgrading from a 3.21 version to 3.22.
3.22 should also be used with the new DBD-mysql
(1.20xx) driver
that can use the new connect protocol!
STD()
.
ISAM
library from 3.23.
INSERT DELAYED
.
LEFT JOIN
/STRAIGHT_JOIN
on a table with only one row.
GROUP BY
on TINYBLOB
columns; This
caused bugzilla to not show rows in some queries.
LOCK TABLE
SELECT DISTINCT
queries.
mysqlhotcopy
- fast on-line hot-backup utility for local MySQL
databases. By Tim Bunce.
mysqlaccess
. Thanks to Steve Harvey for this.
GROUP
functions.
ISAM
code when deleting rows on tables with
packed indexes.
SELECT
when using many overlapping indexes.
SELECT floor(pow(2,63))
.
WITH GRANT OPTION
option.
GROUP BY
queries.
ENUM
field value
was too big.
mysqlshutdown.exe
and mysqlwatch.exe
to the Windows
distribution.
ORDER BY
on a reference key.
INSERT DELAYED
doesn't update timestamps that are given.
LEFT JOIN
and COUNT()
on a column which
was declared NULL
+ and it had a DEFAULT
value.
CONCAT()
in a WHERE
clause.
AVG()
and STD()
with NULL
values.
ROUND()
will now work on Win32.
BLOB/TEXT
column to REVERSE()
.
/*! */
with version numbers.
SUBSTRING(text FROM pos)
to conform to ANSI SQL. (Before this
construct returned the rightmost 'pos' characters).
LOCK TABLES
combined with DELETE FROM table
SET SQL_LOW_PRIORITY_UPDATES=#
didn't work.
GRANT ... IDENTIFIED BY
SELECT * FROM table_name WHERE key_part1 >= const AND (key_part2 = const OR key_part2 = const)
DATA
is not a reserved word anymore.
LOCK TABLES table_name READ; FLUSH TABLES;
isamchk
should now work on Win32.
libtool
1.3.2.
configure
.
--defaults-file=###
to option file handling to force use
of only one specific option file.
CREATE
syntax to ignore MySQL 3.23 keywords.
INSERT DELAYED
on a table locked with
LOCK TABLES
.
DROP TABLE
on a table that was
locked by another thread.
GRANT/REVOKE
commands in the update log.
isamchk
to detect a new error condition.
NATURAL LEFT JOIN
.
mysql_close()
directly after
mysql_init()
.
delayed_insert_thread
counting when you couldn't create a new
delayed_insert thread.
CONCAT()
with many arguments.
DELETE FROM TABLE
when table was locked by
another thread.
LEFT JOIN
involving empty tables.
mysql.db
column from char(32)
to char(60)
.
MODIFY
and DELAYED
are not reserved words anymore.
TIME
column.
Host '..' is not allowed to connect to this MySQL
server
after one had inserted a new MySQL user with a GRANT
command.
TCP_NODELAY
also on Linux (Should give faster TCP/IP
connections).
STD()
for big tables when result should be 0.
INSERT DELAYED
had some garbage at end in the update log.
mysql_install_db
(from 3.22.17).
BLOB
columns.
shutdown
all threads didn't die properly.
-O flush-time=#
to mysqld
. This is mostly
useful on Win32 and tells how often MySQL should close all
unused tables and flush all updated tables to disk.
VARCHAR
column compared with CHAR
column
didn't use keys efficiently.
--log-update
and connecting
without a default database.
configure
and portability problems.
LEFT JOIN
on tables that had circular dependencies caused
mysqld
to hang forever.
mysqladmin processlist
could kill the server if a new user logged in.
DELETE FROM tbl_name WHERE key_column=col_name
didn't find any matching
rows. Fixed.
DATE_ADD(column,...)
didn't work.
INSERT DELAYED
could deadlock with status 'upgrading lock'
ENCRYPT()
to take longer salt strings than 2 characters.
longlong2str
is now much faster than before. For Intel x86
platforms, this function is written in optimized assembler.
MODIFY
keyword to ALTER TABLE
.
GRANT
used with IDENTIFIED BY
didn't take effect until privileges
were flushed.
SHOW STATUS
.
ORDER BY
with 'only index' optimization when there
were multiple key definitions for a used column.
DATE
and DATETIME
columns are now up to 5 times faster than
before.
INSERT DELAYED
can be used to let the client do other things while the
server inserts rows into a table.
LEFT JOIN USING (col1,col2)
didn't work if one used it with tables
from 2 different databases.
LOAD DATA LOCAL INFILE
didn't work in the Unix version because of
a missing file.
VARCHAR
/BLOB
on very short rows (< 4 bytes);
error 127 could occur when deleting rows.
BLOB/TEXT
through formulas didn't work for short (< 256 char)
strings.
GRANT
on a new host, mysqld
could die on the first
connect from this host.
ORDER BY
on column name that was the same
name as an alias.
BENCHMARK(loop_count,expression)
function to time expressions.
mysqld
to make it easier to start from shell
scripts.
TIMESTAMP
column to NULL
didn't record the timestamp
value in the update log.
INSERT INTO TABLE ... SELECT ... GROUP BY
.
localtime_r()
on Win32 so that it will not crash
anymore if your date is > 2039, but instead will return a time of all zero.
^Z
(ASCII 26) to Z
as ^Z
doesn't
work with pipes on Win32.
mysql_fix_privileges
adds a new column to the mysql.func
to
support aggregate UDF functions in future MySQL releases.
NOW()
, CURDATE()
or CURTIME()
directly in a
column didn't work.
SELECT COUNT(*) ... LEFT JOIN ...
didn't work with no WHERE
part.
pthread_cond()
on the Win32 version.
get_lock()
now correctly times out on Win32!
DATE_ADD()
and DATE_SUB()
in a
WHERE
clause.
GRANT ... TO user
IDENTIFIED BY 'password'
syntax.
GRANT
checking with SELECT
on many tables.
mysql_fix_privilege_tables
to the RPM
distribution. This is not run by default because it relies on the client
package.
SQL_SMALL_RESULT
to SELECT
to force use of
fast temporary tables when you know that the result set will be small.
DATE_ADD
/DATE_SUB()
doesn't have enough days.
GRANT
compares columns in case-insensitive fashion.
ALTER TABLE
dump core in
some contexts.
user@hostname
can now include `.' and `-'
without quotes in the context of the GRANT
, REVOKE
and
SET PASSWORD FOR ...
statements.
isamchk
for tables which need big temporary files.
mysql_fix_privilege_tables
script
when you upgrade to this version! This is needed because of the new
GRANT
system. If you don't do this, you will get Access
denied
when you try to use ALTER TABLE
, CREATE INDEX
or
DROP INDEX
.
GRANT
to allow/deny users table and column access.
USER()
to return user@host
PASSWORD
for another user.
FLUSH STATUS
that sets most status variables to zero.
aborted_threads
, aborted_connects
.
connection_timeout
.
SET SQL_WARNINGS=1
to get a warning count also for simple
inserts.
SIGTERM
instead of SIGQUIT
with
shutdown to work better on FreeBSD.
G
(print vertically) to mysql
.
SELECT HIGH_PRIORITY
... killed mysqld
.
IS NULL
on a AUTO_INCREMENT
column in a LEFT JOIN
didn't
work as expected.
MAKE_SET()
.
mysql_install_db
no longer starts the MySQL server! You
should start mysqld
with safe_mysqld
after installing it! The
MySQL RPM will however start the server as before.
--bootstrap
option to mysqld
and recoded
mysql_install_db
to use it. This will make it easier to install
MySQL with RPMs.
+
, -
(sign and minus), *
, /
, %
,
ABS()
and MOD()
to be BIGINT
aware (64-bit safe).
ALTER TABLE
that caused mysqld
to crash.
INSERT
).
INSERT INTO tbl_name SET col_name=value,col_name=value,...
MYSQL_INIT_COMMAND
to mysql_options()
to make
a query on connect or reconnect.
MYSQL_READ_DEFAULT_FILE
and
MYSQL_READ_DEFAULT_GROUP
to mysql_options()
to read the
following parameters from the MySQL option files: port
,
socket
, compress
, password
, pipe
, timeout
,
user
, init-command
, host
and database
.
maybe_null
to the UDF structure.
IGNORE
to INSERT
statemants with many rows.
isamchk -rq
on each table that has an index on
a CHAR
or VARCHAR
column.
mysql_setpermission
, by Luuk de Boer, allows one
to easily create new users with permissions for specific databases.
LOAD DATA INFILE
).
SHOW STATUS
and changed format of output to
be like SHOW VARIABLES
.
extended-status
command to mysqladmin
which will show the
new status variables.
SET SQL_LOG_UPDATE=0
caused a lockup of the server.
FLUSH [ TABLES | HOSTS | LOGS | PRIVILEGES ] [, ...]
KILL
thread_id
.
ALTER TABLE
from a INT
to a short CHAR()
column.
SELECT HIGH_PRIORITY
; This will get a lock for the
SELECT
even if there is a thread waiting for another
SELECT
to get a WRITE LOCK
.
LIKE
on
BLOB
/TEXT
columns with