📄 manual_todo.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0071)manual_TODO.html -->
<html>
<head>
<title>MySQL Reference Manual for version 3.23.7-alpha. - F List of things we want to add
to MySQL in the future (The TODO)</title>
<meta content="text/html; charset=gb2312" http-equiv="Content-Type">
<!-- This HTML file has been created by texi2html 1.52 (hacked by david@detron.se)
from /dr1/my/masters/mysql-3.23/Docs/manual.texi on 9 December 1999 -->
<meta content="Microsoft FrontPage 3.0" name="GENERATOR">
</head>
<body bgColor="#ffffff" link="#101090" text="#000000" vLink="#7030b0">
<p>Go to the <a href="manual_Introduction.html">first</a>, <a href="manual_Bugs.html">previous</a>,
<a href="manual_Porting.html">next</a>, <a href="manual_Concept_Index.html">last</a>
section, <a href="manual_toc.html">table of contents</a>. </p>
<hr>
<h1><a href="manual_toc.html#TODO" name="TODO">F List of things we want to add to MySQL in
the future (The TODO)</a></h1>
<p>Everything in this list is in the order it will be done. If you want to affect the
priority order, please register a license or support us and tell us what you want to have
done more quickly. See section <a
href="manual_Licensing_and_Support.html#Licensing_and_Support">3 MySQL licensing and
support</a>. </p>
<h2><a href="manual_toc.html#TODO_future" name="TODO_future">F.1 Things that must done in
the real near future</a></h2>
<ul>
<li>One way replication </li>
<li>Transactions </li>
<li>Subqueries. <code>select id from t where grp in (select grp from g where u > 100)</code>
</li>
<li>Allow <code>mysqld</code> to support many character sets at the same time. </li>
<li>If you perform an <code>ALTER TABLE</code> on a table that is symlinked to another disk,
create temporary tables on this disk. </li>
<li><code>RENAME table as table, table as table [,...]</code> </li>
<li>FreeBSD and MIT-pthreads; Do sleeping threads take CPU? </li>
<li>Allow join on key parts (optimization issue). </li>
<li>Entry for <code>DECRYPT()</code>. </li>
<li>Remember <code>FOREIGN</code> key definitions in the <tt>`.frm'</tt> file. </li>
<li>Server side cursors. </li>
<li>Allow users to change startup options. </li>
<li>Add --ansi option to MySQL (to change || -> CONCAT()) </li>
<li>Don't add automatic <code>DEFAULT</code> values to columns. Give an error when using an <code>INSERT</code>
that doesn't contain a column that doesn't have a <code>DEFAULT</code>. </li>
<li>Caching of queries and results. This should be done as a separated module that examines
each query and if this is query is in the cache the cached result should be returned. When
one updates a table one should remove as few queries as possible from the cache. This
should give a big speed bost on machines with much RAM where queries are often repeated
(like WWW applications). One idea would be to only cache queries of type: <code>SELECT
CACHED ....</code> </li>
<li>Fix <tt>`libmysql.c'</tt> to allow two <code>mysql_query()</code> commands in a row
without reading results or give a nice error message when one does this. </li>
<li>Optimize <code>BIT</code> type to take 1 bit (now <code>BIT</code> takes 1 char). </li>
<li>Check why MIT-pthreads <code>ctime()</code> doesn't work on some FreeBSD systems. </li>
<li>Check if locked threads take any CPU. </li>
<li>Add <code>ORDER BY</code> to update. This would be handy with functions like: <code>generate_id(start,step)</code>.
</li>
<li>Add an <code>IMAGE</code> option to <code>LOAD DATA INFILE</code> to not update <code>TIMESTAMP</code>
and <code>AUTO_INCREMENT</code> fields. </li>
<li>Make <code>LOAD DATA INFILE</code> understand a syntax like: <pre>LOAD DATA INFILE 'file_name.txt' INTO TABLE tbl_name
TEXT_FIELDS (text_field1, text_field2, text_field3)
SET table_field1=concatenate(text_field1, text_field2), table_field3=23
IGNORE text_field3
</pre>
</li>
<li>Add true <code>VARCHAR</code> support (There is already support for this in MyISAM). </li>
<li>Automatic output from <code>mysql</code> to netscape. </li>
<li><code>LOCK DATABASES</code>. (with various options) </li>
<li><code>NATURAL JOIN</code>. </li>
<li>Change sort to allocate memory in ``hunks'' to get better memory utilization. </li>
<li><code>DECIMAL</code> and <code>NUMERIC</code> types can't read exponential numbers; <code>Field_decimal::store(const
char *from,uint len)</code> must be recoded to fix this. </li>
<li>Fix <code>mysql.cc</code> to do fewer <code>malloc()</code> calls when hashing field
names. </li>
<li>Functions: ADD_TO_SET(value,set) and REMOVE_FROM_SET(value,set) </li>
<li>Add use of <code>t1 JOIN t2 ON ...</code> and <code>t1 JOIN t2 USING ...</code>
Currently, you can only use this syntax with <code>LEFT JOIN</code>. </li>
<li>Add full support for <code>unsigned long long</code> type. </li>
<li>Function <code>CASE</code>. </li>
<li>Many more variables for <code>show status</code>. Counts for: <code>INSERT</code>/<code>DELETE</code>/<code>UPDATE</code>
statements. Records reads and updated. Selects on 1 table and selects with joins. Mean
number of tables in select. Key buffer read/write hits (logical and real). <code>ORDER BY</code>,
<code>GROUP BY</code>, temporary tables created. </li>
<li>If you abort <code>mysql</code> 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. </li>
<li>Add a handler interface for table information so 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 tbl_name</code> for basic table information should be implemented. </li>
<li>Add support for UNICODE. </li>
<li><code>NATURAL JOIN</code>. </li>
<li>Oracle like <code>CONNECT BY PRIOR ...</code> to search hierarchy structures. </li>
<li><code>RENAME DATABASE</code> </li>
<li><code>mysqladmin copy database new-database</code>. </li>
<li>Processlist should show number of queries/thread. </li>
<li><code>IGNORE</code> option to the <code>UPDATE</code> statement (this will delete all
rows that gets a dupplicate key error while updating). </li>
<li>Change the format of <code>DATETIME</code> to store fractions of seconds. </li>
<li>Add all missing ANSI92 and ODBC 3.0 types. </li>
<li>Change table names from empty strings to <code>NULL</code> for calculated columns. </li>
</ul>
<h2><a href="manual_toc.html#TODO_sometime" name="TODO_sometime">F.2 Things that have to
be done sometime</a></h2>
<ul>
<li>Implement function: <code>get_changed_tables(timeout,table1,table2,...)</code> </li>
<li>Implement function: <code>LAST_UPDATED(tbl_name)</code> </li>
<li>Atomic updates; This includes a language that one can even use for a set of stored
procedures. </li>
<li><code>update items,month set items.price=month.price where items.id=month.id;</code> </li>
<li>Change reading through tables to use memmap when possible. Now only compressed tables
use memmap. </li>
<li>Add a new privilege <strong>'Show_priv'</strong> for <code>SHOW</code> commands. </li>
<li>Make the automatic timestamp code nicer. Add timestamps to the update log with <code>SET
TIMESTAMP=#;</code> </li>
<li>Use read/write mutex in some places to get more speed. </li>
<li>Full foreign key support. One probably wants to implement a procedural language first. </li>
<li>Simple views (first on one table, later on any expression). </li>
<li>Automatically close some tables if a table, temporary table or temporary files gets
error 23 (not enough open files). </li>
<li>When one finds a field=#, change all occurrences of field to #. Now this is only done
for some simple cases. </li>
<li>Change all const expressions with calculated expressions if possible. </li>
<li>Optimize key = expression. At the moment only key = field or key = constant are
optimized. </li>
<li>Join some of the copy functions for nicer code. </li>
<li>Change <tt>`sql_yacc.yy'</tt> to an inline parser to reduce its size and get better
error messages (5 days). </li>
<li>Change the parser to use only one rule per different number of arguments in function. </li>
<li>Use of full calculation names in the order part. (For ACCESS97) </li>
<li><code>UNION</code>, <code>MINUS</code>, <code>INTERSECT</code> and <code>FULL OUTER JOIN</code>.
(Currently only <code>LEFT OUTER JOIN</code> is supported) </li>
<li>Allow <code>UNIQUE</code> on fields that can be <code>NULL</code>. </li>
<li><code>SQL_OPTION MAX_SELECT_TIME=#</code> to put a time limit on a query. </li>
<li>Make the update log to a database. </li>
<li>Negative <code>LIMIT</code> to retrieve data from the end. </li>
<li>Alarm around client connect/read/write functions. </li>
<li>Make a <code>mysqld</code> version which isn't multithreaded (3-5 days). </li>
<li>Please note the changes to <code>safe_mysqld</code>: according to FSSTND (which Debian
tries to follow) PID files should go into <tt>`/var/run/<progname>.pid'</tt> and log
files into <tt>`/var/log'</tt>. It would be nice if you could put the "DATADIR"
in the first declaration of "pidfile" and "log", so the placement of
these files can be changed with a single statement. </li>
<li>Better dynamic record layout to avoid fragmentation. </li>
<li><code>UPDATE SET blob=read_blob_from_file('my_gif') where id=1;</code> </li>
<li>Allow a client to request logging. </li>
<li>Add use of <code>zlib()</code> for <code>gzip</code>-ed files to <code>LOAD DATA INFILE</code>.
</li>
<li>Fix sorting and grouping of <code>BLOB</code> columns (partly solved now). </li>
<li>Stored procedures. This is currently not regarded to be very important as stored
procedures are not very standardized yet. Another problem is that true stored procedures
make it much harder for the optimizer and in many cases the result is slower than before
We will, on the other hand, add a simple (atomic) update language that can be used to
write loops and such in the <strong>MySQL</strong> server. </li>
<li>Change to use semaphores when counting threads. One should first implement a semaphore
library to MIT-pthreads. </li>
<li>Don't assign a new <code>AUTO_INCREMENT</code> value when one sets a column to 0. Use <code>NULL</code>
instead. </li>
<li>Add full support for <code>JOIN</code> with parentheses. </li>
<li>Reuse threads for system with a lot of connections. </li>
</ul>
<p>Time is given according to amount of work, not real time. TcX's main business is the
use of <strong>MySQL</strong> not the development of it. But since TcX is a very flexible
company, we have put a lot of resources into the development of <strong>MySQL</strong>. </p>
<h2><a href="manual_toc.html#TODO_unplanned" name="TODO_unplanned">F.3 Some things we
don't have any plans to do</a></h2>
<ul>
<li>Transactions with rollback (we mainly do <code>SELECT</code>s, and because we don't do
transactions, we can be much quicker on everything else). We will support some kind of
atomic operations on multiple tables, though. Currently atomic operations can be done with
<code>LOCK TABLES</code>/<code>UNLOCK TABLES</code> but we will make this more automatic
in the future. </li>
</ul>
<hr>
<p>Go to the <a href="manual_Introduction.html">first</a>, <a href="manual_Bugs.html">previous</a>,
<a href="manual_Porting.html">next</a>, <a href="manual_Concept_Index.html">last</a>
section, <a href="manual_toc.html">table of contents</a>. </p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -