MySQL Reference Manual for version 3.23.15-alpha. - G List of things we want to add to MySQL in the future (The TODO)
Go to the first, previous, next, last section, table of contents.
G List of things we want to add to MySQL in the future (The TODO)
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 3 MySQL licensing and support.
G.1 Things that must done in the real near future
One way replication
Transactions
Subqueries. select id from t where grp in (select grp from g where u > 100)
Allow mysqld to support many character sets at the same time.
If you perform an ALTER TABLE on a table that is symlinked to another
disk, create temporary tables on this disk.
RENAME table as table, table as table [,...]
FreeBSD and MIT-pthreads; Do sleeping threads take CPU?
Check if locked threads take any CPU.
Allow join on key parts (optimization issue).
Entry for DECRYPT().
Remember FOREIGN key definitions in the `.frm' file.
Server side cursors.
Allow users to change startup options.
Check if 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.
Allow SQL variables in LIMIT, like in LIMIT @a,@b.
Don't add automatic DEFAULT values to columns. Give an error when using
an INSERT that doesn't contain a column that doesn't have a
DEFAULT.
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:
SELECT CACHED ....
Fix `libmysql.c' to allow two mysql_query() commands in a row
without reading results or give a nice error message when one does this.
Optimize BIT type to take 1 bit (now BIT takes 1 char).
Check why MIT-pthreads ctime() doesn't work on some FreeBSD systems.
Add ORDER BY to update. This would be handy with functions like:
generate_id(start,step).
Add an IMAGE option to LOAD DATA INFILE to not update
TIMESTAMP and AUTO_INCREMENT fields.
Make LOAD DATA INFILE understand a syntax like:
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
Add true VARCHAR support (There is already support for this in MyISAM).
Automatic output from mysql to netscape.
LOCK DATABASES. (with various options)
Change sort to allocate memory in ``hunks'' to get better memory utilization.
DECIMAL and NUMERIC types can't read exponential numbers;
Field_decimal::store(const char *from,uint len) must be recoded
to fix this.
Fix mysql.cc to do fewer malloc() calls when hashing field
names.
Functions:
ADD_TO_SET(value,set) and REMOVE_FROM_SET(value,set)
Add use of t1 JOIN t2 ON ... and t1 JOIN t2 USING ...
Currently, you can only use this syntax with LEFT JOIN.
Add full support for unsigned long long type.
Function CASE.
Many more variables for show status. Counts for:
INSERT/DELETE/UPDATE 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).
ORDER BY, GROUP BY, temporary tables created.
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 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. SHOW INFO FROM tbl_name for basic table information
should be implemented.
Add support for UNICODE.
NATURAL JOIN.
Oracle like CONNECT BY PRIOR ... to search hierarchy structures.
RENAME DATABASE
mysqladmin copy database new-database.
Processlist should show number of queries/thread.
IGNORE option to the UPDATE statement (this will delete
all rows that gets a dupplicate key error while updating).
Change the format of DATETIME to store fractions of seconds.
Add all missing ANSI92 and ODBC 3.0 types.
Change table names from empty strings to NULL for calculated columns.
Don't use 'Item_copy_string' on numerical values to avoid
number->string->number conversion in case of:
SELECT COUNT(*)*(id+0) FROM table_name GROUP BY id
Make it possible to use the new GNU regexp library instead of the current
one (The GNU library should be much faster than the old one).
Change that ALTER TABLE doesn't abort clients that executes
INSERT DELAYED.
Allow select a from crash_me left join crash_me2 using (a); In this
case a is assumed to come from the crash_me table.
LOAD DATA INFILE 'file_name' INTO TABLE 'table_name' ERRORS TO err_table_name
which would cause any errors/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
Fix that when columns referenced in an UPDATE clause contains the old
values before the update started.
Allow update of varibles in UPDATE statements. For example:
UPDATE TABLE foo SET @a=a+b,a=@a, b=@a+c
G.2 Things that have to be done sometime
Implement function: get_changed_tables(timeout,table1,table2,...)
Atomic updates; This includes a language that one can even use for
a set of stored procedures.
update items,month set items.price=month.price where items.id=month.id;
Change reading through tables to use memmap when possible. Now only
compressed tables use memmap.
Add a new privilege 'Show_priv' for SHOW commands.
Make the automatic timestamp code nicer. Add timestamps to the update
log with SET TIMESTAMP=#;
Use read/write mutex in some places to get more speed.
Full foreign key support. One probably wants to implement a procedural
language first.
Simple views (first on one table, later on any expression).
Automatically close some tables if a table, temporary table or temporary files
gets error 23 (not enough open files).
When one finds a field=#, change all occurrences of field to #. Now this
is only done for some simple cases.
Change all const expressions with calculated expressions if possible.
Optimize key = expression. At the moment only key = field or key =
constant are optimized.
Join some of the copy functions for nicer code.
Change `sql_yacc.yy' to an inline parser to reduce its size and get
better error messages (5 days).
Change the parser to use only one rule per different number of arguments
in function.
Use of full calculation names in the order part. (For ACCESS97)
UNION, MINUS, INTERSECT and FULL OUTER JOIN.
(Currently only LEFT OUTER JOIN is supported)
Allow UNIQUE on fields that can be NULL.
SQL_OPTION MAX_SELECT_TIME=# to put a time limit on a query.
Make the update log to a database.
Negative LIMIT to retrieve data from the end.
Alarm around client connect/read/write functions.
Make a mysqld version which isn't multithreaded (3-5 days).
Please note the changes to 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.
Better dynamic record layout to avoid fragmentation.
UPDATE SET blob=read_blob_from_file('my_gif') where id=1;
Allow a client to request logging.
Add use of zlib() for gzip-ed files to LOAD DATA INFILE.
Fix sorting and grouping of BLOB columns (partly solved now).
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 MySQL server.
Change to use semaphores when counting threads. One should first implement
a semaphore library to MIT-pthreads.
Don't assign a new AUTO_INCREMENT value when one sets a column to 0.
Use NULL instead.
Add full support for JOIN with parentheses.
Reuse threads for systems with a lot of connections.
As an alternative for one thread / connection manage a pool of threads
to handle the queries.
Allow one to get more than one lock with 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. TcX's main
business is the use of MySQL not the development of it. But
because TcX is a very flexible company, we have put a lot of resources
into the development of MySQL.
G.3 Some things we don't have any plans to do
Nothing; In the long run we plan to be fully ANSI 92 / ANSI 99 compliant.
Go to the first, previous, next, last section, table of contents.
Wyszukiwarka
Podobne podstrony:
manual todoAquarium Aquaristik Amtra Manual Phosphatreductewm2000 service manualIZH 53 Manualmanual performance 4ewpqgkkdcabjur6zp7uvdqa7kxjupvngosc6aa action=produkty wyswietl&todo=koszyk&produkt=12&key= action=produkty wyswietl&todo=koszyk&produkt=71&key=Bazydanych Manualmanual Privilege systemmanual?ding functionsMedycyna manualna Wprowadzenie do teorii, rozpoznawanie i leczenie action=produkty wyswietl&todo=koszyk&produkt=61&key= action=produkty wyswietl&todo=koszyk&produkt=27&key=Manual Smart2go PLmanual ODBCManual Nokia BH 501 PLwięcej podobnych podstron