TESTS TO ADD * CACHE-TABLE-QUERIES * Test that ":db-kind :key" adds an index for that key. This is complicated by different backends showing autogenerated primary key in different ways. * Test bigint type * :db-constraint tests * test *db-auto-sync* * for-each-row macro * universal-time COMMONSQL INCOMPATIBILITY <<<<<<< .mine o Complete sql expressions (see operations.lisp) nvl (Oracle specific) userenv (Oracle specific) minus (Oracle specific: does the same as EXCEPT) || ======= >>>>>>> .r9364 o variables (e.g., table identifiers) should be instantiated at runtime <<<<<<< .mine ======= >> The functional sql interface SELECT o keyword arg :refresh should function as advertised >> Symbolic SQL syntax o userenv (Oracle specific but deprecated in Oracle 9) VARIANCES FROM COMMONSQL UPDATE-OBJECT-JOINS: Rather than simply reading the values for each object, to meet CommonSQL spec need to generate a single query to read values for all objects, up to max-len count. >>>>>>> .r9364 COMMIT,ROLLBACK,START-TRANSACTION: When COMMIT or ROLLBACK are called outside of WITH-TRANSACTION, an sql transaction must be explicitly started first with START-TRANSACTION. OPTIMIZATIONS * Revisit result-type list creation, perhaps caching POSSIBLE EXTENSIONS * extend large object support to databases beyond postgresql, improve large object api * add support for prepared statements * port Oracle backend to UFFI NOTES ABOUT THE BACKENDS MYSQL drop-index: requires a table to be specified with the :from keyword parameter views: mysql does not support views queries: nested subqueries are not supported syntax: doesn't support the sql concatenation operator (||). SQLITE create-view: column-list parameter not supported syntax: doesn't support the sql SUBSTRING operator.