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.
-* Large object testing
-* Test bigint type
+* Test that ":db-kind :key" adds an index for that key. This is complicated by
+ different backends showing autogenerated primary key in different ways.
* :db-constraint tests
-* *update-records-on-make-instance*
-
-COMMONSQL SPEC
-
-* Missing:
-
- UPDATE-OBJECT-JOINS
-
-* Incompatible
-
- >> The functional sql interface
-
- SELECT
- o keyword arg :refresh should function as advertised
-
- >> The object-oriented sql interface
-
- DEF-VIEW-CLASS
- o implement :retrieval :immediate
-
- >> Symbolic SQL syntax
-
- o Complete sql expressions (see operations.lisp)
-
- substr
- some
- order-by
- times
- nvl
- null
- distinct
- except
- intersect
- between
- userenv
-
- o variables (e.g., table identifiers) should be instantiated at runtime
+* Number and Char field types
+* symbol slot
+* generalized-boolean slot
+* tests for db-reader and db-writer
OPTIMIZATIONS
-
-* Revisit result-type list creation,perhaps caching
-* Use an inner join for :target-slot in SELECTS rather than multiple
- queries. For example, in the test suite:
- SELECT address.addressid,address.street_number,... FROM address
- INNER JOIN employee_address ON employe_address.address_id=address.address_id
- AND emplid=<id>
+
+* Revisit result-type list creation, perhaps caching
+* Rework LIST-ATTRIBUTE-TYPES and LIST-INDEXES such that they exhibit their
+ current behaviours using single database queries.
+* Possible use of cached attribute type information for operations which
+ insert/update records as mentioned in the CommonSQL user guide.
+* Extend caching of generated SQL strings to more complex expressions which
+ are likely to be repeatedly executed many times.
POSSIBLE EXTENSIONS
-* port Oracle backend to UFFI
-* large object support
+* improve large object api and extend to databases beyond postgresql
* add support for prepared statements
-
-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
-
-SQLITE
-
-create-view: column-list parameter not supported
+RACE CONDITIONS
+* sql/databases.lisp: *connected-databases* is shared globally but not modified in a threadsafe manner.