 |
Go to the first, previous, next, last section, table of contents.
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). This
version should start to stabilize as soon as we get subselects included
in it.
-
Fixed some Y2K problems in the new date handling in 3.23.
-
Fixed problem with
SELECT DISTINCT ... ORDER BY RAND().
-
Added patches by Sergei A. Golubchik for text searching on the MyISAM level.
-
Fixed cache overflow problem when using full joins without keys.
-
Fixed some configure issues.
-
Some small changes to make parsing faster.
-
ALTER TABLE + adding a column after the last field didn't work.
-
Fixed problem when using an auto_increment column in two keys
-
One can now with MyISAM have the auto_increment part as a sub part:
CREATE TABLE foo (a int not null auto_increment, b char(5), primary key (b,a))
-
Fixed bug in MyISAM with packed char keys that could be NULL.
-
AS on fieldname with CREATE TABLE table_name SELECT ... didn't
work.
-
Allow use of
NATIONAL and NCHAR when defining character columns.
This is the same as not using BINARY.
-
Don't allow
NULL columns in a PRIMARY KEY (only in UNIQUE
keys).
-
Clear
LAST_INSERT_ID if in uses this in ODBC:
WHERE auto_increment_column IS NULL. This seams to fix some problems
with Access.
-
SET SQL_AUTO_IS_NULL=0|1 now turns off/on the handling of
searching after the last inserted row with WHERE
auto_increment_column IS NULL.
-
Added new mysqld variable
concurrency for Solaris.
-
Added option
--relative to mysqladmin to make
extended-status more useful to monitor changes.
-
Fixed bug when using
COUNT(DISTINCT..) on an empty table.
-
Added support for the Chinese character set GBK.
-
Fixed problem with
LOAD DATA INFILE and BLOB columns.
-
Added bit operator
~ (negation).
-
Fixed problem with
UDF functions.
-
Inserting a
DATETIME into a TIME column will not anymore
try to store 'days' in it.
-
Fixed problem with storage of float/double on low endian machines.
(This affected
SUM().)
-
Added connect timeout on TCP/IP connections.
-
Fixed problem with
LIKE "%" on a index that may have NULL values.
-
REVOKE ALL PRIVILEGES didn't revoke all privileges.
-
Allow creation of temporary tables with same name as the original table.
-
When granting a user a grant option for a database, he couldn't grant
privileges to other users.
-
New command:
SHOW GRANTS FOR user (by Sinisa).
-
New
date_add syntax: date/datetime + INTERVAL # interval_type.
By Joshua Chamas.
-
Fixed privilege check for
LOAD DATA REPLACE.
-
Automatic fixing of broken include files on Solaris 2.7
-
Some configure issues to fix problems with big file system detection.
-
REGEXP is now case insensitive if you use not binary strings.
Added patches for MIT-pthreads on NetBSD.
-
Fixed range bug in MyISAM.
-
ASC is now the default again for ORDER BY.
-
Added
LIMIT to UPDATE.
-
New client function:
mysql_change_user().
-
Added character set to
SHOW VARIABLES.
-
Added support of
--[whitespace] comments.
-
Allow
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.
-
Changed
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.
-
Changed output for
SHOW TABLE STATUS.
-
Added
DELAY_KEY_WRITE option to CREATE TABLE.
-
Allow
AUTO_INCREMENT on any key part.
-
Fixed problem with
YEAR(NOW()) and YEAR(CURDATE()).
-
Added
CASE construct.
-
New function
COALESCE().
-
Fixed range optimizer bug:
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.
-
Running
myisamchk without -a updated the index
distribution wrong.
-
SET SQL_LOW_PRIORITY_UPDATES=1 gave parse error before.
-
You can now update indexes columns that are used in the
WHERE clause.
UPDATE tbl_name SET KEY=KEY+1 WHERE KEY > 100
-
Date handling should now be a bit faster.
-
Added handling of fuzzy dates (dates where day or month is 0):
(Like: 1999-01-00)
-
Fixed optimization of
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.
-
Fixed
egcs 1.1.2 optimizer bug (when using BLOBs) on Linux Alpha.
-
Fixed problem with
LOCK TABLES combined with DELETE FROM table.
-
MyISAM tables now allow keys on
NULL and BLOB/TEXT columns.
-
The following join is now much faster:
SELECT ... FROM t1 LEFT JOIN t2 ON ... WHERE t2.not_null_column IS NULL.
-
ORDER BY and GROUP BY can be done on functions.
-
Changed handling of 'const_item' to allow handling of
ORDER BY RAND().
-
Indexes are now used for
WHERE key_column = function.
-
Indexes are now used for
WHERE key_column = column_name even if
the columns are not identically packed.
-
Indexes are now used for
WHERE column_name IS NULL.
-
Changed heap tables to be stored in low_byte_first order (to make it easy
to convert to MyISAM tables)
-
Automatic change of HEAP temporary tables to MyISAM tables in case of
'table is full' errors.
-
Added option
--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.
-
New keywords (required for
CASE): CASE, THEN, WHEN, ELSE and END.
-
New functions
EXPORT_SET() and MD5().
-
Support for the GB2312 Chinese character set.
-
Fixed some compilation problems.
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!
-
Fixed prototype in `my_ctype.h' when using other character sets.
-
Some configure issues to fix problems with big file system detection.
-
Fixed problem when sorting on big blob columns.
-
ROUND() will now work on Win32.
-
Fixed core dump with empty
BLOB/TEXT column to REVERSE().
-
Extended
/*! */ with version numbers.
-
Changed
SUBSTRING(text FROM pos) to conform to ANSI SQL. (Before this
construct returned the rightmost 'pos' characters).
-
Fixed problem with
LOCK TABLES combined with DELETE FROM table
-
Fixed problem that INSERT ... SELECT didn't use SQL_BIG_TABLES.
-
SET SQL_LOW_PRIORITY_UPDATES=# didn't work.
-
Password wasn't updated correctly if privileges didn't change on:
GRANT ... IDENTIFIED BY
-
Fixed range optimizer bug in
SELECT * FROM table_name WHERE key_part1 >= const AND (key_part2 = const OR key_part2 = const)
-
Fixed bug in compression key handling in NISAM.
-
Fixed some small problems with the installation.
-
DATA is not a reserved word anymore.
-
Fixed optimizer bug with tables with only one row.
-
Fixed bug when using
LOCK TABLES table_name READ; FLUSH TABLES;
-
Applied some patches for HP-UX.
-
isamchk should now work on Win32.
-
Changed `configure' to not use big file handling on Linux as this
crashes some RedHat 6.0 systems
-
Upgraded to use Autoconf 2.13, Automake 1.4 and
libtool 1.3.2.
-
Better support for SCO in
configure.
-
Added option
--defaults-file=### to option file handling to force use
of only one specific option file.
-
Extended
CREATE syntax to ignore MySQL 3.23 keywords.
-
Fixed deadlock problem when using
INSERT DELAYED on a table locked with
LOCK TABLES.
-
Fixed deadlock problem when using
DROP TABLE on a table that was
locked by another thread.
-
Add logging of
GRANT/REVOKE commands in the update log.
-
Fixed
isamchk to detect a new error condition.
-
Fixed bug in
NATURAL LEFT JOIN.
-
Fixed problem in the C API when you called
mysql_close() directly after
mysql_init().
-
Better client error message when you can't open socket.
-
Fixed
delayed_insert_thread counting when you couldn't create a new
delayed_insert thread.
-
Fixed bug in
CONCAT() with many arguments.
-
Added patches for DEC 3.2 and SCO.
-
Fixed path-bug when installing MySQL as a service on NT.
-
The MySQL-Win32 version is now compiled with VC++ 6.0 instead of
with VC++ 5.0.
-
New installation setup for MySQL-Win32.
-
Fixed problem with
DELETE FROM TABLE when table was locked by
another thread.
-
Fixed bug in
LEFT JOIN involving empty tables.
-
Changed the
mysql.db column from char(32) to char(60).
-
MODIFY and DELAYED are not reserved words anymore.
-
Fixed a bug when storing days in a
TIME column.
-
Fixed a problem with
Host '..' is not allowed to connect to this MySQL
server after one had inserted a new MySQL user with a GRANT
command.
-
Changed to use
TCP_NODELAY also on Linux (Should give faster TCP/IP
connections).
-
Fixed
STD() for big tables when result should be 0.
-
The update log didn't have newlines on some operating systems.
-
INSERT DELAYED had some garbage at end in the update log.
-
Fixed bug in
mysql_install_db (from 3.22.17).
-
Changed default key cache size to 8M.
-
Fixed problem with queries that needed temporary tables with
BLOB
columns.
-
Fixes a fatal problem in 3.22.17 on Linux; After
shutdown
all threads didn't die properly.
-
Added option
-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.
-
Fixed problem that a
VARCHAR column compared with CHAR column
didn't use keys efficiently.
-
Fixed a core dump problem when using
--log-update and connecting
without a default database.
-
Fixed some
configure and portability problems.
-
Using
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'
-
Extended
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.
-
Added the
MODIFY keyword to ALTER TABLE.
-
GRANT used with IDENTIFIED BY didn't take effect until privileges
were flushed.
-
Name change of some variables in
SHOW STATUS.
-
Fixed problem with
ORDER BY with 'only index' optimzation 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.
-
Fixed problems with
VARCHAR/BLOB on very short rows (< 4 bytes);
error 127 could occur when deleting rows.
-
Updating
BLOB/TEXT through formulas didn't work for short (< 256 char)
strings.
-
When you did a
GRANT on a new host, mysqld could die on the first
connect from this host.
-
Fixed bug when one used
ORDER BY on column name that was the same
name as an alias.
-
Added
BENCHMARK(loop_count,expression) function to time expressions.
-
Allow empty arguments to
mysqld to make it easier to start from shell
scripts.
-
Setting a
TIMESTAMP column to NULL didn't record the timestamp
value in the update log.
-
Fixed lock handler bug when one did
INSERT INTO TABLE ... SELECT ... GROUP BY.
-
Added a patch for
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.
-
Names for
user-defined functions are no longer case sensitive.
-
Added escape of
^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.
-
Saving
NOW(), CURDATE() or CURTIME() directly in a
column didn't work.
-
SELECT COUNT(*) ... LEFT JOIN ... didn't work with no WHERE part.
-
Updated `config.guess' to allow MySQL to configure on
UnixWare 7.0.x.
-
Changed the implementation of
pthread_cond() on the Win32 version.
get_lock() now correctly times out on Win32!
-
Fixed problem when using
DATE_ADD() and DATE_SUB() in a
WHERE clause.
-
You can now set the password for a user with the
GRANT ... TO user
IDENTIFIED BY 'password' syntax.
-
Fixed bug in
GRANT checking with SELECT on many tables.
-
Added missing file
mysql_fix_privilege_tables to the RPM
distribution. This is not run by default since it relies on the client
package.
-
Added option
SQL_SMALL_RESULT to SELECT to force use of
fast temporary tables when you know that the result set will be small.
-
Allow use of negative real numbers without a decimal point.
-
Day number is now adjusted to maximum days in month if the resulting month
after
DATE_ADD/DATE_SUB() doesn't have enough days.
-
Fix that
GRANT compares columns in case-insensitive fashion.
-
Fixed a bug in `sql_list.h' that made
ALTER TABLE dump core in
some contexts.
-
The hostname in
user@hostname can now include `.' and `-'
without quotes in the context of the GRANT, REVOKE and
SET PASSWORD FOR ... statements.
-
Fix for
isamchk for tables which need big temporary files.
-
IMPORTANT: You must run the
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.
-
Changed
USER() to return user@host
-
Changed the syntax for how to set
PASSWORD for another user.
-
New command
FLUSH STATUS that sets most status variables to zero.
-
New status variables:
aborted_threads, aborted_connects.
-
New option variable:
connection_timeout.
-
Added support for Thai sorting (by Pruet Boonma
-
Slovak and japanese error messages.
-
Configuration and portability fixes.
-
Added option
SET SQL_WARNINGS=1 to get a warning count also for simple
inserts.
-
MySQL now uses
SIGTERM instead of SIGQUIT with
shutdown to work better on FreeBSD.
-
Added option
\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.
-
New function
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.
-
Added
--bootstrap option to mysqld and recoded
mysql_install_db to use it. This will make it easier to install
MySQL with RPMs.
-
Changed
+, - (sign and minus), *, /, %,
ABS() and MOD() to be BIGINT aware (64-bit safe).
-
Fixed a bug in
ALTER TABLE that caused mysqld to crash.
-
MySQL now always reports the conflicting key values when a
duplicate key entry occurs. (Before this was only reported for
INSERT).
-
New syntax:
INSERT INTO tbl_name SET col_name=value,col_name=value,...
-
Most errors in the `.err' log are now prefixed with a time stamp.
-
Added option
MYSQL_INIT_COMMAND to mysql_options() to make
a query on connect or reconnect.
-
Added option
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.
-
Added
maybe_null to the UDF structure.
-
Added option
IGNORE to INSERT statemants with many rows.
-
Fixed some problems with sorting of the koi8 character sets; Users of koi8
MUST run
isamchk -rq on each table that has an index on
a CHAR or VARCHAR column.
-
New script
mysql_setpermission, by Luuk de Boer, allows one
to easily create new users with permissions for specific databases.
-
Allow use of hexadecimal strings (0x...) when specifying a constant string
(like in the column separators with
LOAD DATA INFILE).
-
Ported to OS/2 (thanks to Antony T. Curtis antony.curtis@olcs.net).
-
Added more variables to
SHOW STATUS and changed format of output to
be like SHOW VARIABLES.
-
Added
extended-status command to mysqladmin which will show the
new status variables.
-
SET SQL_LOG_UPDATE=0 caused a lockup of the server.
-
New SQL command:
FLUSH [ TABLES | HOSTS | LOGS | PRIVILEGES ] [, ...]
-
New SQL command:
KILL thread_id.
-
Added casts and changed include files to make MySQL easier to
compile on AIX and DEC OSF1 4.x
-
Fixed conversion problem when using
ALTER TABLE from a INT
to a short CHAR() column.
-
Added
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.
-
Moved wild_compare to string class to be able to use
LIKE on
BLOB/TEXT columns with \0.
-
Added
ESCAPE option to LIKE.
-
Added a lot more output to
mysqladmin debug.
-
You can now start
mysqld on Win32 with the --flush option.
This will flush all tables to disk after each update. This makes things
much safer on NT/Win98 but also MUCH slower.
-
Czech character sets should now work much better. You must also install
ftp://www.mysql.com/pub/mysql/Downloads/Patches/czech-3.22.8-patch.
This patch should also be installed if you are using a character set with
uses
my_strcoll()! The patch should always be safe to install (for any system),
but as this patch changes ISAM internals it's not yet in the default
distribution.
-
DATE_ADD() and DATE_SUB() didn't work with group functions.
-
mysql will now also try to reconnect on USE DATABASE commands.
-
Fix problem with
ORDER BY and LEFT JOIN and const tables.
-
Fixed problem with
ORDER BY if the first ORDER BY column
was a key and the rest of the ORDER BY columns wasn't part of the key.
-
Fixed a big problem with
OPTIMIZE TABLE.
-
MySQL clients on NT will now by default first try to connect with
named pipes and after this with TCP/IP.
-
Fixed a problem with
DROP TABLE and mysqladmin shutdown on Win32
(a fatal bug from 3.22.6).
-
Fixed problems with
TIME columns and negative strings.
-
Added an extra thread signal loop on shutdown to avoid some error messages
from the client.
-
MySQL now uses the next available number as extension for the update
log file.
-
Added patches for UNIXWARE 7.
-
Added
LIMIT clause for the DELETE statement.
-
You can now use the
/*! ... */ syntax to hide MySQL-specific
keywords when you write portable code. MySQL will parse the code
inside the comments as if the surrounding /*! and */ comment
characters didn't exist.
-
OPTIMIZE TABLE tbl_name can now be used to reclaim disk space
after many deletes. Currently, this uses ALTER TABLE to re-generate
the table, but in the future it will use an integrated isamchk
for more speed.
-
Upgraded
libtool to get the configure more portable.
-
Fixed slow
UPDATE and DELETE operations when using
DATETIME or DATE keys.
-
Changed optimizer to make it better at deciding when to do a full join
and when using keys.
-
You can now use
mysqladmin proc to display information about your own
threads. Only users with the Process_priv privilege can get
information about all threads.
-
Added handling of formats
YYMMDD, YYYYMMDD,
YYMMDDHHMMSS for numbers when using DATETIME and
TIMESTAMP types. (Formerly these formats only worked with strings.)
-
Added connect option
CLIENT_IGNORE_SPACE to allow use of spaces
after function names and before `(' (Powerbuilder requires this).
This will make all function names reserved words.
-
Added the
--log-long-format option to mysqld to enable timestamps
and INSERT_ID's in the update log.
-
Added
--where option to mysqldump (patch by Jim Faucette).
-
The lexical analyzer now uses ``perfect hashing'' for faster parsing of SQL
statements.
-
Faster
mysqldump.
-
For the
LOAD DATA INFILE statement, you can now use the new LOCAL
keyword to read the file from the client. mysqlimport will
automatically use LOCAL when importing with the TCP/IP protocol.
-
Fixed small optimize problem when updating keys.
-
Changed makefiles to support shared libraries.
-
MySQL-NT can now use named pipes, which means that you can now use
MySQL-NT without having to install TCP/IP.
-
Fixed a lock problem (bug in MySQL 3.22.1) when closing temporary tables.
-
Added missing
mysql_ping() to the client library.
-
Added
--compress option to all MySQL clients.
-
Changed
byte to char in `mysql.h' and `mysql_com.h'.
-
Searching on multiple constant keys that matched more than 30% of the rows
didn't always use the best possible key.
-
New functions
<<, >>, RPAD() and LPAD().
-
You can now save default options (like passwords) in a configuration file
(`my.cnf').
-
Lots of small changes to get
ORDER BY to work when no records are found
when using fields that are not in GROUP BY (MySQL extension).
-
Added
--chroot option to mysqld, to start mysqld in
a chroot environment (by Nikki Chumakov nikkic@cityline.ru).
-
Trailing spaces are now ignored when comparing case-sensitive strings;
this should fix some problems with ODBC and flag 512!
-
Fixed a core-dump bug in the range optimizer.
-
Added
--one-thread option to mysqld, for debugging with
LinuxThreads (or glibc). (This replaces the -T32 flag)
-
Added
DROP TABLE IF EXISTS to prevent an error from occurring if the
table doesn't exist.
-
IF and EXISTS are now reserved words (they would have to
be sooner or later).
-
Added lots of new options to
mysqldump.
-
Server error messages are now in `mysqld_error.h'.
-
The server/client protocol now supports compression.
-
All bug fixes from MySQL 3.21.32.
-
Added new C API function
mysql_ping().
-
Added new API functions
mysql_init() and mysql_options().
You now MUST call mysql_init() before you call
mysql_real_connect().
You don't have to call mysql_init() if you only use
mysql_connect().
-
Added
mysql_options(...,MYSQL_OPT_CONNECT_TIMEOUT,...) so you can set a
timeout for connecting to a server.
-
Added
--timeout option to mysqladmin, as a test of
mysql_options().
-
Added
AFTER column and FIRST options to
ALTER TABLE ... ADD columns.
This makes it possible to add a new column at some specific location
within a row in an existing table.
-
WEEK() now takes an optional argument to allow handling of weeks when
the week starts on Monday (some European countries). By default,
WEEK() assumes the week starts on Sunday.
-
TIME columns weren't stored properly (bug in MySQL 3.22.0).
-
UPDATE now returns information about how many rows were
matched and updated, and how many ``warnings'' occurred when doing the update.
-
Fixed incorrect result from
FORMAT(-100,2).
-
ENUM and SET columns were compared in binary (case-sensitive)
fashion; changed to be case insensitive.
-
New (backward compatible) connect protocol that allows you to
specify the database to use when connecting, to get much faster
connections to a specific database.
The
mysql_real_connect() call is changed to:
mysql_real_connect(MYSQL *mysql, const char *host, const char *user,
const char *passwd, const char *db, uint port,
const char *unix_socket, uint client_flag)
-
Each connection is handled by its own thread, rather than by the
master
accept() thread. This fixes permanently the telnet bug
that was a topic on the mail list some time ago.
-
All TCP/IP connections are now checked with backward resolution of
the hostname to get better security.
mysqld now has a local hostname
resolver cache so connections should actually be faster than before,
even with this feature.
-
A site automatically will be blocked from future connections if someone
repeatedly connects with an ``improper header'' (like when one uses telnet).
-
You can now refer to tables in different databases with references of the form
tbl_name@db_name or db_name.tbl_name. This makes it possible to
give a user read access to some tables and write access to others simply by
keeping them in different databases!
-
Added
--user option to mysqld, to allow it to run
as another Unix user (if it is started as the Unix root user).
-
Added caching of users and access rights (for faster access rights checking)
-
Normal users (not anonymous ones) can change their password with
mysqladmin password 'new_password'. This uses encrypted passwords
that are not logged in the normal MySQL log!
-
All important string functions are now coded in assembler for x86 Linux
machines. This gives a speedup of 10% in many cases.
-
For tables that have many columns, the column names are now hashed for
much faster column name lookup (this will speed up some benchmark
tests a lot!)
-
Some benchmarks are changed to get better individual timing.
(Some loops were so short that a specific test took < 2 seconds. The
loops have been changed to take about 20 seconds to make it easier
to compare different databases. A test that took 1-2 seconds before
now takes 11-24 seconds, which is much better)
-
Re-arranged
SELECT code to handle some very specific queries
involving group functions (like COUNT(*)) without a GROUP BY but
with HAVING. The following now works:
mysql> SELECT count(*) as C FROM table HAVING C > 1;
-
Changed the protocol for field functions to be faster and avoid some
calls to
malloc().
-
Added
-T32 option to mysqld, for running all queries under the
main thread. This makes it possible to debug mysqld under Linux with
gdb!
-
Added optimization of
not_null_column IS NULL (needed for some Access
queries).
-
Allow
STRAIGHT_JOIN to be used between two tables to force the optimizer
to join them in a specific order.
-
String functions now return
VARCHAR rather than CHAR and
the column type is now VARCHAR for fields saved as VARCHAR.
This should make the MyODBC driver better, but may break some old
MySQL clients that don't handle FIELD_TYPE_VARCHAR the same
way as FIELD_TYPE_CHAR.
-
CREATE INDEX and DROP INDEX are now implemented through
ALTER TABLE.
CREATE TABLE is still the recommended (fast) way to create indexes.
-
Added
--set-variable option wait_timeout to mysqld.
-
Added time column to
mysqladmin processlist to show how long a query
has taken or how long a thread has slept.
-
Added lots of new variables to
show variables and some new to
show status.
-
Added new type
YEAR. YEAR is stored in 1 byte with allowable
values of 0, and 1901 to 2155.
-
Added new
DATE type that is stored in 3 bytes rather than 4 bytes.
All new tables are created with the new date type if you don't use the
--old-protocol option to mysqld.
-
Fixed bug in record caches; for some queries, you could get
Error from table handler: # on some operating systems.
-
Added
--enable-assembler option to configure, for x86 machines
(tested on Linux + gcc). This will enable assembler functions for the
most important string functions for more speed!
-
Fixed problem when sending
SIGHUP to mysqld;
mysqld core dumped when starting from boot on some systems.
-
Fixed problem with losing a little memory for some connections.
-
DELETE FROM tbl_name without a WHERE condition is now done the
long way when you use LOCK TABLES or if the table is in use, to
avoid race conditions.
-
INSERT INTO TABLE (timestamp_column) VALUES (NULL); didn't set timestamp.
-
Fixed some possible race conditions when doing many reopen/close on the same
tables under heavy load! This can happen if you execute
mysqladmin
refresh often. This could in some very rare cases corrupt the header of the
index file and cause error 126 or 138.
-
Fixed fatal bug in
refresh() when running with the --skip-locking
option.
There was a ``very small'' time gap after a mysqladmin refresh when
a table could be corrupted if one thread updated a table while another
thread did mysqladmin refresh and another thread started a new update
ont the same table before the first thread had finished.
A refresh (or --flush-tables) will now not return until all used tables
are closed!
-
SELECT DISTINCT with a WHERE clause that didn't match any rows
returned a row in some contexts (bug only in 3.21.31).
-
GROUP BY + ORDER BY returned one empty row when no rows where
found.
-
Fixed a bug in the range optimizer that wrote
Use_count: Wrong count for ... in the error log file.
-
Fixed a sign extension problem for the
TINYINT type on Irix.
-
Fixed problem with
LEFT("constant_string",function).
-
Fixed problem with
FIND_IN_SET().
-
LEFT JOIN core dumped if the second table is used with a constant
WHERE/ON expression that uniquely identifies one record.
-
Fixed problems with
DATE_FORMAT() and incorrect dates.
DATE_FORMAT() now ignores '%' to make it possible to extend
it more easily in the future.
-
mysql now returns an exit code > 0 if the query returned an error.
-
Saving of command line history to file in
mysql client.
By Tommy Larsen tommy@mix.hive.no.
-
Fixed problem with empty lines that were ignored in `mysql.cc'.
-
Save the pid of the signal handler thread in the pid file instead
of the pid of the main thread.
-
Added patch by tommy@valley.ne.jp to support Japanese characters
SJIS and UJIS.
-
Changed
safe_mysqld to redirect startup messages to
'hostname'.err instead
of 'hostname'.log to reclaim file space on mysqladmin refresh.
-
ENUM always had the first entry as default value.
-
ALTER TABLE wrote two entries to the update log.
-
sql_acc() now closes the mysql grant tables after a reload to
save table space and memory.
-
Changed
LOAD DATA to use less memory with tables and BLOB
columns.
-
Sorting on a function which made a division / 0 produced a wrong set
in some cases.
-
Fixed
SELECT problem with LEFT() when using the czech character
set.
-
Fixed problem in
isamchk; it couldn't repair a packed table in a very
unusual case.
-
SELECT statements with & or | (bit functions) failed on
columns with NULL values.
-
When comparing a field = field, where one of the fields was a part key,
only the length of the part key was compared.
-
LOCK TABLES + DELETE from tbl_name never removed locks properly.
-
Fixed problem when grouping on an
OR function.
-
Fixed permission problem with
umask() and creating new databases.
-
Fixed permission problem on result file with
SELECT ... INTO OUTFILE ...
-
Fixed problem in range optimizer (core dump) for a very complex query.
-
Fixed problem when using
MIN(integer) or MAX(integer) in
GROUP BY.
-
Fixed bug on Alpha when using integer keys. (Other keys worked on Alpha).
-
Fixed bug in
WEEK("XXXX-xx-01").
-
Fixed socket permission (clients couldn't connect to Unix socket on Linux).
-
Fixed bug in record caches; for some queries, you could get
Error from table handler: # on some operating systems.
-
Added user level lock functions
GET_LOCK(string,timeout),
RELEASE_LOCK(string).
-
Added
opened_tables to show status.
-
Changed connect timeout to 3 seconds to make it somewhat harder
for crackers to kill
mysqld through telnet + TCP/IP.
-
Fixed bug in range optimizer when using
WHERE key_part_1 >= something AND key_part_2 <= something_else.
-
Changed
configure for detection of FreeBSD 3.0 9803xx and above
-
WHERE with string_column_key = constant_string didn't always find
all rows if the column had many values differing only with characters of
the same sort value (like e and 'e).
-
Strings keys looked up with 'ref' were not compared in case-sensitive fashion.
-
Added
umask() to make log files non-readable for normal users.
-
Ignore users with old (8-byte) password on startup if not using
--old-protocol option to mysqld.
-
SELECT which matched all key fields returned the values in the
case of the matched values, not of the found values. (Minor problem.)
-
FROM_DAYS(0) now returns "0000-00-00".
-
In
DATE_FORMAT(), PM and AM were swapped for hours 00 and 12.
-
Extended the default maximum key size to 256.
-
Fixed bug when using
BLOB/TEXT in GROUP BY with many
tables.
-
An
ENUM field that is not declared NOT NULL has NULL as
the default value.
(Previously, the default value was the first enumeration value.)
-
Fixed bug in the join optimizer code when using many part keys
on the same key:
INDEX (Organization,Surname(35),Initials(35)).
-
Added some tests to the table order optimizer to get some cases with
SELECT ... FROM many_tables much faster.
-
Added a retry loop around
accept() to possibly fix some problems on some
Linux machines.
-
Changed
typedef 'string' to typedef 'my_string' for better
portability.
-
You can now kill threads that are waiting on a disk full condition.
-
Fixed some problems with UDF functions.
-
Added long options to
isamchk. Try isamchk --help.
-
Fixed a bug when using 8 bytes long (alpha);
filesort() didn't work.
Affects DISTINCT, ORDER BY and GROUP BY on 64-bit
processors.
-
Dynamic loadable functions. Based on source from Alexis Mikhailov.
-
You couldn't delete from a table if no one had done a
SELECT on the
table.
-
Fixed problem with range optimizer with many
OR operators on key parts
inside each other.
-
Recoded
MIN() and MAX() to work properly with strings and
HAVING.
-
Changed default umask value for new files from
0664 to 0660.
-
Fixed problem with
LEFT JOIN and constant expressions in the ON
part.
-
Added Italian error messages from brenno@dewinter.com.
-
configure now works better on OSF1 (tested on 4.0D).
-
Added hooks to allow
LIKE optimization with international character
support.
-
Upgraded
DBI to 0.93.
-
The following symbols are now reserved words:
TIME, DATE, TIMESTAMP, TEXT, BIT,
ENUM, NO, ACTION, CHECK, YEAR,
MONTH, DAY, HOUR, MINUTE, SECOND,
STATUS, VARIABLES.
-
Setting a
TIMESTAMP to NULL in LOAD DATA INFILE ... didn't
set the current time for the TIMESTAMP.
-
Fix
BETWEEN to recognize binary strings. Now BETWEEN is
case sensitive.
-
Added
--skip-thread-priority option to mysqld, for systems
where mysqld's thread scheduling doesn't work properly (BSDI 3.1).
-
Added ODBC functions
DAYNAME() and MONTHNAME().
-
Added function
TIME_FORMAT(). This works like DATE_FORMAT(),
but takes a time string ('HH:MM:DD') as argument.
-
Fixed unlikely(?) key optimizer bug when using
ORs of key parts
inside ANDs.
-
Added command
variables to mysqladmin.
-
A lot of small changes to the binary releases.
-
Fixed a bug in the new protocol from MySQL 3.21.20.
-
Changed
ALTER TABLE to work with Win32 (Win32 can't rename open files).
Also fixed a couple of small bugs in the Win32 version.
-
All standard MySQL clients are now ported to MySQL-Win32.
-
MySQL can now be started as a service on NT.
-
Configure changes for some operating systems.
-
Fixed optimizer bug when using
WHERE data_field = date_field2 AND date_field2 = constant.
-
Added command
SHOW STATUS.
-
Removed `manual.ps' from the source distribution to make it smaller.
-
Changed the maximum table name and column name lengths from 32 to 64.
-
Aliases can now be of ``any'' length.
-
Fixed
mysqladmin stat to return the right number of queries.
-
Changed protocol (downward compatible) to mark if a column has the
AUTO_INCREMENT attribute or is a TIMESTAMP. This is needed for
the new Java driver.
-
Added Hebrew sorting order by Zeev Suraski.
-
Solaris 2.6: Fixed
configure bugs and increased maximum table size
from 2G to 4G.
-
Upgraded
DBD to 1823. This version implements mysql_use_result in
DBD-Mysql.
-
Benchmarks updated for empress (by Luuk).
-
Fixed a case of slow range searching.
-
Configure fixes (`Docs' directory).
-
Added function
REVERSE() (by Zeev Suraski).
-
Issue error message if client C functions are called in wrong order.
-
Added automatic reconnect to the `libmysql.c' library. If a write command
fails, an automatic reconnect is done.
-
Small sort sets no longer use temporary files.
-
Upgraded
DBI to 0.91.
-
Fixed a couple of problems with
LEFT OUTER JOIN.
-
Added
CROSS JOIN syntax. CROSS is now a reserved word.
-
Recoded
yacc/bison stack allocation to be even safer and to allow
MySQL to handle even bigger expressions.
-
Fixed a couple of problems with the update log.
-
ORDER BY was slow when used with key ranges.
-
Changed documentation string of
--with-unix-socket-path to avoid
confusion.
-
Added ODBC and ANSI SQL style
LEFT OUTER JOIN.
-
The following are new reserved words:
LEFT, NATURAL,
USING.
-
The client library now uses the value of the environment variable
MYSQL_HOST as the default host if it's defined.
-
SELECT col_name, SUM(expr) now returns NULL for col_name
when there are matching rows.
-
Fixed problem with comparing binary strings and
BLOBs with ASCII
characters over 127.
-
Fixed lock problem: when freeing a read lock on a table with multiple
read locks, a thread waiting for a write lock would have been given the lock.
This shouldn't affect data integrity, but could possibly make
mysqld
restart if one thread was reading data that another thread modified.
-
LIMIT offset,count didn't work in INSERT ... SELECT.
-
Optimized key block caching. This will be quicker than the old algorithm when
using bigger key caches.
-
Added ODBC 2.0 & 3.0 functions
POWER(), SPACE(),
COT(), DEGREES(), RADIANS(), ROUND(2 arg)
and TRUNCATE().
-
WARNING: INCOMPATIBLE CHANGE!!
LOCATE() parameters were
swapped according to ODBC standard. Fixed.
-
Added function
TIME_TO_SEC().
-
In some cases, default values were not used for
NOT NULL fields.
-
Timestamp wasn't always updated properly in
UPDATE SET ... statements.
-
Allow empty strings as default values for
BLOB and TEXT, to
be compatible with mysqldump.
-
WARNING: INCOMPATIBLE CHANGE!!
mysqlperl is now from
Msql-Mysql-modules. This means that connect() now takes
host, database, user, password arguments! The old
version took host, database, password, user.
-
Allow
DATE '1997-01-01', TIME '12:10:10' and
TIMESTAMP '1997-01-01 12:10:10' formats required by ANSI SQL.
WARNING: INCOMPATIBLE CHANGE!! This has the unfortunate
side-effect that you no longer can have columns named DATE, TIME
or TIMESTAMP. :( Old columns can still be accessed through
tablename.columnname!)
-
Changed Makefiles to hopefully work better with BSD systems. Also,
`manual.dvi' is now included in the distribution to avoid having stupid
make programs trying to rebuild it.
-
readline library upgraded to version 2.1.
-
A new sortorder german-1. That is a normal ISO-Latin1 with a german sort
order.
-
Perl
DBI/DBD is now included in the distribution. DBI
is now the recommended way to connect to MySQL from Perl.
-
New portable benchmark suite with
DBD, with test results from
mSQL 2.0.3, MySQL, PostgreSQL 6.2.1 and Solid server 2.2.
-
crash-me is now included with the benchmarks; This is a Perl program
designed to find as many limits as possible in a SQL server. Tested with
mSQL, PostgreSQL, Solid and MySQL.
-
Fixed bug in range-optimizer that crashed MySQL on some queries.
-
Table and column name completion for
mysql command line tool, by Zeev
Suraski and Andi Gutmans.
-
Added new command
REPLACE that works like INSERT but
replaces conflicting records with the new record. REPLACE INTO
TABLE ... SELECT ... works also.
-
Added new commands
CREATE DATABASE db_name and DROP
DATABASE db_name.
-
Added
RENAME option to ALTER TABLE: ALTER TABLE name
RENAME AS new_name.
-
make_binary_distribution now includes `libgcc.a' in
`libmysqlclient.a'. This should make linking work for people who don't
have gcc.
-
Changed
net_write() to my_net_write() because of a name
conflict with Sybase.
-
New function
DAYOFWEEK() compatible with ODBC.
-
Stack checking and
bison memory overrun checking to make MySQL
safer with weird queries.
-
Fixed a couple of small
configure problems on some platforms.
-
Ported to SCO Openserver 5.0.4 with FSU Pthreads.
-
HP-UX 10.20 should work.
-
Added new function
DATE_FORMAT().
-
Added
NOT IN.
-
Added automatic removal of 'ODBC function conversions':
{fn now() }
-
Handle ODBC 2.50.3 option flags.
-
Fixed comparison of
DATE and TIME values with NULL.
-
Changed language name from germany to german to be consistent with
the other language names.
-
Fixed sorting problem on functions returning a
FLOAT. Previously, the
values were converted to INTs before sorting.
-
Fixed slow sorting when sorting on key field when using
key_column=constant.
-
Sorting on calculated
DOUBLE values sorted on integer results instead.
-
mysql no longer needs a database argument.
-
Changed the place where
HAVING should be. According to ANSI, it should
be after GROUP BY but before ORDER BY. MySQL 3.20
incorrectly had it last.
-
Added Sybase command
USE DATABASE to start using another database.
-
Added automatic adjusting of number of connections and table cache size
if the maximum number of files that can be opened is less than needed.
This should fix that
mysqld doesn't crash even if you haven't done a
ulimit -n 256 before starting mysqld.
-
Added lots of limit checks to make it safer when running with too little
memory or when doing weird queries.
-
Added retry of interrupted reads and clearing of
errno.
This makes Linux systems much safer!
-
Fixed locking bug when using many aliases on the same table in the same
SELECT.
-
Fixed bug with
LIKE on number key.
-
New error message so you can check whether the connection was lost while
the command was running or whether the connection was down from the start.
-
Added
--table option to mysql to print in table format.
Moved time and row information after query result.
Added automatic reconnect of lost connections.
-
Added
!= as a synonym for <>.
-
Added function
VERSION() to make easier logs.
-
New multi-user test `tests/fork_test.pl' to put some strain on the
thread library.
-
Fixed
ftruncate() call in MIT-pthreads. This made isamchk
destroy the `.ISM' files on (Free)BSD 2.x systems.
-
Fixed broken
__P_ patch in MIT-pthreads.
-
Many memory overrun checks. All string functions now return
NULL
if the returned string should be longer than max_allowed_packet bytes.
-
Changed the name of the
INTERVAL type to ENUM, because
INTERVAL is used in ANSI SQL.
-
In some cases, doing a
JOIN + GROUP + INTO OUTFILE,
the result wasn't grouped.
-
LIKE with '_' as last character didn't work. Fixed.
-
Added extended ANSI SQL
TRIM() function.
-
Added
CURTIME().
-
Added
ENCRYPT() function by Zeev Suraski.
-
Fixed better
FOREIGN KEY syntax skipping. New reserved words:
MATCH, FULL, PARTIAL.
-
mysqld now allows IP number and hostname to the --bind-address
option.
-
Added
SET OPTION CHARACTER SET cp1251_koi8 to enable conversions of
data to/from cp1251_koi8.
-
Lots of changes for Win95 port. In theory, this version should now be
easily portable to Win95.
-
Changed the
CREATE COLUMN syntax of NOT NULL columns to be after
the DEFAULT value, as specified in the ANSI SQL standard. This will
make mysqldump with NOT NULL and default values incompatible with
MySQL 3.20.
-
Added many function name aliases so the functions can be used with
ODBC or ANSI SQL92 syntax.
-
Fixed syntax of
ALTER TABLE tbl_name ALTER COLUMN col_name SET DEFAULT
NULL.
-
Added
CHAR and BIT as synonyms for CHAR(1).
-
Fixed core dump when updating as a user who has only select privilege.
-
INSERT ... SELECT ... GROUP BY didn't work in some cases. An
Invalid use of group function error occurred.
-
When using
LIMIT, SELECT now always uses keys instead of record
scan. This will give better performance on SELECT and a WHERE
that matches many rows.
-
Added Russian error messages.
-
Configure changes.
-
MySQL now works with the new thread library on BSD/OS 3.0.
-
Added new group functions
BIT_OR() and BIT_AND().
-
Added compatibility functions
CHECK and REFERENCES.
CHECK is now a reserved word.
-
Added
ALL option to GRANT for better compatibility. (GRANT
is still a dummy function.)
-
Added partly-translated dutch messages.
-
Fixed bug in
ORDER BY and GROUP BY with NULL columns.
-
Added function
last_insert_id() to retrieve last AUTO_INCREMENT
value. This is intended for clients to ODBC that can't use the
mysql_insert_id() API function, but can be used by any client.
-
Added
--flush-logs option to mysqladmin.
-
Added command
STATUS to mysql.
-
Fixed problem with
ORDER BY/GROUP BY because of bug in gcc.
-
Fixed problem with
INSERT ... SELECT ... GROUP BY.
-
New
mysqlaccess.
-
CREATE now supports all ODBC types and the mSQL TEXT type.
All ODBC 2.5 functions are also supported (added REPEAT). This provides
better portability.
-
Added text types
TINYTEXT, TEXT, MEDIUMTEXT and
LONGTEXT. These are actually BLOBtypes, but all searching is
done in case-insensitive fashion.
-
All old
BLOB fields are now TEXT fields. This only
changes that all searching on strings is done in case-sensitive fashion.
You must do an ALTER TABLE and change the field type to BLOB
if you want to have tests done in case-sensitive fashion.
-
Fixed some
configure issues.
-
Made the locking code a bit safer. Fixed very unlikely
deadlock situation.
-
Fixed a couple of bugs in the range optimizer. Now the new range benchmark
test-select works.
-
Added
--enable-unix-socket=pathname option to configure.
-
Fixed a couple of portability problems with include files.
-
Fixed bug in range calculation that could return empty
set when searching on multiple key with only one entry (very rare).
-
Most things ported to FSU Pthreads, which should allow MySQL to
run on SCO. See section 4.11.12 SCO notes.
-
Works now in Solaris 2.6.
-
Added handling of calculation of
SUM() functions.
For example, you can now use SUM(column)/COUNT(column).
-
Added handling of trigometric functions:
PI(), ACOS(), ASIN(), ATAN(), COS(),
SIN() and TAN().
-
New languages: norwegian, norwegian-ny and portuguese.
-
Fixed parameter bug in
net_print() in `procedure.cc'.
-
Fixed a couple of memory leaks.
-
Now allow also the old
SELECT ... INTO OUTFILE syntax.
-
Fixed bug with
GROUP BY and SELECT on key with many values.
-
mysql_fetch_lengths() sometimes returned incorrect lengths when you used
mysql_use_result(). This affected at least some cases of
mysqldump --quick.
-
Fixed bug in optimization of
WHERE const op field.
-
Fixed problem when sorting on
NULL fields.
-
Fixed a couple of 64-bit (Alpha) problems.
-
Added
--pid-file=# option to mysqld.
-
Added date formatting to
FROM_UNIXTIME(), originally by Zeev Suraski.
-
Fixed bug in
BETWEEN in range optimizer (Did only test = of the first
argument).
-
Added machine-dependent files for MIT-pthreads i386-SCO. There is probably
more to do to get this to work on SCO 3.5.
-
Changed `Makefile.am' to take advantage of Automake 1.2.
-
Added the beginnings of a benchmark suite.
-
Added more secure password handling.
-
Added new client function
mysql_errno(), to get the error number of
the error message. This makes error checking in the client much easier.
This makes the new server incompatible with the 3.20.x server when running
without --old-protocol. The client code is backward compatible.
More information can be found in the `README' file!
-
Fixed some problems when using very long, illegal names.
-
Fixed more portability issues (incorrect
sigwait and sigset
defines).
-
configure should now be able to detect the last argument to
accept().
-
Should now work with FreeBSD 3.0 if used with
`FreeBSD-3.0-libc_r-1.0.diff',
which can be found at http://www.mysql.com/Download/Patches.
-
Added new option
-O tmp_table_size=# to mysqld.
-
New function
FROM_UNIXTIME(timestamp) which returns a date string in
'YYYY-MM-DD HH:MM:DD' format.
-
New function
SEC_TO_TIME(seconds) which returns a string in
'HH:MM:SS' format.
-
New function
SUBSTRING_INDEX(), originally by Zeev Suraski.
-
Should now configure and compile on OSF1 4.0 with the DEC compiler.
-
Configuration and compilation on BSD/OS 3.0 works, but due to some bugs in
BSD/OS 3.0,
mysqld doesn't work on it yet.
-
Configuration and compilation on FreeBSD 3.0 works, but I couldn't get
pthread_create to work.
-
Added reverse check lookup of hostnames to get better security.
-
Fixed some possible buffer overflows if filenames that are too long are used.
-
mysqld doesn't accept hostnames that start with digits followed by a
'.', because the hostname may look like an IP number.
-
Added
--skip-networking option to mysqld, to only allow socket
connections. (This will not work with MIT-pthreads!)
-
Added check of too long table names for alias.
-
Added check if database name is okay.
-
Added check if too long table names.
-
Removed incorrect
free() that killed the server on
CREATE DATABASE or DROP DATABASE.
-
Changed some
mysqld -O options to better names.
-
Added
-O join_cache_size=# option to mysqld.
-
Added
-O max_join_size=# option to mysqld, to be able to set a
limit how big queries (in this case big = slow) one should be able to handle
without specifying SET OPTION SQL_BIG_SELECTS=1. A # = is about 10
examined records. The default is ``unlimited''.
-
When comparing a
TIME, DATE, DATETIME or TIMESTAMP
column to a constant, the constant is converted to a time value before
performing the comparison.
This will make it easier to get ODBC (particularly Access97) to work with
the above types. It should also make dates easier to use and the comparisons
should be quicker than before.
-
Applied patch from Jochen Wiedmann that allows
query() in
mysqlperl to take a query with \0 in it.
-
Storing a timestamp with a 2-digit year (
YYMMDD) didn't work.
-
Fix that timestamp wasn't automatically updated if set in an
UPDATE
clause.
-
Now the automatic timestamp field is the FIRST timestamp field.
-
SELECT * INTO OUTFILE, which didn't correctly if the outfile already
existed.
-
mysql now shows the thread ID when starting or doing a reconnect.
-
Changed the default sort buffer size from 2M to 1M.
Changes from 3.20.18 to 3.20.32b are not documented here since the
3.21 release branched here. And the relevant changes are also
documented as changes to the 3.21 version.
-
You can now use
BLOB columns and the functions IS NULL and
IS NOT NULL in the WHERE clause.
-
All communication packets and row buffers are now allocated dynamically
on demand. The default value of
max_allowed_packet is now 64K for
the server and 512K for the client. This is mainly used to catch
incorrect packets that could trash all memory. The server limit may be
changed when it is started.
-
Changed stack usage to use less memory.
-
Changed
safe_mysqld to check for running daemon.
-
The
ELT() function is renamed to FIELD(). The new
ELT() function returns a value based on an index: FIELD()
is the inverse of ELT() Example: ELT(2,"A","B","C") returns
"B". FIELD("B","A","B","C") returns 2.
-
COUNT(field), where field could have a NULL value, now
works.
-
A couple of bugs fixed in
SELECT ... GROUP BY.
-
Fixed memory overrun bug in
WHERE with many unoptimizable brace levels.
-
Fixed some small bugs in the grant code.
-
If hostname isn't found by
get_hostname, only the IP is checked.
Previously, you got Access denied.
-
Inserts of timestamps with values didn't always work.
-
INSERT INTO ... SELECT ... WHERE could give the error
Duplicated field.
-
Added some tests to
safe_mysqld to make it ``safer''.
-
LIKE was case sensitive in some places and case insensitive in others.
Now LIKE is always case insensitive.
-
`mysql.cc': Allow
'#' anywhere on the line.
-
New command
SET OPTION SQL_SELECT_LIMIT=#. See the FAQ for more details.
-
New version of the
mysqlaccess script.
-
Change
FROM_DAYS() and WEEKDAY() to also take a full
TIMESTAMP or DATETIME as argument. Before they only took a
number of type YYYYMMDD or YYMMDD.
-
Added new function
UNIX_TIMESTAMP(timestamp_column).
-
More changes in MIT-pthreads to get them safer. Fixed also some link
bugs at least in SunOS.
-
Changed
mysqld to work around a bug in MIT-pthreads. This makes multiple
small SELECT operations 20 times faster. Now lock_test.pl should
work.
-
Added
mysql_FetchHash(handle) to mysqlperl.
-
The
mysqlbug script is now distributed built to allow for reporting
bugs that appear during the build with it.
-
Changed `libmysql.c' to prefer
getpwuid() instead of
cuserid().
-
Fixed bug in
SELECT optimizer when using many tables with the same
column used as key to different tables.
-
Added new latin2 and Russian KOI8 character tables.
-
Added support for a dummy
GRANT command to satisfy Powerbuilder.
-
Fixed fatal bug
packets out of order when using MIT-pthreads.
-
Removed possible loop when a thread waits for command from client
and
fcntl() fails. Thanks to Mike Bretz for finding this bug.
-
Changed alarm loop in `mysqld.cc' because shutdown didn't always
succeed in Linux.
-
Removed use of
termbits from `mysql.cc'. This conflicted with
glibc 2.0.
-
Fixed some syntax errors for at least BSD and Linux.
-
Fixed bug when doing a
SELECT as superuser without a database.
-
Fixed bug when doing
SELECT with group calculation to outfile.
-
If one gives
-p or --password option to mysql without
an argument, the user is solicited for the password from the tty.
-
Added default password from
MYSQL_PWD (by Elmar Haneke).
-
Added command
kill to mysqladmin to kill a specific
MySQL thread.
-
Sometimes when doing a reconnect on a down connection this succeeded
first on second try.
-
Fixed adding an
AUTO_INCREMENT key with ALTER_TABLE.
-
AVG() gave too small value on some SELECTs with
GROUP BY and ORDER BY.
-
Added new
DATETIME type (by Giovanni Maruzzelli
-
Fixed that define
DONT_USE_DEFAULT_FIELDS works.
-
Changed to use a thread to handle alarms instead of signals on Solaris to
avoid race conditions.
-
Fixed default length of signed numbers. (George Harvey
-
Allow anything for
CREATE INDEX.
-
Add prezeros when packing numbers to
DATE, TIME and
TIMESTAMP.
-
Fixed a bug in
OR of multiple tables (gave empty set).
-
Added many patches to MIT-pthreads. This fixes at least one lookup bug.
-
Added ANSI SQL94
DATE and TIME types.
-
Fixed bug in
SELECT with AND-OR levels.
-
Added support for Slovenian characters. The `Contrib' directory contains
source and instructions for adding other character sets.
-
Fixed bug with
LIMIT and ORDER BY.
-
Allow
ORDER BY and GROUP BY on items that aren't in the
SELECT list.
(Thanks to Wim Bonis bonis@kiss.de, for pointing this out.)
-
Allow setting of timestamp values in
INSERT.
-
Fixed bug with
SELECT ... WHERE ... = NULL.
-
Added changes for
glibc 2.0. To get glibc to work, you should
add the `gibc-2.0-sigwait-patch' before compiling glibc.
-
Fixed bug in
ALTER TABLE when changing a NOT NULL field to
allow NULL values.
-
Added some ANSI92 synonyms as field types to
CREATE TABLE.
CREATE TABLE now allows FLOAT(4) and FLOAT(8) to mean
FLOAT and DOUBLE.
-
New utility program
mysqlaccess by Yves.Carlier@rug.ac.be.
This program shows the access rights for a specific user and the grant
rows that determine this grant.
-
Added
WHERE const op field (by bonis@kiss.de).
-
When using
SELECT ... INTO OUTFILE, all temporary tables are ISAM
instead of HEAP to allow big dumps.
-
Changed date functions to be string functions. This fixed some ``funny''
side effects when sorting on dates.
-
Extended
ALTER TABLE according to SQL92.
-
Some minor compability changes.
-
Added
--port and --socket options to all utility programs and
mysqld.
-
Fixed MIT-pthreads
readdir_r(). Now mysqladmin create database
and mysqladmin drop database should work.
-
Changed MIT-pthreads to use our
tempnam(). This should fix the ``sort
aborted'' bug.
-
Added sync of records count in
sql_update. This fixed slow updates
on first connection. (Thanks to Vaclav Bittner for the test.)
-
New insert type:
INSERT INTO ... SELECT ...
-
MEDIUMBLOB fixed.
-
Fixed bug in
ALTER TABLE and BLOBs.
-
SELECT ... INTO OUTFILE now creates the file in the current
database directory.
-
DROP TABLE now can take a list of tables.
-
Oracle synonym
DESCRIBE (DESC).
-
Changes to
make_binary_distribution.
-
Added some comments to installation instructions about
configure's
C++ link test.
-
Added
--without-perl option to configure.
-
Lots of small portability changes.
-
ALTER TABLE didn't copy null bit. As a result, fields that were allowed
to have NULL values were always NULL.
-
CREATE didn't take numbers as DEFAULT.
-
Some compatibility changes for SunOS.
-
Removed `config.cache' from old distribution.
-
Fixed bug with
ALTER TABLE and multi-part keys.
-
New commands:
ALTER TABLE, SELECT ... INTO OUTFILE and
LOAD DATA INFILE.
-
New function:
NOW().
-
Added new field file_priv to
mysql/user table.
-
New script
add_file_priv which adds the new field file_priv
to the user table. This script must be executed if you want to
use the new SELECT ... INTO and LOAD DATA INFILE ... commands
with a version of MySQL earlier than 3.20.7.
-
Fixed bug in locking code, which made
lock_test.pl test fail.
-
New files `NEW' and `BUGS'.
-
Changed `select_test.c' and `insert_test.c' to include
`config.h'.
-
Added command
status to mysqladmin for short logging.
-
Increased maximum number of keys to 16 and maximum number of key parts to 15.
-
Use of sub keys. A key may now be a prefix of a string field.
-
Added
-k option to mysqlshow, to get key information for a table.
-
Added long options to
mysqldump.
-
Portable to more systems because of MIT-pthreads, which will
be used automatically if
configure cannot find a -lpthreads
library.
-
Added GNU-style long options to almost all programs. Test with
program --help.
-
Some shared library support for Linux.
-
The FAQ is now in `.texi' format and is available in `.html',
`.txt' and `.ps' formats.
-
Added new SQL function
RAND([init]).
-
Changed
sql_lex to handle \0 unquoted, but the client can't send
the query through the C API, because it takes a str pointer.
You must use mysql_real_query() to send the query.
-
Added API function
mysql_get_client_info().
-
mysqld now uses the N_MAX_KEY_LENGTH from `nisam.h' as
the maximum allowed key length.
-
The following now works:
mysql> SELECT filter_nr,filter_nr FROM filter ORDER BY filter_nr;
Previously, this resulted in the error:
Column: 'filter_nr' in order clause is ambiguous.
-
mysql now outputs '\0', '\t', '\n' and '\\'
when encountering ASCII 0, tab, newline or '\' while writing
tab-separated output.
This is to allow printing of binary data in a portable format.
To get the old behavior, use -r (or --raw).
-
Added german error messages (60 of 80 error messages translated).
-
Added new API function
mysql_fetch_lengths(MYSQL_RES *), which
returns an array of of column lengths (of type uint).
-
Fixed bug with
IS NULL in WHERE clause.
-
Changed the optimizer a little to get better results when searching on a key
part.
-
Added
SELECT option STRAIGHT_JOIN to tell the optimizer that
it should join tables in the given order.
-
Added support for comments starting with
'--' in `mysql.cc'
(Postgres syntax).
-
You can have
SELECT expressions and table columns in a SELECT
which are not used in the group part. This makes it efficient to implement
lookups. The column that is used should be a constant for each group because
the value is calculated only once for the first row that is found for a group.
mysql> SELECT id,lookup.text,sum(*) FROM test,lookup
WHERE test.id=lookup.id GROUP BY id;
-
Fixed bug in
SUM(function) (could cause a core dump).
-
Changed
AUTO_INCREMENT placement in the SQL query:
INSERT into table (auto_field) values (0);
inserted 0, but it should insert an AUTO_INCREMENT value.
-
`mysqlshow.c': Added number of records in table. Had to change the
client code a little to fix this.
-
mysql now allows doubled '' or "" within strings for
embedded ' or ".
-
New math functions:
EXP(), LOG(), SQRT(), ROUND(), CEILING().
-
The
configure source now compiles a thread-free client library
-lmysqlclient. This is the only library that needs to be linked
with client applications. When using the binary releases, you must
link with -lmysql -lmysys -ldbug -lstrings as before.
-
New
readline library from bash-2.0.
-
LOTS of small changes to
configure and makefiles (and related source).
-
It should now be possible to compile in another directory using
VPATH. Tested with GNU Make 3.75.
-
safe_mysqld and mysql.server changed to be more compatible
between the source and the binary releases.
-
LIMIT now takes one or two numeric arguments.
If one argument is given, it indicates the maximum number of rows in
a result. If two arguments are given, the first argument indicates the offset
of the first row to return, the second is the maximum number of rows.
With this it's easy to do a poor man's next page/previous page WWW
application.
-
Changed name of SQL function
FIELDS() to ELT().
Changed SQL function INTERVALL() to INTERVAL().
-
Made
SHOW COLUMNS a synonym for SHOW FIELDS.
Added compatibility syntax FRIEND KEY to CREATE TABLE. In
MySQL, this creates a non-unique key on the given columns.
-
Added
CREATE INDEX and DROP INDEX as compatibility functions.
In MySQL, CREATE INDEX only checks if the index exists and
issues an error if it doesn't exist. DROP INDEX always succeeds.
-
`mysqladmin.c': added client version to version information.
-
Fixed core dump bug in
sql_acl (core on new connection).
-
Removed
host, user and db tables from database test
in the distribution.
-
FIELD_TYPE_CHAR can now be signed (-128 - 127) or unsigned (0 - 255)
Previously, it was always unsigned.
-
Bug fixes in
CONCAT() and WEEKDAY().
-
Changed a lot of source to get
mysqld to be compiled with SunPro
compiler.
-
SQL functions must now have a
'(' immediately after the function name
(no intervening space).
For example, 'user(' is regarded as beginning a function call, and
'user (' is regarded as an identifier user followed by a
'(', not as a function call.
-
The source distribution is done with
configure and Automake.
It will make porting much easier. The readline library is included
in the distribution.
-
Separate client compilation:
the client code should be very easy to compile on systems which
don't have threads.
-
The old Perl interface code is automatically compiled and installed.
Automatic compiling of
DBD will follow when the new DBD code
is ported.
-
Dynamic language support:
mysqld can now be started with Swedish
or English (default) error messages.
-
New functions:
INSERT(), RTRIM(), LTRIM() and
FORMAT().
-
mysqldump now works correctly for all field types (even
AUTO_INCREMENT). The format for SHOW FIELDS FROM tbl_name
is changed so the Type column contains information suitable for
CREATE TABLE. In previous releases, some CREATE TABLE
information had to be patched when recreating tables.
-
Some parser bugs from 3.19.5 (
BLOB and TIMESTAMP) are corrected.
TIMESTAMP now returns different date information depending on its
create length.
-
Changed parser to allow a database, table or field name to
start with a number or
'_'.
-
All old C code from Unireg changed to C++ and cleaned up. This makes
the daemon a little smaller and easier to understand.
-
A lot of small bug fixes done.
-
New `INSTALL' files (not final version) and some info regarding porting.
-
Some new functions, some more optimization on joins.
-
Should now compile clean on Linux (2.0.x).
-
Added functions
DATABASE(), USER(), POW(),
LOG10() (needed for ODBC).
-
In a
WHERE with an ORDER BY on fields from only one table,
the table is now preferred as first table in a multi-join.
-
HAVING and IS NULL or IS NOT NULL now works.
-
A group on one column and a sort on a group function (
SUM(),
AVG()...) didn't work together. Fixed.
-
mysqldump: Didn't send password to server.
-
Fixed horrible locking bug when inserting in one thread and reading
in another thread.
-
Fixed one-off decimal bug. 1.00 was output as 1.0.
-
Added attribute
'Locked' to process list as info if a query is
locked by another query.
-
Fixed full magic timestamp. Timestamp length may now be 14, 12, 10, 8, 6, 4
or 2 bytes.
-
Sort on some numeric functions could sort incorrectly on last number.
-
IF(arg,syntax_error,syntax_error) crashed.
-
Added functions
CEILING(), ROUND(), EXP(), LOG() and SQRT().
-
Enhanced
BETWEEN to handle strings.
-
Fixed
SELECT with grouping on BLOB columns not to return
incorrect BLOB info. Grouping, sorting and distinct on BLOB
columns will not yet work as
expected (probably it will group/sort by the first 7 characters in the
BLOB). Grouping on formulas with a fixed string size (use MID()
on a BLOB) should work.
-
When doing a full join (no direct keys) on multiple tables with
BLOB
fields, the BLOB was garbage on output.
-
Fixed
DISTINCT with calculated columns.
Go to the first, previous, next, last section, table of contents.

|