Changes in release 4.1.x (Alpha)
================================
Version 4.1 of the MySQL server includes many enhancements and new
features. Binaries for this version are available for download at
`http://www.mysql.com/downloads/mysql-4.1.html'.
* Subqueries:
SELECT * FROM t1 WHERE t1.a=(SELECT t2.b FROM t2);
SELECT * FROM t1 WHERE (1,2,3) IN (SELECT a,b,c FROM t2);
* Derived tables:
SELECT t1.a FROM t1, (SELECT * FROM t2) t3 WHERE t1.a=t3.a;
you to
overwrite an existing row, which is something entirely different.)
*Note INSERT::.
* A newly designed `GROUP_CONCAT()' aggregate function. *Note Group
by functions::.
* Extensive Unicode (UTF8) support.
* Character sets can be defined per column, table and database.
* `BTREE' index on `HEAP' tables.
* Support for OpenGIS spatial types (geographical data). *Note
Spatial extensions in MySQL::.
* `SHOW WARNINGS' shows warnings for the last command. *Note SHOW
WARNINGS::.
* Faster binary protocol with prepared statements and parameter
binding. *Note C API Prepared statements::.
* Multi-line queries: You can now issue several queries at once and
then read the results in one go. *Note C API multiple queries::.
* Create Table: `CREATE [TEMPORARY] TABLE [IF NOT EXISTS] table2 LIKE
table1'.
* Server based `HELP command' that can be used in the `mysql'
command line client (and other clients) to get help for SQL
commands.
For a full list of changes, please refer to the changelog sections for
each individual 4.1.x release.
Changes in release 4.1.1 (to be released soon)
----------------------------------------------
Functionality added or changed:
* Added new aggregate function `BIT_XOR()' for bitwise XOR
operations.
* Replication over SSL now works.
or
in the slave's relay logs.
* Create warnings also for simple (one row) `INSERT'. Before you had
to set `SQL_WARNING=1' for this to generate warnings.
* Added `delimiter' (`\d') command to `mysql' for changing the
statement delimiter (terminator). The default delimiter is
semicolon.
size
depends on the column's character set. This means, for example,
that a `CHAR(n)' column for a multi-byte character set will take
more storage than before.
* The `DATABASE()' function now returns `NULL' rather than the empty
string if there is no database selected.
only
`NULL' generates a sequence number.
be reset
after running the `mysql_fix_privilege_tables' script.
* *Warning: Incompatible change!* Renamed `mysql_prepare_result()'
to `mysql_get_metadata()' as the old name was confusing.
* Added command `DROP USER 'username'@'hostname''.
* The interface to aggregated UDF functions has changed a bit. One
must now declare a `clear' function for each aggregate function.
* `CONCAT_WS()' no longer skips empty strings.
* Added new functions `UTC_DATE()', `UTC_TIME()', and
`UTC_TIMESTAMP()'.
* Added new functions `DATE()', `TIME()', `TIMESTAMP()',
`WEEKOFYEAR()', `MICROSECOND()', `ADDTIME()', `SUBTIME()',
`DATEDIFF()', `TIMEDIFF()', `MAKEDATE()', `MAKETIME()', and
`TIMEDIFF()'.
* Added new syntax for `ADDDATE()' and `SUBDATE()'. They now allow
a numeric second argument representing the number of days to be
added to or subtracted from the first date argument.
* Added new `type' values `DAY_MICROSECOND', `HOUR_MICROSECOND',
`MINUTE_MICROSECOND', `SECOND_MICROSECOND', and `MICROSECOND' for
`DATE_ADD()', `DATE_SUB()', and `EXTRACT()'.
* Added new `%f' microseconds format specifier for `DATE_FORMAT()'
and `TIME_FORMAT()'.
* Enabled that all queries in which at least one `SELECT' does not
use indices properly get into slow query log when long log format
is used.
created in
that database as well.
* Added new functions `COMPRESS()', `UNCOMPRESS()', and
`UNCOMPRESSED_LENGTH()'.
* When doing `SET sql_mode='mode'' for a complex mode (like `ANSI'),
we now update the `sql_mode' variable to include all the
individual options implied by the complex mode.
* Added OLAP (Online Analytical Processing) function `ROLLUP', which
gives you summary rows for each `GROUP BY' level.
* Added `SQLSTATE' codes for all server errors.
* Added client API functions `mysql_sqlstate()' and
`mysql_stmt_sqlstate()' that return the SQLSTATE error code for the
last error.
* `TIME' columns with hours > 24 (days) were returned incorrectly to
the client.
* `ANALYZE', `OPTIMIZE', `REPAIR', `FLUSH' (and its equivalents
invoked from `mysqladmin') commands are now stored in the binary
log (hence are replicated to the slave), except `FLUSH LOGS',
`FLUSH MASTER', `FLUSH SLAVE', `FLUSH TABLES WITH READ LOCK', and
unless the optional `NO_WRITE_TO_BINLOG' keyword (or its alias
`LOCAL') was used. For a syntax example, see *Note `FLUSH': FLUSH.
* New global variable `RELAY_LOG_PURGE' to enable or disable
automatic relay log purging.
* `LOAD DATA' now produces warnings that can be fetched with `SHOW
WARNINGS'.
* Added support for syntax `CREATE TABLE table2 (LIKE table1)' that
creates an empty table `table2' with a definition that is exactly
the same as `table1', including any indexes.
* `CREATE TABLE table_name (...) TYPE=storage_engine' now generates a
warning if the named storage engine is not available. The table is
still created as a `MyISAM' table, as before.
* Most subqueries are now much faster than before.
* Added alias `PURGE BINARY LOGS' for `PURGE MASTER LOGS'.
* `PURGE LOGS' syntax is disabled (it had been added in version
4.1.0). It is now `PURGE MASTER LOGS' or `PURGE BINARY LOGS'.
* Added alias `SHOW BDB LOGS' for `SHOW LOGS'.
* Added alias `SHOW MASTER LOGS' (which had been deleted in version
4.1.0) to `SHOW BINARY LOGS'.
* Added a column `Slave_IO_State' (the state of the slave I/O thread)
and a column `Seconds_behind_master' (the number of seconds by
which the slave is late compared to the master) to the output of
`SHOW SLAVE STATUS'.
Bugs fixed:
* Error handling functions was not called properly when one got an
error from `[CREATE | REPLACE| INSERT] ... SELECT'.
* `HASH', `BTREE', `RTREE', `ERRORS' and `WARNINGS' are not reserved
words anymore. (Bug #724)
* Fix for bug in `ROLLUP' when all tables were `const' tables. (Bug
#714)
* `--lower-case-table-names=1' now also makes aliases case
insensitive. (Bug #534)
* Fixed a bug in `UNION' which prohibited that `NULL' values are
inserted in result set where first `SELECT' contains `NOT NULL'
columns
* Fixed name resolution of fields of reduced subqueries in unions.
(Bug #745)
* Fixed memory overrun in subqueries in select list with `WHERE'
clause bigger than outer query `WHERE' clause. (Bug #726)
* Fixed a bug that caused `MyISAM' tables with `FULLTEXT' indexes
created in 4.0.x to be unreadable in 4.1.x.
* Fixed a data loss bug in `REPAIR TABLE ... USE_FRM' when used with
tables that contained `TIMESTAMP' fields and were created in 4.0.x.
* Fixed reduced subquery processing in `ORDER BY'/`GROUP BY'
clauses. (Bug #442)
* Fixed name resolving of outer fields of subquery in
`INSERT'/`REPLACE' statements. (Bug #446)
* Fixed bug in marking fields of reduced subqueries. (Bug #679)
* Fixed a bug that made `CREATE FULLTEXT INDEX' syntax illegal.
* Fixed a crash when a `SELECT' that required a temporary table
(marked by `Using temporary' in `EXPLAIN' output) was used as a
derived table in `EXPLAIN' command. (Bug #251)
* Fixed a rare table corruption bug in `DELETE' from a big table with
a *new* (created by MySQL-4.1) fulltext index.
* `LAST_INSERT_ID()' now returns 0 if the last `INSERT' statement
didn't insert any rows.
* Fixed missing last character in function output. (Bug #447)
log. Then
replication would resume at the beginning of the second or later
relay log, which was wrong. (It should resume at `BEGIN', in the
first relay log.) (Bug #53)
* `CONNECTION_ID()' is now properly replicated. (Bug #177)
* The new `PASSWORD()' function in 4.1 is now properly replicated.
(Bug #344)
* Fixed bug with doubly freed memory.
* Fixed crashing bug in `UNION' operations that involved temporary
tables.
* Fixed a crashing bug in `DERIVED TABLES' when `EXPLAIN' is used on
a `DERIVED TABLES' with a join.
* Fixed a crashing bug in `DELETE' with `ORDER BY' and `LIMIT'
caused by an uninitialized array of reference pointers.
* Fixed a bug in `USER()' function caused by an error in the size of
the allocated string.
* Fixed a crashing bug when attempting to create a table with a
spatial (GIS) column type with a storage engine that does not
support spatial types.
* Fixed a crashing bug in `UNION' caused by the empty select list and
a non-existent field being used in some of the sub-selects.
* Fixed a replication bug when the master is 3.23 and the slave 4.0:
The slave lost the replicated temporary tables if `FLUSH LOGS' was
issued on the master. (Bug #254)
* Fixed a security bug: A server compiled without SSL support still
allowed connections by users that had the `REQUIRE SSL' option
specified for their accounts.
replicate the
query wrongly if a previous transaction on the master used a user
variable of the same name. (Bug #1331)
Changes in release 4.1.0 (03 Apr 2003: Alpha)
---------------------------------------------
Functionality added or changed:
* New more secure client authentication based on 45-byte passwords
in the `user' table.
* New `CRC32()' function to compute cyclic redundancy check value.
* On Windows, we are now using shared memory to communicate between
server and client when they are running on the same machine and
you are connecting to `localhost'.
* `REPAIR' of `MyISAM' tables now uses less temporary disk space when
sorting char columns.
* `DATE'/`DATETIME' checking is now a bit stricter to support the
ability to automatically distinguish between date, datetime, and
time with microseconds. For example, dates of type `YYYYMMDD
HHMMDD' are no longer supported; you must either have separators
between each `DATE'/`TIME' part or not at all.
* Server side help for all MySQL functions. One can now type `help
week' in the `mysql' client and get help for the `week()' function.
* Added new C API client function: `mysql_get_server_version()'.
* Fixed bug in `libmysqlclient' that fetched field defaults.
* Fixed bug in `mysql.cc' client when skipping comments
* Added `record_in_range()' method to `MERGE' tables to be able to
choose the right index when there are many to choose from.
* Replication now works with `RAND()' and user variables `@var'.
* Allow one to change mode for `ANSI_QUOTES' on the fly.
* `EXPLAIN SELECT' now can be killed. *Note KILL::.
* `REPAIR TABLE' now can be killed. *Note KILL::.
* Allow one to specify empty key lists for `USE|IGNORE|FORCE INDEX'.
* `DROP TEMPORARY TABLE' now only drops temporary tables and doesn't
end transactions.
* Added a support for `UNION' in derived tables.
* `TIMESTAMP' is now returned as a string of type `'YYYY-MM-DD
HH:MM:SS'' and different timestamp lengths are not supported.
the
desired number of digits of fractions of a second.
* New faster client/server protocol which supports prepared
statements, bound parameters, and bound result columns, binary
transfer of data, warnings.
* Added database and real table name (in case of alias) to the
`MYSQL_FIELD' structure.
* Multi-line queries: You can now issue several queries at once and
then read the results in one go.
* In `CREATE TABLE foo (a INT not null primary key)' the `PRIMARY'
word is now optional.
* In `CREATE TABLE' the attribute `SERIAL' is now an alias for
`BIGINT NOT NULL AUTO_INCREMENT UNIQUE'.
* `SELECT ... FROM DUAL' is an alias for `SELECT ...'. (To be
compatible with some other databases).
* If one creates a too long `CHAR'/`VARCHAR' it's now automatically
changed to `TEXT' or `BLOB'; One will get a warning in this case.
* `CHAR BYTE' is an alias for `CHAR BINARY'.
* `VARCHARACTER' is an alias for `VARCHAR'.
* New operators `integer MOD integer' and `integer DIV integer'.
* `SERIAL DEFAULT VALUE' added as an alias for `AUTO_INCREMENT'.
* `TRUE' and `FALSE' added as alias for 1 and 0, respectively.
* Aliases are now forced in derived tables, as per SQL-99.
* Fixed `SELECT .. LIMIT 0' to return proper row count for
`SQL_CALC_FOUND_ROWS'.
* One can specify many temporary directories to be used in a
round-robin fashion with: `--tmpdir=dirname1:dirname2:dirname3'.
* Subqueries: `SELECT * from t1 where t1.a=(SELECT t2.b FROM t2)'.
* Derived tables:
SELECT a.col1, b.col2
FROM (SELECT MAX(col1) AS col1 FROM root_table) a,
other_table b
WHERE a.col1=b.col1;
* Character sets to be defined per column, table and database.
* Unicode (UTF8) support.
* New `CONVERT(... USING ...)' syntax for converting string values
between character sets.
* `BTREE' index on `HEAP' tables.
* Faster embedded server (new internal communication protocol).
* One can add a comment per column in `CREATE TABLE'.
* `SHOW FULL COLUMNS FROM table_name' shows column comments.
* `ALTER DATABASE'.
* Support for GIS (Geometrical data). *Note Spatial extensions in
MySQL::.
* `SHOW [COUNT(*)] WARNINGS' shows warnings from the last command.
* One can specify a column type for a colum in `CREATE TABLE ...
SELECT' by defining the column in the `CREATE' part.
CREATE TABLE foo (a tinyint not null) SELECT b+1 AS 'a' FROM bar;
* `expr SOUNDS LIKE expr' same as `SOUNDEX(expr)=SOUNDEX(expr)'.
* `VARIANCE(expr)' returns the variance of `expr'
* One can create a table from the existing table using `CREATE
[TEMPORARY] TABLE [IF NOT EXISTS] table (LIKE table)'. The table
can be either normal or temporary.
* New options `--reconnect' and `disable-reconnect' for the `mysql'
client, to reconnect automatically or not if the connection is
lost.
* `START SLAVE' (`STOP SLAVE') no longer returns an error if the
slave is already started (stopped); it returns a warning instead.
* `SLAVE START' and `SLAVE STOP' are no longer accepted by the query
parser; use `START SLAVE' and `STOP SLAVE' instead.
[Назад] [Содержание] [Вперед]
| Главная |