r9245: New section on optimizations, especially optimizing JOINs
[clsql.git] / TODO
diff --git a/TODO b/TODO
index b2a71d38b635f21b2b004a9a4843d188cb0061d1..fee5fe3e7ab461357f01334fd37a8dd7aac38b77 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,19 +1,12 @@
-GENERAL 
-
-* port Oracle backend to UFFI.
-* consider adding large object support to mysql and odbc
-* add support for prepared statements. 
-
 TESTS TO ADD
 
 * CACHE-TABLE-QUERIES
-* :VOID-VALUE attribute, use a new view-class with several fields with different void-values
-* :COLUMN attribute
 * 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 New universal and bigint types, add tests for other types such as duration and money
 * Large object testing
-* Test instance slot values when SELECT called for objects
+* Test bigint type
+* :db-constraint tests
+* *update-records-on-make-instance*
 
 COMMONSQL SPEC
 
@@ -27,19 +20,12 @@ COMMONSQL SPEC
   
     SELECT 
       o keyword arg :refresh should function as advertised 
-      o should accept type-modified database identifiers (e.g., 
-        [foo :string] which means that the values in column foo are returned 
-        as Lisp strings) 
-
  >> The object-oriented sql interface
 
     DEF-VIEW-CLASS
-      o get :target-slot working 
       o implement :retrieval :immediate 
 
-    LOOP
-      o should work with object queries as well as functional ones 
-
  >> Symbolic SQL syntax 
 
       o Complete sql expressions (see operations.lisp)
@@ -58,6 +44,20 @@ COMMONSQL SPEC
 
       o variables (e.g., table identifiers) should be instantiated at runtime 
 
+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>
+
+POSSIBLE EXTENSIONS
+
+* port Oracle backend to UFFI
+* large object support 
+* add support for prepared statements
 
 
 NOTES ABOUT THE BACKENDS