|  |  
 
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  Mise à jour de  a 3.21 vers 3.22.
 
3.22 should also be used with the new DBD-mysql(1.20xx) driver
that can use the new connect protocol! 
Fixed core dump with empty BLOB/TEXTcolumn toREVERSE().
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 TABLEScombined withDELETE 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.
 
DATAis 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.
isamchkshould 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 libtool1.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 CREATEsyntax to ignoreMySQL 3.23keywords.
Fixed deadlock problem when using INSERT DELAYEDon a table locked withLOCK TABLES.
Fixed deadlock problem when using DROP TABLEon a table that was
locked by another thread.
Add logging of GRANT/REVOKEcommands in the update log.
Fixed isamchkto detect a new error condition.
Fixed bug in NATURAL LEFT JOIN. 
Fixed problem in the C API when you called mysql_close()directly aftermysql_init().
Better client error message when you can't open socket.
Fixed delayed_insert_threadcounting 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 TABLEwhen table was locked by
another thread.
Fixed bug in LEFT JOINinvolving empty tables.
Changed the mysql.dbcolumn fromchar(32)tochar(60).
MODIFYandDELAYEDare not reserved words anymore.
Fixed a bug when storing days in a TIMEcolumn.
Fixed a problem with Host '..' is not allowed to connect to this MySQL
serverafter one had inserted a new MySQL user with aGRANTcommand.
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 DELAYEDhad 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 requêtesthat needed temporary tables with BLOBcolumns. 
Fixes a fatal problem in 3.22.17 on Linux;  After shutdownall threads didn't die properly.
Added option -O flush-time=#tomysqld.  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 VARCHARcolumn compared withCHARcolumn
didn't use keys efficiently. 
Fixed a core dump problem when using --log-updateand connecting
without a default database.
Fixed some configureand portability problems.
Using LEFT JOINon tables that had circular dependencies causedmysqldto hang forever. 
mysqladmin processlistcould kill the server if a new user logged in.
DELETE FROM nom_table WHERE key_column=nom_colonnedidn't find any matching
rows.  Fixed.
DATE_ADD(column,...)didn't work.
INSERT DELAYEDcould deadlock with status 'upgrading lock'
Extended ENCRYPT()to take longer salt strings than 2 characters.
longlong2stris now much faster than before.  ForIntel x86platforms, this function is written in optimized assembler.
Added the MODIFYkeyword toALTER TABLE. 
GRANTused withIDENTIFIED BYdidn't take effect until privileges
were flushed.
Name change of some variables in SHOW STATUS.
Fixed problem with ORDER BYwith 'only index' optimzation when there
were multiple key definitions for a used column.
DATEandDATETIMEcolumns are now up to 5 times faster than
before.
INSERT DELAYEDcan 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 INFILEdidn't work in the Unix version because of
a missing file.
Fixed problems with VARCHAR/BLOBon very short rows (< 4 bytes);
error 127 could occur when deleting rows.
Updating BLOB/TEXTthrough formulas didn't work for short (< 256 char)
strings.
When you did a GRANTon a new host,mysqldcould die on the first
connect from this host.
Fixed bug when one used ORDER BYon column name that was the same
name as an alias.
Added BENCHMARK(loop-count,expression)function to time expressions. 
Allow empty arguments to mysqldto make it easier to start from shell
scripts.
Setting a TIMESTAMPcolumn toNULLdidn'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\Zas^Zdoesn't
work with pipes on Win32.
mysql_fix_privilegesadds a new column to themysql.functo
support aggregate UDF functions in future MySQL releases. 
Saving NOW(),CURDATE()orCURTIME()directly in a
column didn't work.
SELECT COUNT(*) ... LEFT JOIN ...didn't work with noWHEREpart.
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()andDATE_SUB()in aWHEREclause.
You can now set the password for a user with the GRANT ... TO user
IDENTIFIED BY 'password'syntax.
Fixed bug in GRANTchecking withSELECTon many tables.
Added missing file mysql_fix_privilege_tablesto the RPM
distribution. This is not run by default since it relies on the client
package.
Added option SQL_SMALL_RESULTtoSELECTto 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 max days in month if the resulting month
after DATE_ADD/DATE_SUB()doesn't have enough days.
Fix that GRANTcompares columns in case-insensitive fashion.
Fixed a bug in `sql_list.h' that made ALTER TABLEdump core in
some contexts.
The hostname in user@hostnamecan now include `.' and `-'
without quotes in the context of theGRANT,REVOKEandSET PASSWORD FOR ...statements.
Fix for isamchkfor tables which need big temporary files. 
IMPORTANT: You must run the mysql_fix_privilege_tablesscript
when you upgrade to this version!  This is needed because of the newGRANTsystem. If you don't do this, you will getAccess
deniedwhen you try to useALTER TABLE,CREATE INDEXorDROP INDEX.
GRANTto allow/deny users table and column access.
Changed USER()to returnuser@host
Changed the syntax for how to set PASSWORDfor another user.
New command FLUSH STATUSthat 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=1to get a warning count also for simple
inserts.
MySQL now uses SIGTERMinstead ofSIGQUITwith
shutdown to work better on FreeBSD.
Added option \G(print vertically) tomysql.
SELECT HIGH_PRIORITY... killedmysqld.
IS NULLon aAUTO_INCREMENTcolumn in aLEFT JOINdidn't
work as expected.
New function MAKE_SET(). 
mysql_install_dbno longer starts the MySQL server!  You
should startmysqldwithsafe_mysqldafter installing it!  The
MySQL RPM will however start the server as before.
Added --bootstrapoption tomysqldand recodedmysql_install_dbto use it.  This will make it easier to install
MySQL with RPMs.
Changed +,-(sign and minus),*,/,%,ABS()andMOD()to beBIGINTaware (64-bit safe).
Fixed a bug in ALTER TABLEthat causedmysqldto 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 nom_table SET nom_colonne=value,nom_colonne=value,...
Most errors in the `.err' log are now prefixed with a time stamp.
Added option MYSQL_INIT_COMMANDtomysql_options()to make
a query on connect or reconnect.
Added option MYSQL_READ_DEFAULT_FILEandMYSQL_READ_DEFAULT_GROUPtomysql_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_nullto the UDF structure.
Added option IGNOREtoINSERTstatemants with many rows.
Fixed some problems with sorting of the koi8 character sets; Users of koi8
MUST run isamchk -rqon each table that has an index on
aCHARorVARCHARcolumn.
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 STATUSand changed format of output to
be likeSHOW VARIABLES.
Added extended-statuscommand tomysqladminwhich will show the
new status variables. 
SET SQL_LOG_UPDATE=0caused a lockup of the server.
New SQL command:  FLUSH [ TABLES | HOSTS | LOGS | PRIVILEGES ] [, ...]
New SQL command:  KILLthread_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 TABLEfrom aINTto a shortCHAR()column.
Added SELECT HIGH_PRIORITY; This will get a lock for theSELECTeven if there is a thread waiting for anotherSELECTto get aWRITE LOCK.
Moved wild_compare to string class to be able to use LIKEonBLOB/TEXTcolumns with\0.
Added ESCAPEoption toLIKE.
Added a lot more output to mysqladmin debug.
You can now start mysqldon Win32 with the--flushoption.
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()andDATE_SUB()didn't work with group functions.
mysqlwill now also try to reconnect onUSE DATABASEcommands.
Fix problem with ORDER BYandLEFT JOINandconsttables.
Fixed problem with ORDER BYif the firstORDER BYcolumn
was a key and the rest of theORDER BYcolumns 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 TABLEandmysqladmin shutdownon Win32
(a fatal bug from 3.22.6).
Fixed problems with TIME columnsand 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 LIMITclause for theDELETEstatement.
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 nom_tablecan now be used to reclaim disk space
after many deletes.  Currently, this usesALTER TABLEto re-generate
the table, but in the future it will use an integratedisamchkfor more speed.
Upgraded libtoolto get the configure more portable.
Fixed slow UPDATEandDELETEoperations when usingDATETIMEorDATEkeys.
Changed optimizer to make it better at deciding when to do a full join
and when using keys.
You can now use mysqladmin procto 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,YYMMDDHHMMSSfor numbers when usingDATETIMEandTIMESTAMPtypes. (Formerly these formats only worked with strings.)
Added connect option CLIENT_IGNORE_SPACEto allow use of spaces
after function names and before `(' (Powerbuilder requires this).
This will make all function names reserved words.
Added the --log-long-formatoption tomysqldto enable timestamps
and INSERT_ID's in the update log.
Added --whereoption tomysqldump(patch by Jim Faucette).
The lexical analyzer now uses ``perfect hashing'' for faster parsing of SQL
statements.
 
Faster mysqldump.
For the LOAD DATA INFILEstatement, you can now use the newLOCALkeyword to read the file from the client.mysqlimportwill
automatically useLOCALwhen 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 --compressoption to all MySQL clients.
Changed bytetocharin `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()andLPAD().
You can now save default options (like passwords) in a configuration file
(`my.cnf').
Lots of small changes to get ORDER BYto work when no records are found
when using fields that are not inGROUP BY(MySQL extension).
Added --chrootoption tomysqld, to startmysqldin
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-threadoption tomysqld, for debugging with
LinuxThreads (orglibc).  (This replaces the-T32flag)
Added DROP TABLE IF EXISTSto prevent an error from occurring if the
table doesn't exist.
IFandEXISTSare 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()andmysql_options().
You now MUST callmysql_init()before you callmysql_real_connect().
You don't have to callmysql_init()if you only usemysql_connect().
Added mysql_options(...,MYSQL_OPT_CONNECT_TIMEOUT,...)so you can set a
timeout for connecting to a server.
Added --timeoutoption tomysqladmin, as a test ofmysql_options().
Added AFTER columnandFIRSToptions toALTER 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.
TIMEcolumns weren't stored properly (bug in MySQL 3.22.0).
UPDATEnow 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).
ENUMandSETcolumns 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. mysqldnow 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
nom_table@nom_base_de_donneesornom_base_de_donnees.nom_table.  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 --useroption tomysqld, to allow it to run
as another Unix user (if it is started as the Unixrootuser).
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 SELECTcode to handle some very specific queries
involving group functions (likeCOUNT(*)) without aGROUP BYbut
withHAVING. 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 -T32option tomysqld, for running all requêtesunder the
main thread.  This makes it possible to debugmysqldunder Linux withgdb!
Added optimization of not_null_column IS NULL(needed for some Access
queries).
Allow STRAIGHT_JOINto be used between two tables to force the optimizer
to join them in a specific order.
String functions now return VARCHARrather thanCHARand
the column type is nowVARCHARfor fields saved asVARCHAR.
This should make the MyODBC driver better, but may break some old
MySQL clients that don't handleFIELD_TYPE_VARCHARthe same
way asFIELD_TYPE_CHAR.
CREATE INDEXandDROP INDEXare now implemented throughALTER TABLE.CREATE TABLEis still the recommended (fast) way to create indexes.
Added --set-variableoptionwait_timeouttomysqld.
Added time column to mysqladmin processlistto show how long a query
has taken or how long a thread has slept.
Added lots of new variables to show variablesand some new toshow status.
Added new type YEAR.YEARis stored in 1 byte with allowable
values of 0, and 1901 to 2155.
Added new DATEtype 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-protocoloption tomysqld.
Fixed bug in record caches; for some queries, you could get
Error from table handler: #on some operating systems.
Added --enable-assembleroption toconfigure, for x86 machines
(tested on Linux +gcc).  This will enable assembler functions for the
most important string functions for more speed! |