Home / Documentation / FAQ / Support / Download Mckoi SQL Database - Current TODO

## Mckoi SQL Database Todo

The current TODO list ordered by urgency.

1. More versatile handling of sequences (auto increment).

   A grammar similar to Postgresql and Oracle would probably be best.

2. Fuller support for composite table functions on `SELECT`.

3. Importing and exporting tables to local files ( eg. ".cvs" ).

   I feel this feature would be best implemented as a JDBC utility. I don't see any advantages in complicating the database engine design with this feature (except possibly for performance).

4. Optimize trivial queries such as `SELECT MAX(price) FROM PART`.

5. Aliased expressions in `SELECT` can not be used in the `WHERE` clause. Note that referencing aliased columns in the `HAVING` clause is permitted.

   eg. `SELECT id * 2 my_alias WHERE my_alias = 10;` will not work.

6. Triggers can be made on any table irrespective of user privs.

   Also, triggers can be connected to a trigger source that doesn't exist. The `CREATE TRIGGER` command does not indicate an error if the source does not exist.

7. Multi-column sub-queries eg. `( n, r ) IN ( SELECT c1, c2 ... )`

8. No support for updateable result sets in the JDBC driver.

9. Improve query optimization. Queries such as `(id * 2 > 1000)` could be optimized to `(id > 1000 / 2)` which would only require a simple select rather than an exhaustive select in the former case.

10. Add support for join syntax `FULL OUTER JOIN` in select's `FROM` clause.

    Supporting `FULL OUTER` joins would be good for compatibility with other DBMS's. This TODO has been downgraded to urgency '2' because `LEFT` and `RIGHT` joins are now supported.

11. Optimize so aggregate functions `MIN` and `MAX` exploit table indexing.

    Currently they always brute force search. To optimize this we would need to recognise simple uses of `MIN` and `MAX` during query optimization and use indexing. We can't perform this optimization inside the Function object (can we?).

12. Multi-column indexing.

13. Transaction save points. A roll back takes you to the previous save point in the transaction.

14. Engine indexing changes.

    We may want to change the indexing at some point so it is more self contained and does not necessarily have such a 1-1 relationship with a column. It would be good if multi-column indexes could be defined, and also secondary indexes on a column. Multi-column indexes would be used for sorting and searching involving multiple columns. Secondary indexes would be useful for defining functional ordering `(x - 9) * x` for example, and for speeding up case insensitive and non-lexicographic text searches.

15. The grammer fails with `UPDATE TEST SET TEST3=TEST3 -1`. This is a unary problem.

    Downgraded to urgency 2. This is not an easy problem to fix because of limitations with JavaCC. Could be done with messy hacks to the grammar.

16. Encryption filter on the data conglomerate store.

    This filter would be an interface that all input/output to the data files would go through. The filter would encrypt the data so that the information in the data files could not be easily decypherable by looking at the contents of the file.

17. A server side stored procedure API.

18. A server side trigger API.

19. Database object labelling grammar for marking up columns. tables and schema with notes on their purpose.

20. Should `SELECT count(*) * id FROM Part;` be valid?

    This is mixing aggregates with columns without `GROUP BY`.

21. Intern all BigDecimals in a weak reference cache to allow for faster equality comparisons as well as memory utilization.

22. `ALTER CREATE` does not convert between data types.

    For example, a 'varchar' column is not altered to an 'int'. The urgency of this entry was put down to 1.

23. No cursors (do we really need cursors?).

24. Provide a JDBC property that activates a general compression algorithm to reduce all JDBC communication traffic in client/server mode.

Last Updated: Mon Nov 18 14:36:44 PST 2002 Mckoi SQL Database Copyright © 2000, 2001, 2002 Diehl and Associates, Inc. All rights reserved.