This todo to make MySQL even better. Everything in this list is in the
order it will be done.  If you want to affect the priority order,
please register a licence or support us and tell us your what you want
to have done more quickly.

Fix all bugs in the 3.20.x version.

In next major release (version 3.21.0):

- Move the WHERE optimization from UNIREG to MySQL
- Fix a full WHERE clause (expressions)
- Change fields to classes.
- Implement binary fields.

To be done soon after that:

- ALPHA/DEC Unix, HPUX and AIX ports
- Fix support of calculation in filesort		(1 day)
  Add support of NULL fields in filesort
- Add optimized operation IN				(1 day)
- Change COUNT(),MIN() functions to return a row of 0 and NULLS when not
  used with a GROUP BY.
- Allow SUM functions to be used anywhere in expression
  (eg select SUM(number)/10 from table)
- Fix ODBC to 3.0.
- INNER/OUTER JOINS in some form.
- Fix that temporary HEAP tables is automaticly converted to NISAM if one
  they get to big.
- Split item_func.cc in two files to get around that gcc uses too much
  memory when compiling it.
- Fix libmysql.c to allow two preceding mysql_query() command without
  reading results or give a nice error message.
- Fix mysqlperl to use mysql_real_query, but I don't know enough of the
  Perl API to fix this.
- A distributable test/benchmark/example suite for MySQL. Preferable
  using the DBD perl interface. This so that results can be verifyed
  by running the same queries on different databases and comparing the
  results.
- Change conv_blob to handle blob as a text field.
- Entry for DECRYPT() and ENCRYPT();
- Add option to mysqldump to dump data with 'SELECT * INTO OUTFILE...'
- log file rotation for mysqld.
- log file for incremental backups

This has to be done sometimes:

- Negative LIMIT to retrieve data from the end
- Return error number for error messages to client.
- Alarm round client connect/read/write functions.
- Fix sorting and grouping of blobs.
- Add command EXPLAIN to see what the optimizer has done.
- Change sql_yacc.y to a inline parser to get down it's size and get better
  error messages (5 days)
- Atomic updates
- Change reading through tables to use memmap when possible. Now
  only compressed tables use memmap.
- Grant table for tables.
- Make a SQL standard GRANT command with MySQL extensions.
- Fix completion of table names, column names and functions in MySQL
  (Should be easy with gnu readline).
- mysqladmin kill thread
- group on results not in the column part.
- Change CREATE INDEX to use ALTER TABLE or add secondary indexes
- Change DROP INDEX to use ALTER TABLE or use secondary indexes.
- Support for BINARY data.
- Recode flush_key_blocks for more speed.
- Make a mysqld version with isn't multithreaded (2-4 days)
- Fix up the automatic timestamp code.
- Implement cursors.
 
Side projects:

- A tool (in perl?) to analyze a database and look att the values in
  fields and give a new create table with optimal packing.

Time is given according to amount of work, not real time. I am doing
this on my spare time, but TCX is a very flexible company and it have
given me a lot of time to put into this.

SOME THINGS WE DON'T HAVE ANY PLANS TO INCLUDE:

- Transactions with rollback (we mainly do selects, 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.
