DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(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