Go to the first, previous, next, last section, table of contents.
The 3.22 version has a faster and safer connect code and a lot of new nice
enhancements. This reason for not including these changes in the 3.21 version
is mainly because we are trying to avoid big changes to 3.21 to keep is as
stable as possible. As there isn't really any MAJOR changes, upgrading to
3.22 should be very easy and painless.
3.22 includes also the new DBD-mysql (1.1830) driver that can use the
new connect protocol!
-
Added new C-API function: mysql_ping().
-
Added new API functions: mysql_init() and mysql_options().
One MUST now call mysql_init() before one calls mysql_real_connect().
One doesn't have to call mysql_init() if one only uses mysql_connect().
-
Added mysql_option(..,MYSQL_OPT_CONNECT_TIMEOUT) so one can set a
timeout for connecting to a server.
-
Added --timeout argument to mysqladmin (as a test of mysql_options()).
-
Added options AFTER column and FIRST to ALTER TABLE ... ADD columns.
This makes is possible to add a new column at some specific location
in an old table.
-
WEEK() now takes an optional argument to allow handling of weeks when
week starts on Monday (Some European countries), or Sunday.
The default WEEK() assumes week start on Sunday().
-
TIME columns wasn't stored properly (bug in MySQL 3.22.0).
-
UPDATE now returns a update information about how many rows was
matched, updated and if one got any 'warnings' when doing the update.
-
Fixed wrong result from 'format(-100,2)'.
-
enum() and set() columns was compared binary; Changed to be case insensitive.
-
New (backward compatible) connect protocol that allows one to
specify the database to use when connecting to get much faster
onnections to a specific database.
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 it's own thread, instead 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 resolving of
the hostname to get better security. mysqld has now a local hostname
resolve cache so connections should actually be faster than before
even with this feature.
-
A site will automaticly be blocked from future connections if one
repeatedly connects with a 'improper header' (like when one uses telnet)
-
One can now reference to tables in different databases with:
table@database or database.table. This makes it possible to give a users
read access to some tables and write access to others by simple keeping
them in different databases!
-
If mysqld is started as root, it can now change to be run as another user
with the new --user option.
-
Added cacheing of users & access rights (for faster access rights checking)
-
Normal users (not anonymous ones) can change ones password with
mysqladmin password 'new_password'. This uses crypted 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 for get better individual timing.
(Some loops was so short that a specific test took < 2 seconds. The
loops has been changed to take about 20 seconds to make it easier
to compare different databases. 1 <-> 2 before is now 11 <-> 24
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.
SELECT count(*) as C from TABLE HAVING C > 1
-
Changed the protocol for field functions to be faster and avoid some
mallocs().
-
Added flag -T32 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 one to use STRAIGHT_JOIN between two tables to force the optimizer
to join them in a specific order.
-
String functions now return VARCHAR() instead of 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 doesn't handle FIELD_TYPE_VARCHAR identical as
FIELD_TYPE_CHAR.
-
CREATE INDEX and DROP INDEX are now implemented trough ALTER TABLE.
CREATE TABLE is still the recommended (fast) way to create indexes.
-
Added option wait_timeout to mysqld.
-
Added time column to 'mysqladmin processes' to show how long a query
has taken or how long a thread has sleeped.
-
Lots of new varibles to 'show variables' and some new to 'show status'
-
Added new type: YEAR. YEAR is stored on 1 byte with range 0, 1901-2155.
-
Added new DATE type that is stored on 3 bytes instead of 4. All new
tables will created with the new date type if one doesn't use
--old-protocol.
-
Fixed bug in record caches; One could get 'Error from table handler: #'
on some OS from some queries.
-
New configure option for x86 machines (tested on Linux + gcc):
--enable-assembler. This will enable assembler functions for the most
important string functions for more speed!
-
Fixed a sign extension problem for the type 'tiny' on IRIX.
-
Fixed problem with left("constant_string",function).
-
Fixed problem with find_in_set().
-
LEFT JOIN core dumped if the second table is used with a constant
WHERE/ON expression with uniquely identifies one record.
-
Fixed problems with date_format() and wrong dates.
date_format() now ignores '%' to make it possible to extend it more easily in
the future.
-
'mysql' now returns a exit code > 0 if the query returned an error.
-
Save of command line history to file in mysql client.
by Tommy Larsen <tommy@mix.hive.no>
-
Fixed problem with empty lines that was ignored in mysql.cc
-
Save the pid of the signal handler thread in the pid file instead
of the pid of the main thread.
-
Added patch by tommy@valley.ne.jp to support Japanese characters
SJIS and UJIS.
-
Changed safe_mysqld to redirect startup messages to 'hostname'.err instead
of 'hostname'.log to reclaim file space on 'mysqladmin refresh'
-
enum() had always the first entry as default value.
-
ALTER TABLE wrote two entires to the update log.
-
sql_acc() now closes the mysql privilige tables after a reload to
save table space and memory.
-
Changed LOAD DATA to use less memory with tables and blobs.
-
Sorting on a function which made a division / 0 produced a wrong set
in some cases.
-
Fixed select problem with LEFT() when using the czech character set.
-
Fixed problem in isamchk; It couldn't repair a packed table in a very
unusual case.
-
Selects with & or | (bit functions) failed on columns with NULL values.
-
When comparing a field = field, where one of the fields was a part key,
only the length of the part key was compared.
-
LOCK TABLES + 'DELETE from table' never removed locks properly.
-
Fixed problem when grouping on a OR function.
-
Fixed permission problem with umask() and creating new databases.
-
Fixed permission problem on result file with SELECT ... INTO OUTFILE...
-
Fixed problem in range optimizer (core dump) for a very complex query.
-
Fixed problem when using MIN(integer) or MAX(integer) in GROUP BY.
-
Fixed bug on Alpha when using integer keys. (Other keys worked on Alpha).
-
Fixed bug in WEEK("XXXX-xx-01").
-
Fixed socket permission (clients couldn't connect to unix socket on Linux).
-
Fixed bug in record caches; One could get 'Error from table handler: #'
on some OS from some queries.
-
Added user level locks: GET_LOCK(string,timeout), RELEASE_LOCK(string)
-
Added opened_tables to 'show status'.
-
Changed connect timeout to 3 seconds to make it somewhat harder
for crackers to kill mysqld trough telnet + TCP/IP.
-
Fixed bug in range optimizer when using:
WHERE key_part_1 >= something and key_part_2 <= something_else
-
Changed configure for detection of FreeBSD 3.0 9803xx and above
-
WHERE with string-column-key = constant-string didn't always find all rows
if the column had many values differing only with characters of the same sort
value (like e and -A�).$)B
-
Strings keys looked up with 'ref' was not compared case sensitively.
-
Added umask() to make log_files non-readable for normal users.
-
Ignore users with old password (8 byte) on startup if not using
--old-protocol.
-
select which matched all key fields returned the values in the same
case as the matched values instead of the found values. (Minor problem)
-
from_days(0) now returns "0000-00-00"
-
In DATE_FORMAT() PM and AM was swapped for hours 00 and 12.
-
Extended the default max key size to 256.
-
Fixed bug when using BLOB/TEXT in GROUP BY with many tables.
-
A enum field that is not declared NOT NULL has NULL as default value.
(Before the default value was the first enum option)
-
Fixed bug in the join optimizer code when using many part keys
on the same key: INDEX (Organisation,Surname(35),Initials(35)).
-
Added some tests to the table order optimizer to get some cases with 'SELECT ...
FROM many_tables' much faster.
-
Added a retry loop around accept() to possible fix some problems on some
Linux machines.
-
Changed typedef 'string' to 'my_string' for better portability.
-
One can now kill threads that are waiting for 'disk full'.
-
Fixed some problems with UDF functions.
-
Added long options for isamchk. Try isamchk --help.
-
Fixed a bug when using 8 bytes long (alpha); filesort() didn't work.
Affects DISTINCT, ORDER BY and GROUP BY on 64 bit processors.
-
Dynamic loadable functions. Based on source from Alexis Mikhailov.
-
One couldn't delete from a table if no one had done a select on the table.
-
Fixed problem with range optimizer which many OR's on key parts inside
each other.
-
Recoded min() and max() to work properly with strings and HAVING.
-
Changed default umask for new files from 0664 to 0660.
-
Fixed problem with LEFT JOIN and constant expressions in the ON part.
-
Added Italian error messages from brenno@3cord.philips.nl
-
configure now works better on OSF1 (tested on 4.0D).
-
Added hooks to allow LIKE optimization with international character support.
-
Upgraded DBI to 0.93
-
Fixed that the following symbols are not reserved words:
TIME DATE TIMESTAMP TEXT BIT ENUM NO ACTION CHECK YEAR MONTH DAY HOUR
MINUTE SECOND STATUS VARIABLES.
-
Setting a TIMSTAMP to NULL in LOAD DATA INFILE... didn't set the current
time for the TIMESTAMP.
-
Fix that BETWEEN recognizes binary strings. Now BETWEEN is case
sensitive.
-
Added switch --skip-thread-priority for systems where mysqld's thread
scheduling doesn't work properly (BSDI 3.1).
-
Added ODBC functions DAYNAME() and MONTHNAME().
-
Added function TIME_FORMAT(). This works like DATE_FORMAT() but takes
a time string (HH:MM:DD) as argument.
-
Fixed unlikely(?) key optimizer bug when using ORs of key parts inside ANDs.
-
Added command 'variables' to mysqladmin.
-
A lot of small changes to the binary releases.
-
Fixed a bug in the new protocol from MySQL 3.21.20.
-
Changed ALTER TABLE to work with WIN32 (Win32 can't rename open files).
Fixed also a couple of small bugs in the WIN32 version.
-
All standard MySQL clients are now ported to MySQL-win32.
-
MySQL can now be started as a service on NT.
-
Starting with this version all MySQL distributions will be configured,
compiled and tested with crash-me and the benchmarks on the following
platforms: SunOS 5.6 sun4u, SunOS 5.5.1 sun4u, SunOS 4.14 sun4c,
SunOS 5.6 i86pc, IRIX 6.3 mips5k, HP-UX 10.20 hppa, AIX 4.2.1 ppc,
OSF1 V4.0 alpha, FreeBSD 2.2.2 i86pc and BSDI 3.1 i386.
-
Fix of count(*) problems when the WHERE clause didn't match any records.
(Bug from 3.21.17)
-
Removed that NULL = NULL is true. Now one must use IS NULL or IS NOT NULL
to test if a value is NULL. (This is according to ANSI SQL but may break
old applications that are ported from mSQL)
One can get the old behaviour by compiling with -DmSQL_COMPLIANT
-
Fixed bug that core dumped when using many LEFT OUTER JOIN's.
-
Fixed bug in ORDER BY on string formula with possible NULL values.
-
Fixed problem in range optimizer when <= on sub index.
-
Added functions DAYOFYEAR(), DAYOFMONTH(), MONTH(), YEAR(), WEEK(),
QUARTER(), HOUR(), MINUTE(), SECOND() and FIND_IN_SET().
-
Added command SHOW VARIABLES.
-
Added support of 'long constant strings' from ANSI SQL:
select 'first ' 'second'; -> 'first second';
-
Upgraded mSQL-Mysql-modules to 1.1825
-
Upgraded mysqlaccess to 2.02
-
Fixed problem with Russian character set and LIKE.
-
Ported to openbsd 2.1
-
New Dutch error messages
-
Configure changes for some OS.
-
Fixed optimizer bug when using
'WHERE data_field=date_field2 and date_field2=constant'
-
Added command 'show status'
-
Removed manual.ps from the source distribution to make it smaller.
-
Changed maximum table name and column name lengths from 32 to 64.
-
Aliases can now be of 'any' length.
-
Fixed that 'mysqladmin stat' returns right number of queries.
-
Changed protocol (downward compatible) to mark if a column is
auto_increment or a timestamp. This is needed for the new Java driver.
-
Added hebrew sorting order by Zeev Suraski.
-
Solaris 2.6: Fixed configure bugs and increased maximum table size from 2G to 4G
-
Upgraded DBD to 1823. This version implements mysql_use_result in DBD-Mysql.
-
Benchmarks updated for empress (by Luuk)
-
Fixed a case of slow range searching.
-
Configure fixes (Docs directory).
-
Added function
REVERSE()
(by Zeev Suraski)
-
Give error message if client C functions are called in wrong order.
-
Added automatic reconnect to the libmysql.c library. If a write command
fails a automatic reconnect is done.
-
Small sort sets doesn't use temporary files anymore.
-
Upgraded DBI to 0.91
-
Fixed a couple of problems with LEFT OUTER JOIN.
-
Added CROSS JOIN syntax. CROSS is now a reserved word.
-
Recoded yacc/bison stack allocation to be even safer and allow MySQL
to handle even bigger expressions.
-
Fixed a couple of problems with the update log.
-
ORDER BY was slow when used with key ranges.
-
Changed documentation string of --with-unix-socket-path to avoid confusion.
-
Added ODBC and ANSI SQL style
LEFT OUTER JOIN
.
-
The following are new reserved words:
LEFT
, NATURAL
,
USING
-
The client library is now using the environment variable
MYSQL_HOST
as the default host if it's defined.
-
SELECT column, SUM(expr)
now returns NULL
for column when
there are matching rows.
-
Fixed problem with compare of binary strings and blobs with ASCII
characters over 127.
-
Fixed lock problem: When freeing a read lock on a table with multiple
read locks, a thread waiting for write lock would have given the lock.
This shouldn't affect data integrity, but could possible make mysqld
to restart if one thread was reading data that another thread modified.
-
LIMIT offset,count didn't work in INSERT ... SELECT.
-
Optimized key block caching. This will be quicker than the old one when
using bigger key caches.
-
Added ODBC 2.0 & 3.0 functions:
POWER()
, SPACE()
,
COT()
, DEGREES()
, RADIANS()
, ROUND(2 arg)
and TRUNCATE()
.
-
WARNING INCOMPATIBLE CHANGE!!.
LOCATE()
parameters where
swapped according to ODBC standard. Fixed.
-
Added function
TIME_TO_SEC()
.
-
In some cases default values was not used for
NOT NULL
fields.
-
Timestamp wasn't updated in
UPDATE SET ...
if the timestamp was
used as.
-
Allow empty strings as default values for
BLOB
and TEXT
to
be compatible with mysqldump.
-
WARNING INCOMPATIBLE CHANGE!! mysqlperl is now from
Msql-Mysql-modules. This means that the connect() now takes
host,database,user,password ! The old version took
host,database,password,user.
-
Allow
DATE '1997-01-01'
, TIME '12:10:10'
and
TIMESTAMP '1997-01-01 12:10:10'
formats required by ANSI SQL.
WARNING INCOMPATIBLE CHANGE!! This has the unfortunate
side-effect that one can't have columns named DATE
, TIME
or TIMESTAMP
anymore :( Old columns can still be accessed trough
'tablename.columnname'!
-
Changed Makefiles to hopefully work better with BSD systems. Also
manual.dvi is now included in the distribution to avoid having stupid
makes trying to rebuild it.
-
Readline library upgraded to version 2.1
-
A new sortorder german-1. That is a normal iso-latin1 with a german sort
order.
-
Perl DBI/DBD is now included in the distribution. DBI is now the
recommended way to connect to MySQL from perl.
-
New portable benchmark suite with DBD, with test results from mSQL 2.0.3,
MySQL, PostgreSQL 6.2.1 and Solid server 2.2.
-
crash-me is now included with the benchmarks; This is a perl program
designed to find as many limits as possible in a SQL server. Tested with
mSQL, postgreSQL, Solid and MySQL.
-
Fixed bug in range-optimiser that crashed mysql on some queries.
-
Table and column name completion for mysql command line tool, by Zeev
Suraski and Andi Gutmans.
-
Added new command
REPLACE
, which works like INSERT
but
replaces conflicting records with the new record. REPLACE INTO
TABLE ... SELECT ...
works also.
-
Added new commands:
CREATE DATABASE db_name
and DROP
DATABASE db_name
.
-
Added
RENAME
option to ALTER TABLE
: ALTER TABLE name
RENAME AS new_name
.
-
make_binary_distribution now includes libgcc.a in libmysqlclient.a. This
should make linking work for people without gcc.
-
Changed
net_write()
to my_net_write()
because of name
conflict with sybase.
-
New function
DAYOFWEEK()
compatible with ODBC.
-
Stack checking and bison memory overrun checking to get MySQL
safer with weird queries.
-
Fixed a couple of small configure problems on some platforms.
-
Ported to SCO Openserver 5.0.4 with FSU-threads.
-
HP/UX 10.20 should work.
-
Added new functions DATE_FORMAT() and DATE_ADD_MM()..
-
Added NOT IN.
-
Added automatic removal of 'ODBC function conversions': {fn now() }
-
Handle ODBC 2.50.3 option flags.
-
Fixed compare of DATE and TIME with NULL.
-
Changed language name from germany to german to be consistent with
the other language names.
-
Fixed sorting problem on functions returning a float. Before the values
was converted to a int before sorting.
-
Fixed slow sorting when sorting on key field when using KEY_COLUMN=constant.
-
SORTING on calculated DOUBLE values sorted on integer results instead.
-
'mysql' doesn't need a database argument anymore.
-
Changed the place where HAVING should be. According to ANSI it should be
after GROUP BY but before ORDER BY. MySQL 3.20 had it wrongly
last.
-
Added Sybase command: USE DATABASE to start using another database.
-
Added automatic adjusting of number of connections and table cache size
if the maximum number of files that can be opened are less than needed.
This should fix that mysqld doesn't crash even if one hasn't done a
ulimit -n 256 before starting mysqld.
-
Added lots of limit checks to make it safer when running with too little
memory or when doing weird queries.
-
Added retry of interrupted reads and clearing of errno.
This makes Linux systems much safer!
-
Fixed locking bug when using many alias on the same table in the same select.
-
Fixed bug with LIKE on number key.
-
New error message so one can check if the connection was lost while
the command was running or if the connection was down from the start.
-
Added --table option to mysql to print in table format.
Moved time and row information after query result.
Added automatic reconnect of lost connections.
-
Added != as an alias for <>.
-
Added function VERSION() to make easier logs.
-
New multi-user test 'tests/fork_test.pl' to put some strain on the
thread library.
-
Fixed ftruncate() call in MIT-threads. This made isamchk() destroy the .ISM
files on (Free)BSD systems 2.#
-
Fixed broken __P_ patch in MIT-threads
-
Many memory overrun checks. All string functions now return
NULL
if the returned string should be longer than max_allowed_packet
.
-
Changed the name if the
INTERVAL
type to ENUM
, because
INTERVAL
is used in ANSI SQL.
-
In some cases doing a JOIN + GROUP + INTO OUTFILE, the result wasn't
grouped.
-
LIKE with '_' as last character didn't work. Fixed
-
Added extended ANSI SQL
TRIM()
function.
-
Added
CURTIME()
.
-
Added
ENCRYPT()
function by Zeev Suraski.
-
Fixed better
FOREIGN KEY
syntax skipping. New reserved words:
MATCH
, FULL
, PARTIAL
-
mysqld now allows ip and hostname to the
--bind-address
option.
-
Added "SET OPTION CHARACTER SET cp1251_koi8" to enable conversions off
data to/from cp1251_koi8.
-
Lots of changes for Win95 port. In theory this version should now be
easily portable to Win95.
-
Changed the create column syntax off
NOT NULL
to be after the
DEFAULT
value as specified in the ANSI SQL standard. This will
make mysqldump with NOT NULL
and default values incompatible with
MySQL 3.20.
-
Added a lot of function name alias so one can use the functions with
ODBC or ANSI SQL92 syntax.
-
Fixed
ALTER TABLE person ALTER COLUMN phone SET DEFAULT NULL
syntax.
-
Added CHAR and BIT as a synonyms for CHAR(1)
-
Fixed core dump when updating as user with only select privilege.
-
INSERT ... SELECT ... GROUP BY didn't work in some cases. On got
'Invalid use of group function'
-
When using LIMIT, SELECT now always uses keys instead of record scan.
This will give better performance on SELECT and a WHERE that matches many
rows.
-
Added Russian error messages.
-
In some cases doing a join + group + INTO OUTFILE, the result wasn't
grouped.
-
Configure changes.
-
MySQL new works with the new thread library on BSD/OS 3.0.
-
Added new group functions: BIT_OR() and BIT_AND().
-
Added compatibility functions: CHECK, REFERENCES. CHECK is now a
reserved word.
-
Added BIT as a synonym for CHAR(1) to get better compatibility.
-
Added option ALL to GRANT for better compatibility. (GRANT is still
a dummy fuction.
-
Added partly translated dutch messages.
-
Fixed bug in ORDER BY and GROUP BY with NULL columns
-
Added function last_insert_id() to retreive last auto_increment value.
This is for clients to ODBC that can't use the mysql_insert_id API function,
but can be used by any client.
-
Added option '--flush-logs' to mysqladmin.
-
Added command 'status' to mysql.
-
Fixed problem with order/group by because of bug in gcc.
-
Fixed problem with INSERT ... SELECT .. GROUP BY.
-
New mysqlaccess.
-
CREATE supports now all ODBC types and the mSQL
TEXT
type. All
ODBC 2.5 functions is also supported (added REPAT). This gives better
portability.
-
Added text types:
TINYTEXT
, TEXT
, MIDDLETEXT
and
LONGTEXT
. These are actually blobs, but all searching is done
case independent.
-
All old
BLOB
fields are now TEXT
fields. This only
changes that all searching on strings are case independent. One have to
do a ALTER TABLE and change the field to BLOB if one wants to have tests
done case dependent.
-
Fixed some configure issues.
-
Made the locking code a bit safer. Fixed very unlikely
dead lock situation.
-
Fixed a couple of bugs in the range optimiser. Now the new range benchmark
test-select works.
-
Added --enable-unix-socket=pathname arg to configure.
-
Fixed a couple of portable problems with include files.
-
Fixed bug in range calculation that could return empty
set when searching on multiple key with only one entry (very rare).
-
Most things ported to FSU threads, which should allow MySQL to
run on SCO. 「SCO notes.」節参照 .
-
Works now in Solaris 2.6
-
Added handling of calculation of sum() functions.
One can now use for example: SUM(column)/COUNT(column)
-
Added handling of trigometric functions: PI(), ACOS(), ASIN(), ATAN(),
COS(), SIN() and TAN().
-
New languages: norwegian, norwegian-ny and portuguese.
-
Fixed parameter bug in net_print in procedure.cc.
-
Fixed a cople of memory leaks.
-
Now allow also the old SELECT ... INTO OUTFILE syntax.
-
Fixed bug with group by and select on key with many values.
-
mysql_fetch_lengths() returned sometimes wrong lengths when one used
mysql_use_result(). This affected at least some cases of mysqldump --quick.
-
Fixed bug in optimisation of WHERE const op field.
-
Fixed problem when sorting on NULL fields.
-
Fixed a couple of 64bit (Alpha) problems
-
Added option --pid-file=# to mysqld
-
Added date formating to from_unixtime(), originally by Zeev Suraski.
-
Fixed bug in BETWEEN in range optimiser (Did only test = of the first
argument).
-
Added machine dependent files for mit-pthreads i386-SCO. There is probably
more to do to get this to work on SCO 3.5.
-
Changed to Makefile.am to take advantage of automake 1.2.
-
Added the beginnings of a benchmark suite.
-
Added more secure password handling.
-
Added new client function: mysql_errno() to get the error number of
the error message. This makes error checking in the client much easier.
This makes the new server incompatible with the 3.20.# server when running
without --old-protocol. The client code is backward compatible.
More information can be found in the README file!
-
Fixed some problems when using very long, illegal names.
-
Fixed more portability issues (wrong sigwait and sigset define)
-
configure should now be able to detect the last argument to accept().
-
Should now work at FreeBSD 3.0, if one used the FreeBSD-3.0-libc_r-1.0.diff
which can be found at http://www.tcx.se/Download/Patches
-
Added new option to mysqld: -O tmp_table_size=#
-
New function from_unixtime(timestamp) which returns a date string in
YYYY-MM-DD HH:MM:DD format.
-
New function sec_to_time(seconds) which returns a string in H:MM:SS format.
-
new function: substring_index(), originally by Zeev Suraski.
-
Should now configure and compile on OSF1 4.0 with the Dec compiler.
-
configure and compile on BSD/OS 3.0 works, but due to some bugs in
BSD/OS 3.0, mysqld doesn't work on it yet.
-
configure and compile on FreeBSD 3.0, but I couldn't get pthread_create to
work.
-
Added reverse check lookup of hostnames to get better security.
-
Fixed some possible buffer overflows if one uses too long filenames.
-
mysqld doesn't accept hostnames that starts with digits followed by a '.'
because the hostname may look like a IP.
-
Added option --skip-networking to only allow socket connections.
(This will not work with MIT threads!)
-
Added check of too long table names for alias.
-
Added check if database name is okey.
-
Addded check if too long table names.
-
Removed wrong free() that killed the server on 'create/drop database'.
-
Changed the name of some mysqld -O options to better names.
-
Added option '-O join_cache_size=#'.
-
Added option '-O max_join_size=#' to be able to set a limit how big
queries (in this case big = slow) one should be able to handle without
specifying 'SQL_OPTION OPTION_BIG_SELECTS=1'. A # = is about 10
examined records. The default is 'unlimited'.
-
When comparing a TIME, DATE, DATETIME or TIMESTAMP column to a
constant the constant is converted to a time value before comparing.
This will make it easier to get ODBC and particularly Access97 to work with
the above types. It should also make dates easier to use and the compares
should be quicker than before.
-
Applied patch from Jochen Wiedmann that fixes that query() in mysqlperl
now can take queries with \0 in it.
-
Store of timestamp with 2 digit year YYMMDD didn't work.
-
Fix that timestamp isn't automaticly updated if set in a update clause.
-
Now the automatic timestamp field is the FIRST timestamp field.
-
SELECT * INTO OUTFILE, which didn't correctly if the outfile already existed.
-
'mysql' now shows thread id when starting or doing a reconnect.
-
Changed the default sort buffer size from 2M to 1M.
-
The range optimiser is cooded, but only 85% tested. It can be enabled with
--new, but it crashes core a lot yet...
-
More portable. Should compile one AIX and alpha-digital.
At least the isam library should be relative 64 bit clean.
-
New isamchk which can detect and fix more problems.
-
New options for isamlog.
-
Using new version of automake
-
Many small portability changes (from the AIX and alpha-digital port)
Better checking of pthread(s) library.
-
czech error messages by snajdr@pvt.net
-
'mysql' now shows thread id when starting or doing a reconnect.
-
Decresed some buffers to get less problems on system with little memory.
Also added more checks to handle 'out of memory' problems
-
mysqladmin: One can now do 'mysqladmin kill 5,6,7,8'
-
When the max connection limit is reached, one extra connection by a user with
the PROCESS_ACL privilege is granted.
-
Added new mysqld option: -O backlog=#
-
Increased max packet size from 512K to 1024K for client.
-
Almost all of the functions code is now tested in the intern test suite.
-
ALTER TABLE now returns warnings from field conversions.
-
Port changed to 3306 (got it reserved from ISI).
-
Added a fix for Visual Fox Base so that any schema name from a table
specification is automaticly removed.
-
New function ASCII.
-
Removed the between() function. On should use the 'col BETWEEN a AND b'
syntax instead.
-
MySQL now doesn't anymore have to use a extra temporary table when sorting
on functions or SUM functions.
-
Fixed bug that one couldn't use 'table_name.field_name' in UPDATE.
-
Fixed SELECT DISTINCT when using 'hidden group'. For example:
SELECT DISTINCT MOD(some_field,10) FROM test GROUP BY some_field;
Note: some_field is normally in the select part. ANSI SQL should require
it.
-
New keywords used: INTERVAL, EXPLAIN, READ, WRITE, BINARY
-
Added ODBC functions CHAR(num,...) and ASCII(string).
-
Removed function BETWEEN(a,b,c). One should use the standard ANSI SYNTAX:
expr BETWEEN expr AND expr.
-
New operator IN. This uses a binary search to find a match.
-
New command
LOCK TABLES table_name [AS alias] (READ | WRITE), ...
-
New server option
mysqld --log-update
to get a log suitable for
incremental updates
-
new command: EXPLAIN SELECT ... to get info about how the optimzier
will do the join.
-
For easier client code, the client shouldn't anymore 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). One should instead only use
FIELD_TYPE_BLOB
or FIELD_TYPE_STRING
. If one wants exact
types one 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.
-
A field with a
DEFAULT
doesn't have to be NOT NULL
anymore.
-
New field types:
ENUM
-
A string with only can take a couple of defined values. The value is
stored as a 1-3 byte number that automaticly is mapped to a string.
This is sorted according to string positions!
SET
-
A string with 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 string. This is sorted according to unsigned value
of the stored packed number.
-
Now all function calculation is done with double or long long. This
will give one the full 64 bits range with bit functions and fix some
conversions that previously could give precision losses. One should
avoid using 'unsigned long long' columns with full 64 bits range
(numbers bigger than 9223372036854775807) because calculations is done
with signed long long.
-
ORDER BY will now put NULL fields first. GROUP BY will also work with NULL.
-
Full WHERE with expressions.
-
New range optimiser with can resolve ranges when some prefix keypart is
constant. Example:
SELECT * FROM table_name WHERE key_part_1="customer" and key_part_2 >= 10 AND
key_part_2 <= 10)
Changes from 3.20.18 to 3.20.32b are not documented here since the the
3.21 release bransched here. And the relevant changes are also
documented as changes to the 3.21 version.
-
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 daemon 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 optimiser could get confused and return 0 records.
-
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 daemon.
-
The
ELT()
function is renamed to FIELD()
. The new
ELT()
function returns a value based on an 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 unoptimisable 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);
-
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 optimiser 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.
-
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.
-
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.
-
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)
-
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)
-
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 installation
instructions.
-
Added --without-perl to configure.
-
Lot's of small portability changes.
-
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.
-
Fixed bug with ALTER TABLE and multi part keys.
-
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.
-
The configure source now compiles a thread free client library
-lmysqlclient
. 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 '('
-
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 daemon 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.
-
Some new functions, some more optimisation 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.
-
Fixed horrible locking bug when inserting in one thread and reading
on another thread.
-
Fixed one-off decimal bug. 1.00 was output 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.
-
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.
Go to the first, previous, next, last section, table of contents.