|
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.
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!
|