-GENERAL
+TESTS TO ADD
-* test on (and port to) openmcl and mcl. SCL no longer affordable to
- individuals;
-* implement remaining functions for CLSQL AODBC backend;
-* port Oracle and ODBC backend to UFFI.
-* port postgresql-socket backend to OpenMCL
+* 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 SPEC
+COMMONSQL INCOMPATIBILITY
-* Missing:
+<<<<<<< .mine
+ o Complete sql expressions (see operations.lisp)
- RECONNECT
- CACHE-TABLE-QUERIES
- *CACHE-TABLE-QUERIES-DEFAULT*
- *DEFAULT-UPDATE-OBJECTS-MAX-LEN*
- UPDATE-OBJECT-JOINS
- INSTANCE-REFRESHED
-
-
-* Incompatible
-
-
- >> Initialisation and connection
-
- CONNECT
- o should accept string as connection spec
-
- DISCONNECT
- o should accept string as connection spec
-
- INITIALIZE-DATABASE-TYPE
- o should initialise appropriate backend
-
- STATUS
- o what is the behaviour in CommonSQL (esp :full parameter)?
+ 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 should accept keyword arg :refresh and call INSTANCE-REFRESHED
- o should return (values result-list field-names)
- o should coerce values returned as strings to appropriate lisp type
+ o keyword arg :refresh should function as advertised
- QUERY
- o should return (values result-list field-names)
- o should coerce values returned as strings to appropriate lisp type
-
- LIST-ATTRIBUTE-TYPES
- o should return list of (attribute datatype precision scale nullable)
-
- LOOP
- o the extension is currently CMUCL specific
-
-
- >> The object-oriented sql interface
-
- DEF-VIEW-CLASS
- o get :target-slot working
- o implement :retrieval :immediate
-
- LIST-CLASSES
- o keyword arg :root-class should do something (portable)
+ >> Symbolic SQL syntax
- DO-QUERY,MAP-QUERY,LOOP
- o should work with object queries as well as functional ones
+ o userenv (Oracle specific but deprecated in Oracle 9)
+VARIANCES FROM COMMONSQL
- >> Symbolic SQL syntax
+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.
- o Complete sql expressions (see operations.lisp)
+>>>>>>> .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.
- substr
- some
- order-by
- times
- nvl
- null
- distinct
- except
- intersect
- between
- userenv
+OPTIMIZATIONS
+
+* Revisit result-type list creation, perhaps caching
- o variables (e.g., table identifiers) should be instantiated at runtime
+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
-transactions: don't seem to work
views: mysql does not support views
-queries: nested subqueries do not seem to work
+queries: nested subqueries are not supported
+syntax: doesn't support the sql concatenation operator (||).
SQLITE
-create-view: column-list parameter not supported
+create-view: column-list parameter not supported
+syntax: doesn't support the sql SUBSTRING operator.