Changes in release 3.21.0
-------------------------
* New reserved words used: `INTERVAL', `EXPLAIN', `READ', `WRITE',
`BINARY'.
* Added ODBC function `CHAR(num,...)'.
* New operator `IN'. This uses a binary search to find a match.
* New command `LOCK TABLES tbl_name [AS alias] {READ|WRITE} ...'
* Added `--log-update' option to `mysqld', to get a log suitable for
incremental updates.
* New command `EXPLAIN SELECT ...' to get information about how the
optimizer will do the join.
* For easier client code, the client should no longer use
`FIELD_TYPE_TINY_BLOB', `FIELD_TYPE_MEDIUM_BLOB',
`FIELD_TYPE_LONG_BLOB' or `FIELD_TYPE_VAR_STRING' (as previously
returned by `mysql_list_fields'). You should instead only use
`FIELD_TYPE_BLOB' or `FIELD_TYPE_STRING'. If you want exact
types, you should use the command `SHOW FIELDS'.
* Added varbinary syntax: `0x######' which can be used as a string
(default) or a number.
* `FIELD_TYPE_CHAR' is renamed to `FIELD_TYPE_TINY'.
* Changed all fields to C++ classes.
* Removed FORM struct.
* Fields with `DEFAULT' values no longer need to be `NOT NULL'.
* New field types:
`ENUM'
A string which can take only a couple of defined values. The
value is stored as a 1-3 byte number that is mapped
automatically to a string. This is sorted according to
string positions!
`SET'
A string which may have one or many string values separated
with ','. The string is stored as a 1-, 2-, 3-, 4- or 8-byte
number where each bit stands for a specific set member. This
is sorted according to the unsigned value of the stored
packed number.
* Now all function calculation is done with `double' or `long long'.
This will provide the full 64-bit range with bit functions and fix
some conversions that previously could result in precision losses.
One should avoid using `unsigned long long' columns with full
64-bit range (numbers bigger than 9223372036854775807) because
calculations are done with `signed long long'.
* `ORDER BY' will now put `NULL' field values first. `GROUP BY' will
also work with `NULL' values.
* Full `WHERE' with expressions.
* New range optimizer that can resolve ranges when some keypart
prefix is constant. Example:
mysql> SELECT * FROM tbl_name
WHERE key_part_1="customer"
AND key_part_2>=10 AND key_part_2<=10;