Changes in release 3.20.22

* Fixed fatal bug when using WHERE field=field. The result was that the select
  returned 0 records even if there was a match. (The case was a very unlikely
  one. The bug has been unnoticed about 6 months)
* Fixed bug when using: SELECT WHERE A=const1 OR A=const2 OR A=const3,
  and const1 = const3. In this case a key over A=const1 was wrongly used and
  A=const2 wasn't used.
* Added a fix for Visual Fox Base so that any schema name from a table
  specification is automaticly removed.
* A new version of mysqlaccess, thanks to Yves.Carlier@rug.ac.be.

Changes in release 3.20.21

* Updated the INSTALL files
* Some small portability changes
* Fixed server hang bug when using DELETE ... WHERE 1=1
* Fixed bug in WHERE: x >= const wasn't the same as const <= x.
  The above problem was only for const items on the left side of the
  test.

Changes in release 3.20.20

* Fixed a bug in specific AND/OR key combination which returned 0 records.
* Fixed GROUP BY and LIMIT
* Some portability fixes
* Changed privileges according to suggestion from Paul D Smith:
  Now if one doesn't supply a password then only those entries with doesn't
  have a password in 'user' is checked and vice versa.  
* Moved mysql_install_db to scripts directory for binary release.
* new version of mysqlaccess (1.2-1)
* Fixed Linux-mysqld problem that pid file wasn't removed with
  linuxthreads 0.6

Changes in release 3.20.19

* Fixed bug in acl with anonymous user:  Now if one gets accepted by the user
  table as a empty user name, the user name is set to '' when checking against
  the 'db' and 'host' tables.
* Fixed ORDER BY bug when selecting on very small tables that made the
  optimizer use a full join.
* Added expr BETWEEN expr2 AND expr3.
* Fixed crash when doing 'field = constant AND field like field' and
  all field refereed to the same column.
* Fixed wrong test with --basedir.
* Changed make_binary_release and safe_mysqld to look after language files in
  share/mysql/...

Changes in release 3.20.18

* Added -p# (remove # directories from path) to isamlog.
  All files are written with a relative path from the database directory
  Now mysqld shouldn't crash on shutdown when using --log-isam. 
* New mysqlperl version. Is now compatible with msqlperl-0.63.
* New DBD module available in Contrib/
* Added group function STD() (standard derivation).
* The mysql server is now by default compiled without debugging information.
  This will make the demon smaller and faster.
* Now one usually only have to give --basedir to mysqld. All other paths
  are relative in a normal installation.
* BLOBs contained sometimes garbage when used with a SELECT on more than
  one table and ORDER BY.
* Fixed that calculations that are not in GROUP BY works as expected.
  (ANSI SQL extension)
  Example: SELECT id,id+1 FROM table GROUP BY id
* The test of using MYSQL_PWD was reversed. Now MYSQL_PWD is enabled as default
  in the default release.
* Fixed convert bug which got mysqld to core dump with Aritmetic error on
  Sparc-386
* Added option --unbuffered to mysql. (For new mysqlaccess)
* When using overlapping (unnecessary keys) and join over many tables
  the optimizer could get confused and return 0 records.

Changes in release 3.20.17

* One can now use BLOBs columns and the functions IS NULL and IS NOT NULL
  in the WHERE clause.
* All communication packages and row buffers are now alloced dynamicly on
  demand.
  The default 'max_allowed_packet is now 65K for the server and 512K for the
  client. This is mainly used to catch wrong 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 demon.
* The ELT() function is renamed to FIELD().
  The new ELT() function returns a value based on a index:
  FIELD() is the invers 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 bug 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. Before one
  one got 'Access denies'
* Inserts of timestamps with values didn't always work.
* INSERT INTO ... SELECT .. WHERE could give the error
  'Dupplicated field'
* Added some tests to safe_mysqld to make it 'safer'
* LIKE was case sensitive in some places and case insensitive in other.
  Now LIKE is always case insensitive.
* mysql.cc; Allow '#' anywhere on the line.
* New command 'SET OPTION SQL_SELECT_LIMIT=#'. Se the FAQ for more details.
* New version of the mysqlaccess script
* Change from_days() and weekday() to also take a full timestamp or
  a datetime as argument. Before they only took a number of type YYYYMMDD or
  YYMMDD.
* Added new function unix_timestamp(timestamp_column);

Changes in release 3.20.16

* More changes in MIT threads to get them safer. Fixed also some link
  bugs at least in SUNOS.
* Changed mysqld to go around a bug in MIT threads. This makes multiple
  small selects 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 to use getpwuid() insted of cuserid().
* Fixed bug in select optimizer when using many tables with the same
  column used as key to different tables.
* mysql.cc; Allow '#' anywhere on the line.
* Added new latin2 and Russian KOI8 character tables.
* Added support for a dummy GRANT command satisfy Powerbuilder.
* LIKE was case sensitive in some places and case insensitive in other.
  Now LIKE is always case insensitive.


Changes in release 3.20.15

* Fixed fatal bug 'packets out of order' when using MIT threads. 
* Removed possible loop when 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.


Changes in release 3.20.14

* If one gives '-p' or -password to mysql without an argument,
  the password will be asked from the tty.
* Added default password from MYSQL_PWD. (by Elmar Haneke)
* Added commando '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 a 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 <maruzz@matrice.it>)
* 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 <georgeh@pinacl.co.uk>)
* 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 threads. This fixes at least one lookup bug.


Changes in release 3.20.13

* 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 to add other character sets.
* Fixed bug with limit and order by.
* Allow order and group on items that isn'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 one should add the
  gibc-2.0-sigwait-patch before compiling glibc.
* Fixed bug in alter table when changeing a not null field to allow NULLs.
* Added some ANS92 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 which determinate this grant.
* Added WHERE const op field (by bonis@kiss.de)


Changes in release 3.20.11

* 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 to all utility programs and mysqld.
* Fixed MIT threads readdir_r(). Now mysqladmin create database and drop
  database should work.
* Changed MIT threads 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)


Changes in release 3.20.10

* 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 can now take a list of tables.
* Oracle synonym DESCRIBE (DESC)
* Changes to make_binary_distribution
* Added some comments about conifgures c++ link test to INSTALL-SOURCE.
* Added --without-perl to configure.
* Lot's of small portability changes.


Changes in release 3.20.9

* Alter table didn't copy null bit. This resulted that NULL fields where
  always NULL.
* CREATE didn't take numbers as DEFAULT.
* Some compatibility changes for SunOS.
* Removed config.cache from old distribution.


Changes in release 3.20.8

* Fixed bug with ALTER TABLE and multi part keys.


Changes in release 3.20.7

* New commands: ALTER TABLE, SELECT ... INTO OUTFILE and LOAD DATA INFILE.

* New functions: NOW()

* Added new field: file_priv to mysql/user table.

* New scripts 'add_file_priv' which add the new field 'file_priv'
  to the user table. This scripts must be executed if one wants to
  use the new SELECT ... INTO and LOAD DATA INFILE...  commands
  with a version of mysql less than 3.20.7.

* Fixed bug in locking code, with 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 max keys to 16 and max key parts to 15.

* Use of sub keys. A key may now be a prefix of a string field.

* Added option -k for mysqlshow to get key info for table.

* Added long options to mysqldump.


Changes in release 3.20.6

* Portable to more systems because of MIT threads. This will
  automatically be used is configure can not find a -lpthreads library.

* 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, .text, .ps,

* 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.
  one have to 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 max allowed key
  length.

* The following now works: "select filter_nr,filter_nr from filter order by
  filter_nr"
  Before you got the error: "Column: 'filter_nr' in order clause is ambiguous"

* mysql now outputs \0 \t \n and \\ when writing tab separated output.
  when encountering ascii 0, tab, newline or \. This is to allow printing of
  binary data in a portable format.
  To get 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 a 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 of comment starting with '--' in mysql.cc (Postgres syntax)

* You can now have select_expressions and table columns in a select which
  are not used in the group part. This makes it efficient to implement lookups.
  If the not used column is not a constant for the group the column value
  is unspecified.
  Example: SELECT id,lookup.text,sum(*) FROM test,lookup
	   WHERE test.id=lookup.id group by id;

* Fixed bug in SUM(function) (Could make core dump)

* Changed auto_increment according to SQL_SYNTAX:
  INSERT into table (auto_field) values (0) inserted 0, but the SQL_SYNTAX
  stated it should insert a 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 double '' or "" in strings for embedded ' or ".

* New math functions:  EXP, LOG, SQRT, ROUND, CEILING


Changes in release 3.20.3

* The configure source now compiles a thread free client library 'mysqlclient'
  This is the only library that needs to be linked with client applications.
  When using the binary releases one have to link with '-lmysql
  -lmysys -ldbug -lstrings' as before.

* New readline from bash-2.0.

* LOTS of small changes to configure and makefiles (and related source).

* There 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 takes now one or two numerical arguments.
  If one argument the argument indicates the maximum number of rows in
  a result. If two arguments the first arguments says the offset to
  the first row to return, the second is the maximum number of rows.
  With this it's easy to do a poor mans 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. This creates in mysql
  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 gives an error if it doesn't
  exists. DROP INDEX always succeeds.

* mysqladmin.c: Added client version to version info.

* 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)
  Before it was always unsigned.

* Bug fixes in concat(), weekday()

* changed a lot of source to get mysqld to be compiled with SUNPRO compiler.

* sql functions must now have a '(' directly after the function name.
  user '(' is now regarded as an identifier and a '('

Changes in releases 3.20.0

* The source distribution is done with configure and automake:
  It will make porting much easier.  Readline is included in the
  distribution.

* Separate client compilation:
  The client code should be very easy to compile on system which
  doesn't have threads.

* The old perl interface code is automaticly 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 table' is changed
  so the 'type' column contains info suitable for 'CREATE TABLE'.
  In previous releases some CREATE TABLE info had to be patched to
  when recreating tables

* Some parser bugs from 3.19.5 (blob and timestamp) are corrected.
  Timestamp now returns different date info depending of it's
  create length.

* Changed parser to allow a database name, table name and field name to
  start with a number or '_'.

* All old C code from UNIREG changed to c++ and cleaned up. This makes
  the demon 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.

Changes in release 3.19.5

* 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 a 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.

Changes in release 3.19.4

* Fixed horrible locking bug when inserting in one thread and reading
  on another thread.
* Fixed one-off decimal bug.  1.00 was outputed 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.
* sort on some number functions could be sorted wrong on last number.
* if(arg,syntax_error,syntax_error) crashed.
* added functions ceiling() and round(), exp(), log() and sqrt()
* enchanted BETWEEN to handle strings.

Changes in release 3.19.3

* Fixed that select with grouping on blob's doesn't return wrong blob
  info. grouping, sorting and distinct on blobs will not yet work as
  expected (Probably it will group/sort by the first 7 characters in
  the blob). Groping on formulas with a fixed string size (use mid on
  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.
