Changes in release 3.22.0
-------------------------
* 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!