[prev in list] [next in list] [prev in thread] [next in thread] 

List:       mysql-internals
Subject:    bk commit - mysqldoc tree (Mike.Hillyer:1.2409)
From:       mhillyer () mysql ! com
Date:       2004-11-30 23:00:46
Message-ID: 200411302300.iAUN0kAr019754 () www ! openwin ! org
[Download RAW message or body]

Below is the list of changes that have just been committed into a local
mysqldoc repository of root. When root does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://www.mysql.com/doc/I/n/Installing_source_tree.html

ChangeSet
  1.2409 04/11/30 16:00:43 Mike.Hillyer@www.openwin.org +1 -0
  Moved TODO section to appear before News sections in appendix of refman. WL#2219

  Docs/manual.texi
    1.2265 04/11/30 16:00:41 Mike.Hillyer@www.openwin.org +460 -463
    Moved TODO section to appear before News sections in appendix of refman. WL#2219

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	Mike.Hillyer
# Host:	www.openwin.org
# Root:	/home/mysqldoc/mysqldoc

--- 1.2264/Docs/manual.texi	2004-11-29 17:00:27 -07:00
+++ 1.2265/Docs/manual.texi	2004-11-30 16:00:41 -07:00
@@ -145,6 +145,7 @@
 * Extending MySQL::             Extending MySQL
 * Problems::                    Problems and Common Errors
 * Credits::                     Credits
+* TODO::                        MySQL and the Future (the TODO)
 * News::                        MySQL Change History
 * Porting::                     Porting to Other Systems
 * Environment variables::       Environment Variables
@@ -244,7 +245,6 @@
 * Manual-info::                 About This Manual
 * What-is::                     Overview of the MySQL Database Management System
 * Roadmap::                     MySQL Development Roadmap
-* TODO::                        MySQL and the Future (the TODO)
 * MySQL Information Sources::   MySQL Information Sources
 * Compatibility::               MySQL Standards Compliance
 @end menu
@@ -1056,7 +1056,7 @@
 See @ref{Y2K issues} for MySQL Server's rules for dealing
 with ambiguous date input data that contains two-digit year values.
 
-@node Roadmap, TODO, What-is, Introduction
+@node Roadmap, MySQL Information Sources, What-is, Introduction
 @section MySQL Development Roadmap
 
 This section provides a snapshot of the MySQL development roadmap, including
@@ -1405,464 +1405,7 @@
 @xref{Installing source tree}.
 As of December 2003, binary builds of version 5.0 have also been available.
 
-
-@node TODO, MySQL Information Sources, Roadmap, Introduction
-@section MySQL and the Future (the TODO)
-
-@cindex ToDo list for MySQL
-
-@menu
-* TODO MySQL 5.0::              New Features Planned for 5.0
-* TODO MySQL 5.1::              New Features Planned for 5.1
-* TODO future::                 New Features Planned for the Near Future
-* TODO sometime::               New Features Planned for the Mid-Term Future
-* TODO unplanned::              New Features We Don't Plan to Implement
-@end menu
-
-This section summarizes the features that we plan to implement in
-MySQL Server. The items are ordered by release series. Within a list,
-items are shown in approximately the order they will be done.
-
-@strong{Note}: If you are an enterprise-level user with an urgent need
-for a particular feature, please contact @email{sales@@mysql.com} to
-discuss sponsoring options. Targeted financing by sponsor companies
-allows us to allocate additional resources for specific purposes.
-One example of a feature sponsored in the past is replication.
-
-
-@node TODO MySQL 5.0, TODO MySQL 5.1, TODO, TODO
-@subsection New Features Planned for 5.0
-
-The following features are planned for inclusion into MySQL 5.0.
-Some of the features such as stored procedures are complete and are
-included in MySQL 5.0 alpha, which is available now.  Others such
-as cursors are only partially available. Expect these and other
-features to mature and be fully supported in upcoming releases.
-
-Note that because we have many developers that are working on different
-projects, there will also be many additional features. There is also a
-small chance that some of these features will be added to MySQL 4.1.
-For a list what is already done in MySQL 4.1, see @ref{Nutshell 4.1 features}.
-
-For those wishing to take a look at the bleeding edge of MySQL
-development, we make our BitKeeper repository for
-MySQL version 5.0 publicly available.
-@xref{Installing source tree}.
-As of December 2003, binary builds of version 5.0 are also available.
-
-@table @asis
-
-@item Views
-@itemize @bullet
-@item
-Views, implemented in stepwise fashion up to full functionality.
-@xref{ANSI diff Views}. @xref{CREATE VIEW,  , @code{CREATE VIEW}}.
-@end itemize
-
-@item Stored Procedures
-@itemize @bullet
-@item
-Stored procedures currently are implemented, based on the SQL:2003
-standard.
-@xref{Stored Procedures}.
-
-@c Commented this out -- it's unclear whether this will happen or how much.
-
-@c We will also implement a framework to hook in external languages,
-@c and (where possible) compatibility with, for example, PL/SQL and T-SQL.
-@end itemize
-
-@item New functionality
-@itemize @bullet
-@item
-Elementary cursor support.
-@xref{Cursors}.
-@item
-The ability to specify explicitly for @code{MyISAM} tables that an index
-should be created as an @code{RTREE} index.  (In MySQL 4.1, @code{RTREE} indexes
-are used internally for geometrical data that use GIS data types, but cannot be
-created on request.)
-@item
-Dynamic length rows for @code{MEMORY} tables.
-@end itemize
-
-@item Standards compliance, portability and migration
-@itemize @bullet
-@item
-Support for Data Dictionary / @code{INFORMATION_SCHEMA}.
-@item
-Add true @code{VARCHAR} support (column lengths longer than 255, and
-no stripping of trailing whitespace).
-There is already support for this in the @code{MyISAM} storage engine,
-but it is not yet available at the user level.
-@end itemize
-
-@item Speed enhancements
-@itemize @bullet
-@item
-@code{SHOW COLUMNS FROM @var{tbl_name}} (used by the @command{mysql} client to allow
-expansions of column names) should not open the table, only the
-definition file. This will require less memory and be much faster.
-@item
-Allow @code{DELETE} on @code{MyISAM} tables to use the record cache.
-To do this, we need to update the threads record cache when we update
-the @file{.MYD} file.
-@item
-Better support for @code{MEMORY} tables:
-@itemize @bullet
-@item
-Dynamic length rows.
-@item
-Faster row handling (less copying).
-@end itemize
-@end itemize
-
-@item Usability enhancements
-@itemize @bullet
-@item
-Resolving the issue of @code{RENAME TABLE} on a table used in an active
-@code{MERGE} table possibly corrupting the table.
-@end itemize
-
-@end table
-
-The news section of this manual includes a more in-depth list of features.
-@xref{News-5.0.x}.
-
-
-@node TODO MySQL 5.1, TODO future, TODO MySQL 5.0, TODO
-@subsection New Features Planned for 5.1
-
-@table @asis
-@item New functionality
-@itemize @bullet
-@item
-@code{FOREIGN KEY} support for all table types, not just @code{InnoDB}.
-@item
-Column-level constraints.
-@xref{Constraints}.
-@c Commented out, it's not actually on the list
-@c @item
-@c Fail-safe replication.
-@item
-Online backup with very low performance penalty.  The online backup will
-make it easy to add a new replication slave without taking down the
-master.
-@end itemize
-
-@c @item Standards compliance, portability and migration
-@c @itemize @bullet
-@c @end itemize
-
-@item Speed enhancements
-@itemize @bullet
-@item
-New text based table definition file format (@file{.frm} files) and a
-table cache for table definitions.  This will enable us to do faster
-queries of table structures and do more efficient foreign key support.
-@item
-Optimize the @code{BIT} type to take one bit. (@code{BIT} now takes one byte;
-it is treated as a synonym for @code{TINYINT}.)
-@end itemize
-
-@c @item Internationalzsation
-@c @itemize @bullet
-@c @end itemize
-
-@item Usability enhancements
-@itemize @bullet
-@item
-Add options to the client/server protocol to get progress notes
-for long running commands.
-@item
-Implement @code{RENAME DATABASE}. To make this safe for all storage engines,
-it should work as follows:
-@enumerate
-@item
-Create the new database.
-@item
-For every table, do a rename of the table to another database, as
-we do with the @code{RENAME} command.
-@item
-Drop the old database.
-@end enumerate
-@item
-New internal file interface change.  This will make all file handling much
-more general and make it easier to add extensions like RAID.
-@end itemize
-
-@end table
-
-
-@node TODO future, TODO sometime, TODO MySQL 5.1, TODO
-@subsection New Features Planned for the Near Future
-
-@table @asis
-@item New functionality
-@itemize @bullet
-@item
-Oracle-like @code{CONNECT BY PRIOR} to search tree-like (hierarchical)
-structures.
-@item
-Add all missing standard SQL and ODBC 3.0 types.
-@item
-Add @code{SUM(DISTINCT)}.
-@item
-@code{INSERT SQL_CONCURRENT} and @command{mysqld --concurrent-insert} to do
-a concurrent insert at the end of a table if the table is read-locked.
-@item
-Allow variables to be updated in @code{UPDATE} statements. For example:
-@code{UPDATE foo SET @@a:=a+b,a=@@a, b=@@a+c}.
-@item
-Change when user variables are updated so that you can use them with
-@code{GROUP BY}, as in the following statement:
-@code{SELECT id, @@a:=COUNT(*), SUM(@var{sum_col})/@@a FROM @var{tbl_name} GROUP BY id}.
-@item
-Add an @code{IMAGE} option to @code{LOAD DATA INFILE} to not update
-@code{TIMESTAMP} and @code{AUTO_INCREMENT} columns.
-@item
-Add @code{LOAD DATA INFILE ... UPDATE} syntax that works like this:
-@itemize @bullet
-@item
-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 @emph{missing} from the input record are not touched.
-@item
-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
-@code{LOAD DATA INFILE ... REPLACE INTO}.
-@end itemize
-@item
-Make @code{LOAD DATA INFILE} understand syntax like this:
-@example
-LOAD DATA INFILE '@var{file_name}.txt' INTO TABLE @var{tbl_name}
-     TEXT_FIELDS (text_col1, text_col2, text_col3)
-     SET table_col1=CONCAT(text_col1, text_col2),
-         table_col3=23
-     IGNORE text_col3
-@end example
-This can be used to skip over extra columns in the text file,
-or update columns based on expressions of the read data.
-@item
-New functions for working with @code{SET} type columns:
-@itemize @bullet
-@item @code{ADD_TO_SET(@var{value},@var{set})}
-@item @code{REMOVE_FROM_SET(@var{value},@var{set})}
-@end itemize
-@item
-If you abort @command{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.
-@item
-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.  @code{SHOW INFO FROM @var{tbl_name}} for basic table information
-should be implemented.
-@item
-Allow @code{SELECT a FROM @var{tbl_name1} LEFT JOIN @var{tbl_name2} USING (a)}; in this
-case @code{a} is assumed to come from @var{tbl_name1}.
-@item
-@code{DELETE} and @code{REPLACE} options to the @code{UPDATE} statement
-(this will delete rows when a duplicate-key error occurs while updating).
-@item
-Change the format of @code{DATETIME} to store fractions of seconds.
-@item
-Make it possible to use the new GNU @code{regexp} library instead of the current
-one (the new library should be much faster than the current one).
-@end itemize
-
-@item Standards compliance, portability and migration
-@itemize @bullet
-@item
-Add @code{ANY()}, @code{EVERY()}, and @code{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.
-@item
-Fix the type of @code{MAX(column)} to be the same as the column type:
-@example
-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;
-@end example
-@end itemize
-
-@item Speed enhancements
-@itemize @bullet
-@item
-Don't allow more than a defined number of threads to run @code{MyISAM}
-recovery at the same time.
-@item
-Change @code{INSERT INTO ... SELECT} to optionally use concurrent inserts.
-@item
-Add an option to periodically flush key pages for tables with delayed
-keys if they haven't been used in a while.
-@item
-Allow join on key parts (optimization issue).
-@item
-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.
-@end itemize
-
-@c Internationalization has no items, so it's commented out. Remove
-@c the comment markers if anything is added here.
-
-@c @item Internationalization
-@c @itemize @bullet
-@c @end itemize
-
-@item Usability enhancements
-@itemize @bullet
-@item
-Return the original column types when doing
-@code{SELECT MIN(column) ... GROUP BY}.
-@item
-Make it possible to specify @code{long_query_time} with a granularity
-in microseconds.
-@item
-Link the @command{myisampack} code into the server so that it can perform
-@code{PACK} or @code{COMPRESS} operations.
-@item
-Add a temporary key buffer cache during @code{INSERT/DELETE/UPDATE} so that we
-can gracefully recover if the index file gets full.
-@item
-If you perform an @code{ALTER TABLE} on a table that is symlinked to another
-disk, create temporary tables on that disk.
-@item
-Implement a @code{DATE/DATETIME} type that handles time zone information
-properly, to make dealing with dates in different time zones easier.
-@item
-Fix @command{configure} so that all libraries (like @code{MyISAM})
-can be compiled without threads.
-@item
-Allow user variables as @code{LIMIT} arguments; for example,
-@code{LIMIT @@a,@@b}.
-@item
-Automatic output from @command{mysql} to a Web browser.
-@item
-@code{LOCK DATABASES} (with various options).
-@item
-Many more variables for @code{SHOW STATUS}.  Record reads and
-updates.  Selects on a single table and selects with joins.  Mean number of
-tables in selects. Number of @code{ORDER BY} and @code{GROUP BY} queries.
-@item
-@command{mysqladmin copy database new-database}; this requires a @code{COPY}
-operation to be added to @command{mysqld}.
-@item
-Processlist output should indicate the number of queries/threads.
-@item
-@code{SHOW HOSTS} for printing information about the hostname cache.
-@item
-Change table names from empty strings to @code{NULL} for calculated columns.
-@item
-Don't use @code{Item_copy_string} on numerical values to avoid
-number-to-string-to-number conversion in case of
-@code{SELECT COUNT(*)*(id+0) FROM @var{tbl_name} GROUP BY id}.
-@item
-Change so that @code{ALTER TABLE} doesn't abort clients
-that execute @code{INSERT DELAYED}.
-@item
-Fix so that when columns are referenced in an @code{UPDATE} clause,
-they contain the old values from before the update started.
-@end itemize
-
-@item New operating systems
-@itemize @bullet
-@item
-Port the MySQL clients to LynxOS.
-@end itemize
-
-@end table
-
-
-@node TODO sometime, TODO unplanned, TODO future, TODO
-@subsection New Features Planned for the Mid-Term Future
-
-@itemize @bullet
-@item
-Implement function: @code{get_changed_tables(timeout,table1,table2,...)}.
-@item
-Change reading through tables to use @code{mmap()} when possible. Now only
-compressed tables use @code{mmap()}.
-@item
-Make the automatic timestamp code nicer.  Add timestamps to the update
-log with @code{SET TIMESTAMP=val;}.
-@item
-Use read/write mutex in some places to get more speed.
-@item
-Automatically close some tables if a table, temporary table, or temporary file
-gets error 23 (too many open files).
-@item
-Better constant propagation. When an occurrence of @var{col_name=n}
-is found in an expression, for some constant @code{n}, replace other
-occurrences of @var{col_name} within the expression with @code{n}.
-Currently, this is done only for some simple cases.
-@item
-Change all const expressions with calculated expressions if possible.
-@item
-Optimize @var{key} = @var{expr} comparisons. At the moment, only
-@var{key} = @var{column} or @var{key} = @var{constant} comparisons are
-optimized.
-@item
-Join some of the copy functions for nicer code.
-@item
-Change @file{sql_yacc.yy} to an inline parser to reduce its size and get
-better error messages.
-@item
-Change the parser to use only one rule per different number of arguments
-in function.
-@item
-Use of full calculation names in the order part (for Access97).
-@item
-@code{MINUS}, @code{INTERSECT}, and @code{FULL OUTER JOIN}.
-(Currently @code{UNION} and @code{LEFT|RIGHT OUTER JOIN} are supported.)
-@item
-Allow @code{SQL_OPTION MAX_SELECT_TIME=val}, for placing a time limit on a query.
-@item
-Allow updates to be logged to a database.
-@item
-Enhance @code{LIMIT} to allow retrieval of data from the end of a result set.
-@item
-Alarm around client connect/read/write functions.
-@item
-Please note the changes to @command{mysqld_safe}: According to FSSTND (which
-Debian tries to follow), PID files should go into @file{/var/run/<progname>.pid}
-and log files into @file{/var/log}. It would be nice if you could put the
-"DATADIR" in the first declaration of "pidfile" and "log" so that the
-placement of these files can be changed with a single statement.
-@item
-Allow a client to request logging.
-@item
-Allow the @code{LOAD DATA INFILE} statement
-to read files that have been compressed with @command{gzip}.
-@item
-Fix sorting and grouping of @code{BLOB} columns (partly solved now).
-@item
-Change to use semaphores when counting threads.  One should first implement
-a semaphore library for MIT-pthreads.
-@item
-Add full support for @code{JOIN} with parentheses.
-@item
-As an alternative to the one-thread-per-connection model, manage a pool
-of threads to handle queries.
-@item
-Allow @code{GET_LOCK()} to obtain more than one lock.  When doing this, it is
-also necessary to handle the possible deadlocks this change will introduce.
-@end itemize
-
-
-@node TODO unplanned,  , TODO sometime, TODO
-@subsection New Features We Don't Plan to Implement
-
-We aim toward full compliance with ANSI/ISO SQL. There are no features
-we plan not to implement.
-
-
-@node MySQL Information Sources, Compatibility, TODO, Introduction
+@node MySQL Information Sources, Compatibility, Roadmap, Introduction
 @section MySQL Information Sources
 
 @menu
@@ -69075,7 +68618,7 @@
 You can now store data in the cluster by using any table created with 
 @code{ENGINE=NDBCLUSTER} or its alias @code{ENGINE=NDB}.
 
-@node MySQL Cluster Config File, ,MySQL Cluster quick, MySQL Cluster Configuration
+@node MySQL Cluster Config File,  , MySQL Cluster quick, MySQL Cluster Configuration
 @subsection Configuration File
 
 @menu
@@ -92421,7 +91964,7 @@
 @end itemize
 
 
-@node Credits, News, Problems, Top
+@node Credits, TODO, Problems, Top
 @appendix Credits
 
 @cindex developers, list of
@@ -93190,8 +92733,462 @@
 @code{--skip-show-database}
 @end table
 
+@node TODO, News, Credits, Top
+@appendix MySQL and the Future (the TODO)
+
+@cindex ToDo list for MySQL
+
+@menu
+* TODO MySQL 5.0::              New Features Planned for 5.0
+* TODO MySQL 5.1::              New Features Planned for 5.1
+* TODO future::                 New Features Planned for the Near Future
+* TODO sometime::               New Features Planned for the Mid-Term Future
+* TODO unplanned::              New Features We Don't Plan to Implement
+@end menu
+
+This section summarizes the features that we plan to implement in
+MySQL Server. The items are ordered by release series. Within a list,
+items are shown in approximately the order they will be done.
+
+@strong{Note}: If you are an enterprise-level user with an urgent need
+for a particular feature, please contact @email{sales@@mysql.com} to
+discuss sponsoring options. Targeted financing by sponsor companies
+allows us to allocate additional resources for specific purposes.
+One example of a feature sponsored in the past is replication.
+
+
+@node TODO MySQL 5.0, TODO MySQL 5.1, TODO, TODO
+@appendixsec New Features Planned for 5.0
+
+The following features are planned for inclusion into MySQL 5.0.
+Some of the features such as stored procedures are complete and are
+included in MySQL 5.0 alpha, which is available now.  Others such
+as cursors are only partially available. Expect these and other
+features to mature and be fully supported in upcoming releases.
+
+Note that because we have many developers that are working on different
+projects, there will also be many additional features. There is also a
+small chance that some of these features will be added to MySQL 4.1.
+For a list what is already done in MySQL 4.1, see @ref{Nutshell 4.1 features}.
+
+For those wishing to take a look at the bleeding edge of MySQL
+development, we make our BitKeeper repository for
+MySQL version 5.0 publicly available.
+@xref{Installing source tree}.
+As of December 2003, binary builds of version 5.0 are also available.
+
+@table @asis
+
+@item Views
+@itemize @bullet
+@item
+Views, implemented in stepwise fashion up to full functionality.
+@xref{ANSI diff Views}. @xref{CREATE VIEW,  , @code{CREATE VIEW}}.
+@end itemize
+
+@item Stored Procedures
+@itemize @bullet
+@item
+Stored procedures currently are implemented, based on the SQL:2003
+standard.
+@xref{Stored Procedures}.
+
+@c Commented this out -- it's unclear whether this will happen or how much.
+
+@c We will also implement a framework to hook in external languages,
+@c and (where possible) compatibility with, for example, PL/SQL and T-SQL.
+@end itemize
+
+@item New functionality
+@itemize @bullet
+@item
+Elementary cursor support.
+@xref{Cursors}.
+@item
+The ability to specify explicitly for @code{MyISAM} tables that an index
+should be created as an @code{RTREE} index.  (In MySQL 4.1, @code{RTREE} indexes
+are used internally for geometrical data that use GIS data types, but cannot be
+created on request.)
+@item
+Dynamic length rows for @code{MEMORY} tables.
+@end itemize
+
+@item Standards compliance, portability and migration
+@itemize @bullet
+@item
+Support for Data Dictionary / @code{INFORMATION_SCHEMA}.
+@item
+Add true @code{VARCHAR} support (column lengths longer than 255, and
+no stripping of trailing whitespace).
+There is already support for this in the @code{MyISAM} storage engine,
+but it is not yet available at the user level.
+@end itemize
+
+@item Speed enhancements
+@itemize @bullet
+@item
+@code{SHOW COLUMNS FROM @var{tbl_name}} (used by the @command{mysql} client to allow
+expansions of column names) should not open the table, only the
+definition file. This will require less memory and be much faster.
+@item
+Allow @code{DELETE} on @code{MyISAM} tables to use the record cache.
+To do this, we need to update the threads record cache when we update
+the @file{.MYD} file.
+@item
+Better support for @code{MEMORY} tables:
+@itemize @bullet
+@item
+Dynamic length rows.
+@item
+Faster row handling (less copying).
+@end itemize
+@end itemize
+
+@item Usability enhancements
+@itemize @bullet
+@item
+Resolving the issue of @code{RENAME TABLE} on a table used in an active
+@code{MERGE} table possibly corrupting the table.
+@end itemize
+
+@end table
+
+The news section of this manual includes a more in-depth list of features.
+@xref{News-5.0.x}.
+
+
+@node TODO MySQL 5.1, TODO future, TODO MySQL 5.0, TODO
+@appendixsec New Features Planned for 5.1
+
+@table @asis
+@item New functionality
+@itemize @bullet
+@item
+@code{FOREIGN KEY} support for all table types, not just @code{InnoDB}.
+@item
+Column-level constraints.
+@xref{Constraints}.
+@c Commented out, it's not actually on the list
+@c @item
+@c Fail-safe replication.
+@item
+Online backup with very low performance penalty.  The online backup will
+make it easy to add a new replication slave without taking down the
+master.
+@end itemize
+
+@c @item Standards compliance, portability and migration
+@c @itemize @bullet
+@c @end itemize
+
+@item Speed enhancements
+@itemize @bullet
+@item
+New text based table definition file format (@file{.frm} files) and a
+table cache for table definitions.  This will enable us to do faster
+queries of table structures and do more efficient foreign key support.
+@item
+Optimize the @code{BIT} type to take one bit. (@code{BIT} now takes one byte;
+it is treated as a synonym for @code{TINYINT}.)
+@end itemize
+
+@c @item Internationalzsation
+@c @itemize @bullet
+@c @end itemize
+
+@item Usability enhancements
+@itemize @bullet
+@item
+Add options to the client/server protocol to get progress notes
+for long running commands.
+@item
+Implement @code{RENAME DATABASE}. To make this safe for all storage engines,
+it should work as follows:
+@enumerate
+@item
+Create the new database.
+@item
+For every table, do a rename of the table to another database, as
+we do with the @code{RENAME} command.
+@item
+Drop the old database.
+@end enumerate
+@item
+New internal file interface change.  This will make all file handling much
+more general and make it easier to add extensions like RAID.
+@end itemize
+
+@end table
+
+
+@node TODO future, TODO sometime, TODO MySQL 5.1, TODO
+@appendixsec New Features Planned for the Near Future
+
+@table @asis
+@item New functionality
+@itemize @bullet
+@item
+Oracle-like @code{CONNECT BY PRIOR} to search tree-like (hierarchical)
+structures.
+@item
+Add all missing standard SQL and ODBC 3.0 types.
+@item
+Add @code{SUM(DISTINCT)}.
+@item
+@code{INSERT SQL_CONCURRENT} and @command{mysqld --concurrent-insert} to do
+a concurrent insert at the end of a table if the table is read-locked.
+@item
+Allow variables to be updated in @code{UPDATE} statements. For example:
+@code{UPDATE foo SET @@a:=a+b,a=@@a, b=@@a+c}.
+@item
+Change when user variables are updated so that you can use them with
+@code{GROUP BY}, as in the following statement:
+@code{SELECT id, @@a:=COUNT(*), SUM(@var{sum_col})/@@a FROM @var{tbl_name} GROUP BY id}.
+@item
+Add an @code{IMAGE} option to @code{LOAD DATA INFILE} to not update
+@code{TIMESTAMP} and @code{AUTO_INCREMENT} columns.
+@item
+Add @code{LOAD DATA INFILE ... UPDATE} syntax that works like this:
+@itemize @bullet
+@item
+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 @emph{missing} from the input record are not touched.
+@item
+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
+@code{LOAD DATA INFILE ... REPLACE INTO}.
+@end itemize
+@item
+Make @code{LOAD DATA INFILE} understand syntax like this:
+@example
+LOAD DATA INFILE '@var{file_name}.txt' INTO TABLE @var{tbl_name}
+     TEXT_FIELDS (text_col1, text_col2, text_col3)
+     SET table_col1=CONCAT(text_col1, text_col2),
+         table_col3=23
+     IGNORE text_col3
+@end example
+This can be used to skip over extra columns in the text file,
+or update columns based on expressions of the read data.
+@item
+New functions for working with @code{SET} type columns:
+@itemize @bullet
+@item @code{ADD_TO_SET(@var{value},@var{set})}
+@item @code{REMOVE_FROM_SET(@var{value},@var{set})}
+@end itemize
+@item
+If you abort @command{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.
+@item
+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.  @code{SHOW INFO FROM @var{tbl_name}} for basic table information
+should be implemented.
+@item
+Allow @code{SELECT a FROM @var{tbl_name1} LEFT JOIN @var{tbl_name2} USING (a)}; in this
+case @code{a} is assumed to come from @var{tbl_name1}.
+@item
+@code{DELETE} and @code{REPLACE} options to the @code{UPDATE} statement
+(this will delete rows when a duplicate-key error occurs while updating).
+@item
+Change the format of @code{DATETIME} to store fractions of seconds.
+@item
+Make it possible to use the new GNU @code{regexp} library instead of the current
+one (the new library should be much faster than the current one).
+@end itemize
+
+@item Standards compliance, portability and migration
+@itemize @bullet
+@item
+Add @code{ANY()}, @code{EVERY()}, and @code{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.
+@item
+Fix the type of @code{MAX(column)} to be the same as the column type:
+@example
+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;
+@end example
+@end itemize
+
+@item Speed enhancements
+@itemize @bullet
+@item
+Don't allow more than a defined number of threads to run @code{MyISAM}
+recovery at the same time.
+@item
+Change @code{INSERT INTO ... SELECT} to optionally use concurrent inserts.
+@item
+Add an option to periodically flush key pages for tables with delayed
+keys if they haven't been used in a while.
+@item
+Allow join on key parts (optimization issue).
+@item
+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.
+@end itemize
+
+@c Internationalization has no items, so it's commented out. Remove
+@c the comment markers if anything is added here.
+
+@c @item Internationalization
+@c @itemize @bullet
+@c @end itemize
+
+@item Usability enhancements
+@itemize @bullet
+@item
+Return the original column types when doing
+@code{SELECT MIN(column) ... GROUP BY}.
+@item
+Make it possible to specify @code{long_query_time} with a granularity
+in microseconds.
+@item
+Link the @command{myisampack} code into the server so that it can perform
+@code{PACK} or @code{COMPRESS} operations.
+@item
+Add a temporary key buffer cache during @code{INSERT/DELETE/UPDATE} so that we
+can gracefully recover if the index file gets full.
+@item
+If you perform an @code{ALTER TABLE} on a table that is symlinked to another
+disk, create temporary tables on that disk.
+@item
+Implement a @code{DATE/DATETIME} type that handles time zone information
+properly, to make dealing with dates in different time zones easier.
+@item
+Fix @command{configure} so that all libraries (like @code{MyISAM})
+can be compiled without threads.
+@item
+Allow user variables as @code{LIMIT} arguments; for example,
+@code{LIMIT @@a,@@b}.
+@item
+Automatic output from @command{mysql} to a Web browser.
+@item
+@code{LOCK DATABASES} (with various options).
+@item
+Many more variables for @code{SHOW STATUS}.  Record reads and
+updates.  Selects on a single table and selects with joins.  Mean number of
+tables in selects. Number of @code{ORDER BY} and @code{GROUP BY} queries.
+@item
+@command{mysqladmin copy database new-database}; this requires a @code{COPY}
+operation to be added to @command{mysqld}.
+@item
+Processlist output should indicate the number of queries/threads.
+@item
+@code{SHOW HOSTS} for printing information about the hostname cache.
+@item
+Change table names from empty strings to @code{NULL} for calculated columns.
+@item
+Don't use @code{Item_copy_string} on numerical values to avoid
+number-to-string-to-number conversion in case of
+@code{SELECT COUNT(*)*(id+0) FROM @var{tbl_name} GROUP BY id}.
+@item
+Change so that @code{ALTER TABLE} doesn't abort clients
+that execute @code{INSERT DELAYED}.
+@item
+Fix so that when columns are referenced in an @code{UPDATE} clause,
+they contain the old values from before the update started.
+@end itemize
+
+@item New operating systems
+@itemize @bullet
+@item
+Port the MySQL clients to LynxOS.
+@end itemize
+
+@end table
+
+
+@node TODO sometime, TODO unplanned, TODO future, TODO
+@appendixsec New Features Planned for the Mid-Term Future
+
+@itemize @bullet
+@item
+Implement function: @code{get_changed_tables(timeout,table1,table2,...)}.
+@item
+Change reading through tables to use @code{mmap()} when possible. Now only
+compressed tables use @code{mmap()}.
+@item
+Make the automatic timestamp code nicer.  Add timestamps to the update
+log with @code{SET TIMESTAMP=val;}.
+@item
+Use read/write mutex in some places to get more speed.
+@item
+Automatically close some tables if a table, temporary table, or temporary file
+gets error 23 (too many open files).
+@item
+Better constant propagation. When an occurrence of @var{col_name=n}
+is found in an expression, for some constant @code{n}, replace other
+occurrences of @var{col_name} within the expression with @code{n}.
+Currently, this is done only for some simple cases.
+@item
+Change all const expressions with calculated expressions if possible.
+@item
+Optimize @var{key} = @var{expr} comparisons. At the moment, only
+@var{key} = @var{column} or @var{key} = @var{constant} comparisons are
+optimized.
+@item
+Join some of the copy functions for nicer code.
+@item
+Change @file{sql_yacc.yy} to an inline parser to reduce its size and get
+better error messages.
+@item
+Change the parser to use only one rule per different number of arguments
+in function.
+@item
+Use of full calculation names in the order part (for Access97).
+@item
+@code{MINUS}, @code{INTERSECT}, and @code{FULL OUTER JOIN}.
+(Currently @code{UNION} and @code{LEFT|RIGHT OUTER JOIN} are supported.)
+@item
+Allow @code{SQL_OPTION MAX_SELECT_TIME=val}, for placing a time limit on a query.
+@item
+Allow updates to be logged to a database.
+@item
+Enhance @code{LIMIT} to allow retrieval of data from the end of a result set.
+@item
+Alarm around client connect/read/write functions.
+@item
+Please note the changes to @command{mysqld_safe}: According to FSSTND (which
+Debian tries to follow), PID files should go into @file{/var/run/<progname>.pid}
+and log files into @file{/var/log}. It would be nice if you could put the
+"DATADIR" in the first declaration of "pidfile" and "log" so that the
+placement of these files can be changed with a single statement.
+@item
+Allow a client to request logging.
+@item
+Allow the @code{LOAD DATA INFILE} statement
+to read files that have been compressed with @command{gzip}.
+@item
+Fix sorting and grouping of @code{BLOB} columns (partly solved now).
+@item
+Change to use semaphores when counting threads.  One should first implement
+a semaphore library for MIT-pthreads.
+@item
+Add full support for @code{JOIN} with parentheses.
+@item
+As an alternative to the one-thread-per-connection model, manage a pool
+of threads to handle queries.
+@item
+Allow @code{GET_LOCK()} to obtain more than one lock.  When doing this, it is
+also necessary to handle the possible deadlocks this change will introduce.
+@end itemize
+
+
+@node TODO unplanned,  , TODO sometime, TODO
+@appendixsec New Features We Don't Plan to Implement
+
+We aim toward full compliance with ANSI/ISO SQL. There are no features
+we plan not to implement.
 
-@node News, Porting, Credits, Top
+@node News, Porting, TODO, Top
 @appendix MySQL Change History
 
 @cindex ChangeLog

-- 
MySQL Internals Mailing List
For list archives: http://lists.mysql.com/internals
To unsubscribe:    http://lists.mysql.com/internals?unsub=mysql-internals@progressive-comp.com

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic