This appendix lists the features that we plan to implement in MySQL.
このリストのすべては、それが終わるだろう順番に書かれています。 もしあなたが優先順位に影響を及ぼしたければ、どうかライセンスかサポート登録して、 我々にあなたがより速く欲しいものを言ってください。 「3 MySQL ライセンスとサポート」節参照.
We plan to make MySQL Version 4.0 a ``quick'' release where we only add some new stuff to enable others to help us with developing new features into Version 4.1. The MySQL 4.0 version should only take us about a month to make after which we want to stabilize it and start working on Version 4.1. Version 4.0 should have the following new features:
The news section for 4.0 includes a list of the features we have already implemented in the 4.0 tree. 「F.1 Changes in release 4.0.x (Development; Alpha)」節参照.
.frm
files) This will enable us
to not run out of bits when adding more table options. One will still
be able to use the old .frm
file format with 4.0. All newly created
tables will, however, use the new format.
The new file format will enable us to add new column types, more options
for keys and FOREIGN KEY
support.
mysqld
as a library. This will have the same interface as the
standard MySQL client (with an extra function to just set up
startup parameters) but will be faster (no TCP/IP or socket overhead),
smaller and much easier to use for embedded products.
One will be able to define at link time if one wants to use the
client/server model or a stand-alone application just by defining which
library to link with.
The mysqld
will support all standard MySQL features and
one can use it in a threaded client to run different queries in each
thread.
RAND()
.
DELETE FROM table_name
will return the number of deleted rows. For
fast execution one should use TRUNCATE table_name
.
DELETE
(cascading DELETE
and multi-table
DELETE
.
DELETE
on MyISAM
tables to use the record cache.
To do this, we need to update the threads record cache when we update
the .MYD
file.
ORDER BY key_name DESC
queries.
SHOW COLUMNS FROM table_name
(used by mysql
client to allow
expansions of column names) should not open the table, but only the
definition file. This will require less memory and be much faster.
SET CHARACTER SET
we should translate the whole query
at once and not only strings. This will enable users to use the translated
characters in database, table and column names.
gethostbyaddr_r()
so that we can change
ip_to_hostname()
to not block other threads while doing DNS lookups.
record_in_range()
method to MERGE
tables to be
able to choose the right index when there is many to choose from. We should
also extend the info interface to get the key distribution for each index,
of analyze
is run on all sub tables.
SET SQL_DEFAULT_TABLE_TYPE=[MyISAM | INNODB | BDB | GEMINI | HEAP]
.
select id from t where grp in (select grp from g where u > 100)
select a.col1, b.col2 from (select max(col1) as col1 from root_table ) a, other_table b where a.col1=b.col1This could be done by automaticly create temporary tables for the derived tables for the duration of the query.
PREPARE
of statements and sending of parameters to mysqld
.
INSERT SQL_CONCURRENT ...
; This will force the insert to happen at the
end of the data file if the table is in use by an select to allow
concurrent inserts.
INSERT ... SELECT
to use concurrent inserts.
SELECT MIN(column)
... GROUP BY
.
long_query_time
with a granularity
in microseconds.
MERGE
tables.
myisampack
code into the server.
INSERT/DELETE/UPDATE
so that we
can gracefully recover if the index file gets full.
ALTER TABLE
を
実行した場合、一時テーブルをこの disk に作成するようにする
DATE/DATETIME
type that handles time zone information
properly, so that dealing with dates in different time zones is easier.
MyISAM
)
without threads.
INSERT SQL_CONCURRENT
and mysqld --concurrent-insert
to do
a concurrent insert at the end of the file if the file is read-locked.
FOREIGN
キーの定義を記憶する。
lockd
works with modern Linux kernels; If not, we have
to fix lockd
! To test this, start mysqld
with
--enable-locking
and run the different fork* test suits. They shouldn't
give any errors if lockd
works.
LIMIT
, like in LIMIT @a,@b
.
DEFAULT
値をフィールドに追加しない。
DEFAULT
を持たないフィールドを含まない INSERT
の使用は
エラーにする
SELECT CACHED ...
mysql_query()
commands in a row
without reading results or give a nice error message when one does this.
BIT
型を 1 bit 取るように最適化 (今 BIT
は一文字とります)
ctime()
が動かないか検証。
TIMESTAMP
と AUTO_INCREMENT
フィールドを更新しないように、
IMAGE
オプションを LOAD DATA INFILE
に追加。
LOAD DATE INFILE.. UPDATE
syntax.
LOAD DATA INFILE ... REPLACE INTO
is now.
LOAD DATA INFILE
に以下の文を理解させる:
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 This can be used to skip over extra columns in the text file, or update columns based on expressions of the read data...
LOAD DATA INFILE 'file_name' INTO TABLE 'table_name' ERRORS TO err_table_name
This would cause any errors and warnings to be logged into the err_table_name
table. That table would have a structure like:
line_number - line number in data file error_message - the error/warning message and maybe data_line - the line from the data file
VARCHAR
のサポート (MyISAM にはこのサポートが既にあります)
mysql
から自動的に netscape に出力
LOCK DATABASES
. (いろいろなオプション付きで)
DECIMAL
と NUMERIC
型は 指数表示の数字を読むことが出来ません:
これを修正するには、
Field_decimal::store(const char *from,uint len)
を再コードしなくてはなりません
mysql.cc
to do fewer malloc()
calls when hashing field
names.
t1 JOIN t2 ON ...
と t1 JOIN t2 USING ...
の使用の追加。
現在、 LEFT JOIN
のみが使用できます。
unsigned long long
型の完全なサポート。
show status
にもっと多くの変数を。
INSERT
/DELETE
/UPDATE
文のカウント。
レコードの読み込みと更新のカウント。
1テーブルでのSELECTとJOINを伴ったSELECTのカウント。
SELECT 中のテーブルの数のカウント。
キーバッファの reaad/write のヒット数(理論値と実数)のカウント。
ORDER BY
, GROUP BY
, 一時テーブルの作成のカウント
mysql
を中断した場合、あなたは他から接続して
走っているクエリを kill しなくてはなりません。
最終的には、こういったことはサーバー内で検知されるように試みるべきです。
SHOW INFO FROM tbl_name
では実行されるべきです。
NATURAL JOIN
and UNION JOIN
.
select a from crash_me left join crash_me2 using (a)
; In this
case a is assumed to come from the crash_me table.
ON
and USING
works with the JOIN
and
INNER JOIN
join types.
CONNECT BY PRIOR ...
to search hierarchy structures.
RENAME DATABASE
mysqladmin copy database new-database
. -- Requires COPY command to be
added to mysqld
SHOW HOSTS
for printing information about the hostname cache.
DELETE
と REPLACE
オプションを UPDATE
文に追加。 (
これは更新中に起こったキーの重複エラーのあるレコードを
全て削除するでしょう).
DATETIME
to store fractions of seconds.
NULL
for calculated columns.
SELECT COUNT(*)*(id+0) FROM table_name GROUP BY id
ALTER TABLE
doesn't abort clients that executes
INSERT DELAYED
.
UPDATE
clause contains the old
values before the update started.
UPDATE
statements. For example:
UPDATE TABLE foo SET @a=a+b,a=@a, b=@a+c
myisamchk
, REPAIR
and OPTIMIZE TABLE
should be able
to handle cases where the data and/or index files are symbolic links.
pread()
/pwrite()
on windows to enable
concurrent inserts.
SUM(DISTINCT)
ANY()
,EVERY()
and SOME()
group functions. In
ANSI SQL these only works on boolean columns, but we can extend these to
work on any columns/expressions by applying: value == 0 -> FALSE and
value <> 0 -> TRUE.
MAX(column)
is the same as the column type.
create table t1 (a DATE); insert into t1 values (now()); create table t2 select max(a) from t1; show columns from t2;
UPDATE
the row
if it exists and INSERT
a new row if the row didn't exist.
(Like REPLACE
works with INSERT
/ DELETE
)
get_changed_tables(timeout,table1,table2,...)
update items,month set
items.price=month.price where items.id=month.id;
;
SHOW
commands.
SET TIMESTAMP=#;
UNION
, MINUS
, INTERSECT
and FULL OUTER JOIN
.
(Currently only LEFT OUTER JOIN
is supported)
UNIQUE
on fields that can be NULL
.
SQL_OPTION MAX_SELECT_TIME=#
to put a time limit on a query.
LIMIT
to retrieve data from the end.
safe_mysqld
: according to FSSTND (which
Debian tries to follow) PID files should go into `/var/run/<progname>.pid'
and log files into `/var/log'. 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.
zlib()
for gzip
-ed files to LOAD DATA INFILE
.
BLOB
columns (partly solved now).
AUTO_INCREMENT
value when one sets a column to 0.
Use NULL
instead.
JOIN
with parentheses.
GET_LOCK
. When doing this,
one must also handle the possible deadlocks this change will introduce.
Time is given according to amount of work, not real time.
Go to the first, previous, next, last section, table of contents.