A new storage engine library (MyISAM) with a lot of new features. See MyISAM.
You can create in-memory HEAP tables which are extremely fast for lookups.
Support for big files (63-bit) on OSs 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(X) 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. (If the line doesn't display correctly, the latter 'e' is a French 'e' with a dot above.)
SHOW TABLE STATUS returns a lot of information about the tables.
Added LIKE to the SHOW STATUS command.
Added Privileges column to SHOW COLUMNS.
Added Packed and Comment columns 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 table_name 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 in case-sensitive fashion.
Added --skip-show-database option to mysqld.
Check whether a row has changed in an UPDATE now also works with BLOB/TEXT columns.
Added the INNER join syntax. NOTE: This made INNER a reserved word!
Added support for netmasks to the hostname in the MySQL grant 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) fractional second part from DATETIME.
Added the LOW_PRIORITY attribute to LOAD DATA INFILE.
The default index name now uses the same case as the column name on which the index name is based.
Changed default number of connections to 100.
Use bigger buffers when using LOAD DATA INFILE.
DECIMAL(x,y) now works according to SQL-99.
Added aggregate UDF functions. Thanks to Andreas F. Bobak (<bobak@relog.ch>) for this!
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 Version 3.22 is that the output of DISTINCT is no longer sorted.
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 LIBWRAP; 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 enhancement was contributed by David Fox (<dsfox@cogsci.ucsd.edu>).
Added --enable-large-files and --disable-large-files switches 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 --default-table-type option to mysqld.