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 > 24M.
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 OPTION 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
UPDATE operations lower priority than retrievals. You can now use
{INSERT | REPLACE | UPDATE | DELETE} LOW_PRIORITY ...
You can also use SET OPTION 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 nom_table 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 requêtesthat 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 requêtesare now resolved using
only indexes. Until MySQL 4.0, this works only for numeric columns.
MySQL indexes.
Lots of new benchmarks.
A new C API chapter and lots of other improvements in the manual.