(mysql.info.gz) TODO future
Info Catalog
(mysql.info.gz) TODO MySQL 5
(mysql.info.gz) TODO
(mysql.info.gz) TODO sometime
C.3 New Features Planned for the Near Future
============================================
New functionality
* Oracle-like `CONNECT BY PRIOR' to search tree-like
(hierarchical) structures.
* Add all missing standard SQL and ODBC 3.0 types.
* Add `SUM(DISTINCT)'.
* `INSERT SQL_CONCURRENT' and `mysqld --concurrent-insert' to do
a concurrent insert at the end of a table if the table is
read-locked.
* Allow variables to be updated in `UPDATE' statements. For
example: `UPDATE foo SET @a:=a+b,a=@a, b=@a+c'.
* Change when user variables are updated so that you can use
them with `GROUP BY', as in the following statement: `SELECT
id, @a:=COUNT(*), SUM(SUM_COL)/@a FROM TBL_NAME GROUP BY id'.
* Add an `IMAGE' option to `LOAD DATA INFILE' to not update
`TIMESTAMP' and `AUTO_INCREMENT' columns.
* Add `LOAD DATA INFILE ... UPDATE' syntax that works like this:
* For tables with primary keys, if an input record
contains a primary key value, existing rows matching
that primary key value are updated from the remainder of
the input columns. However, columns corresponding to
columns that are _missing_ from the input record are not
touched.
* For tables with primary keys, if an input record does
not contain the primary key value or is missing some
part of the key, the record is treated as `LOAD DATA
INFILE ... REPLACE INTO'.
* Make `LOAD DATA INFILE' understand syntax like this:
LOAD DATA INFILE 'FILE_NAME.txt' INTO TABLE TBL_NAME
TEXT_FIELDS (text_col1, text_col2, text_col3)
SET table_col1=CONCAT(text_col1, text_col2),
table_col3=23
IGNORE text_col3
This can be used to skip over extra columns in the text file,
or update columns based on expressions of the read data.
* New functions for working with `SET' type columns:
* `ADD_TO_SET(VALUE,SET)'
* `REMOVE_FROM_SET(VALUE,SET)'
* If you abort `mysql' in the middle of a query, you should open
another connection and kill the old running query.
Alternatively, an attempt should be made to detect this in
the server.
* Add a storage engine interface for table information so that
you can use it as a system table. This would be a bit slow if
you requested information about all tables, but very
flexible. `SHOW INFO FROM TBL_NAME' for basic table
information should be implemented.
* Allow `SELECT a FROM TBL_NAME1 LEFT JOIN TBL_NAME2 USING
(a)'; in this case `a' is assumed to come from TBL_NAME1.
* `DELETE' and `REPLACE' options to the `UPDATE' statement
(this will delete rows when a duplicate-key error occurs
while updating).
* Change the format of `DATETIME' to store fractions of seconds.
* Make it possible to use the new GNU `regexp' library instead
of the current one (the new library should be much faster
than the current one).
Standards compliance, portability and migration
* Add `ANY()', `EVERY()', and `SOME()' group functions. In
standard SQL, these work only on boolean columns, but we can
extend these to work on any columns or expressions by
treating a value of zero as FALSE and non-zero values as TRUE.
* Fix the type of `MAX(column)' to be the same as the column
type:
mysql> CREATE TABLE t1 (a DATE);
mysql> INSERT INTO t1 VALUES (NOW());
mysql> CREATE TABLE t2 SELECT MAX(a) FROM t1;
mysql> SHOW COLUMNS FROM t2;
Speed enhancements
* Don't allow more than a defined number of threads to run
`MyISAM' recovery at the same time.
* Change `INSERT INTO ... SELECT' to optionally use concurrent
inserts.
* Add an option to periodically flush key pages for tables with
delayed keys if they haven't been used in a while.
* Allow join on key parts (optimization issue).
* Add a log file analyzer that can extract information about
which tables are hit most often, how often multiple-table
joins are executed, and so on. This should help users
identify areas of table design that could be optimized to
execute much more efficient queries.
Usability enhancements
* Return the original column types when doing `SELECT
MIN(column) ... GROUP BY'.
* Make it possible to specify `long_query_time' with a
granularity in microseconds.
* Link the `myisampack' code into the server so that it can
perform `PACK' or `COMPRESS' operations.
* Add a temporary key buffer cache during
`INSERT/DELETE/UPDATE' so that we can gracefully recover if
the index file gets full.
* If you perform an `ALTER TABLE' on a table that is symlinked
to another disk, create temporary tables on that disk.
* Implement a `DATE/DATETIME' type that handles time zone
information properly, to make dealing with dates in different
time zones easier.
* Fix `configure' so that all libraries (like `MyISAM') can be
compiled without threads.
* Allow user variables as `LIMIT' arguments; for example,
`LIMIT @a,@b'.
* Automatic output from `mysql' to a Web browser.
* `LOCK DATABASES' (with various options).
* Many more variables for `SHOW STATUS'. Record reads and
updates. Selects on a single table and selects with joins.
Mean number of tables in selects. Number of `ORDER BY' and
`GROUP BY' queries.
* `mysqladmin copy database new-database'; this requires a
`COPY' operation to be added to `mysqld'.
* Processlist output should indicate the number of
queries/threads.
* `SHOW HOSTS' for printing information about the hostname
cache.
* Change table names from empty strings to `NULL' for
calculated columns.
* Don't use `Item_copy_string' on numerical values to avoid
number-to-string-to-number conversion in case of `SELECT
COUNT(*)*(id+0) FROM TBL_NAME GROUP BY id'.
* Change so that `ALTER TABLE' doesn't abort clients that
execute `INSERT DELAYED'.
* Fix so that when columns are referenced in an `UPDATE' clause,
they contain the old values from before the update started.
New operating systems
* Port the MySQL clients to LynxOS.
Info Catalog
(mysql.info.gz) TODO MySQL 5
(mysql.info.gz) TODO
(mysql.info.gz) TODO sometime
automatically generated byinfo2html