D.1 Modifications de la version 3.23.x (Released as alpha)

The major difference between release 3.23 and releases 3.22 and 3.21 is that 3.23 contains a new ISAM library (MyISAM), which is more tuned for SQL than the old ISAM was.

The 3.23 release is under development, and things will be added at a fast pace to it. For the moment we recommend this version only for users that desperately need a new feature that is found only in this release (like big file support and machine-independent tables). (Note that all new functionality in MySQL 3.23 is extensively tested, but as this release involves much new code, it's difficult to test everything). This version should start to stabilise as soon as we get subselects included in it.

D.1.1 Modifications de la version 3.23.3

  • ASC is now again default for ORDER BY.
  • Added LIMIT to UPDATE.
  • New client function: mysql_change_user.
  • Added character set to SHOW VARIABLES
  • Added support of --[whitespace] comments.
  • Allow INSERT into table_name VALUES ()'
  • Changed SUBSTRING(text FROM pos) to conform to ANSI SQL. (Before this construct returned the rightmost 'pos' characters).
  • SUM(..) with GROUP BY returned 0 on some system.
  • Changed output for SHOW TABLE STATUS.
  • Added DELAY_KEY_WRITE option to CREATE TABLE.
  • Allow AUTO_INCREMENT on any key part.
  • Fixed problem with YEAR(NOW()) and YEAR(CURDATE()).
  • Added CASE construct.
  • New function COALESCE().

D.1.2 Modifications de la version 3.23.2

  • Fixed range optimizer bug: SELECT * FROM table_name WHERE key_part1 >= const AND (key_part2 = const OR key_part2 = const). The bug was that some rows could be duplicated in the result.
  • Running myisamchk without -a updated the index distribution wrong.
  • SET SQL_LOW_PRIORITY_UPDATES=1 gave parse error before.
  • You can now update indexes columns that are used in the WHERE clause. UPDATE nom_table SET KEY=KEY+1 WHERE KEY > 100
  • Date handling should now be a bit faster.
  • Added handling of fuzzy dates (dates where day or month is 0): (Like: 1999-01-00)
  • Fixed optimization of SELECT ... WHERE key_part1=const1 AND key_part_2=const2 AND key_part1=const4 AND key_part2=const4 ; Indextype should be range instead of ref.
  • Fixed egcs 1.1.2 optimizer bug (when using BLOBs) on Linux Alpha.
  • Fixed problem with LOCK TABLES combined with DELETE FROM table.
  • MyISAM tables now allow keys on NULL and BLOB/TEXT columns.
  • The following join is now much faster: SELECT ... FROM t1 LEFT JOIN t2 ON ... WHERE t2.not_null_column IS NULL.
  • ORDER BY and GROUP BY can be done on functions.
  • Changed handling of 'const_item' to allow handling of ORDER BY RAND().
  • Indexes are now used for WHERE key_column = function.
  • Indexes are now used for WHERE key_column = column_name even if the columns are not identically packed.
  • Indexes are now used for WHERE column_name IS NULL.
  • Changed heap tables to be stored in low_byte_first order (to make it easy to convert to MyISAM tables)
  • Automatic change of HEAP temporary tables to MyISAM tables in case of 'table is full' errors.
  • Added option --init-file=file_name to mysqld.
  • COUNT(DISTINCT value,[value,...])
  • CREATE TEMPORARY TABLE now creates a temporary table, in its own namespace, that is automatically deleted if connection is dropped.
  • New keywords (required for CASE: CASE, THEN, WHEN, ELSE and END.
  • New functions EXPORT_SET() and MD5().
  • Support for the GB2312 Chinese character set.

D.1.3 Modifications de la version 3.23.1

  • Fixed some compilation problems.

D.1.4 Modifications de la version 3.23.0

    A new table handler library (MyISAM) with a lot of new features. 10.18 Types de tables MySQL.
  • You can create in-memory HEAP tables which are extremely fast for lookups.
  • Support for big files (63 bit) on OSes that support big files.
  • New function LOAD_FILE(filename) to get the contents of a file as a string value.
  • New operator <=> which will act as = but will return TRUE if both arguments are NULL. This is useful for comparing changes between tables.
  • Added the ODBC 3.0 EXTRACT(interval FROM datetime) function.
  • Columns defined as FLOAT(4) or FLOAT(8) are not rounded on storage and may be in scientific notation (1.0 E+10) when retrieved.
  • REPLACE is now faster than before.
  • Changed LIKE character comparison to behave as =; This means that 'e' LIKE 'é' is now true.
  • SHOW TABLE STATUS returns a lot of information about the tables.
  • Added LIKE to the SHOW STATUS command.
  • Added privilege column to SHOW COLUMNS.
  • Added columns packed and comment to SHOW INDEX.
  • Added comments to tables (with CREATE TABLE ... COMMENT "xxx").
  • Added UNIQUE, as in CREATE TABLE table_name (col int not null UNIQUE)
  • New create syntax: CREATE TABLE SELECT ....
  • New create syntax: CREATE TABLE IF NOT EXISTS ...
  • Allow creation of CHAR(0) columns.
  • DATE_FORMAT() now requires % before any format character.
  • DELAYED is now a reserved word (sorry about that :( ).
  • An example procedure is added: analyse, file: `sql_analyse.c'. This will describe the data in your query. Try the following:
    SELECT ... FROM ... WHERE ... PROCEDURE ANALYSE([max elements,[max memory]])
    
    This procedure is extremely useful when you want to check the data in your table!
  • BINARY cast to force a string to be compared case sensitively.
  • Added option --skip-show-databases to mysqld.
  • Check if a row has changed in an UPDATE now also works with BLOB/TEXT columns.
  • Added the INNER join syntax. NOTE: This made INNER an reserved word!
  • Added support for netmasks to the hostname in the MySQL tables. You can specify a netmask using the IP/NETMASK syntax.
  • If you compare a NOT NULL DATE/DATETIME column with IS NULL, this is changed to a compare against 0 to satisfy some ODBC applications. (By shreeve@uci.edu).
  • NULL IN (...) now returns NULL instead of 0. This will ensure that null_column NOT IN (...) doesn't match NULL values.
  • Fix storage of floating point values in TIME columns.
  • Changed parsing of TIME strings to be more strict. Now the fractional second part is detected (and currently skipped). The following formats are supported:
    [[DAYS] [H]H:]MM:]SS[.fraction]
    [[[[[H]H]H]H]MM]SS[.fraction]
  • Detect (and ignore) second fraction part from DATETIME.
  • Added the LOW_PRIORITY attribute to LOAD DATA INFILE.
  • The default index name now uses the same case as the used column name.
  • Changed default number of connections to 100.
  • Use bigger buffers when using LOAD DATA INFILE.
  • DECIMAL(x,y) now works according to ANSI SQL.
  • Added aggregate UDF functions. Thanks to Andreas F. Bobak
  • LAST_INSERT_ID() is now updated for INSERT INTO ... SELECT.
  • Some small changes to the join table optimizer to make some joins faster.
  • SELECT DISTINCT is much faster; It uses the new UNIQUE functionality in MyISAM. One difference compared to MySQL 3.22 is that the output of DISTINCT is not sorted anymore.
  • All C client API macros are now functions to make shared libraries more reliable. Because of this, you can no longer call mysql_num_fields() on a MYSQL object, you must use mysql_field_count() instead.
  • Added use of LIBEWRAP; Patch by Henning P . Schmiedehausen.
  • Don't allow AUTO_INCREMENT for other than numerical columns.
  • Using AUTO_INCREMENT will now automatically make the column NOT NULL.
  • Show NULL as the default value for AUTO_INCREMENT columns.
  • Added SQL_BIG_RESULT; SQL_SMALL_RESULT is now default.
  • Added a shared library RPM. This enchancement was contributed by David Fox (dsfox@cogsci.ucsd.edu).
  • Added a --enable-large-files/--disable-large-files switch to configure. See `configure.in' for some systems where this is automatically turned off because of broken implementations.
  • Upgraded readline to 4.0.
  • New CREATE TABLE options: PACK_KEYS and CHECKSUM.
  • Added mysqld option --default-table-type.