From e41ff8609cdaee462497c211907c9199226c246d Mon Sep 17 00:00:00 2001 From: Ryan Culpepper Date: Mon, 12 Mar 2012 03:19:15 -0600 Subject: [PATCH] db: trim todo file --- collects/db/TODO | 80 ------------------------------------------------ 1 file changed, 80 deletions(-) diff --git a/collects/db/TODO b/collects/db/TODO index 25f76e28dd..6e1a33f427 100644 --- a/collects/db/TODO +++ b/collects/db/TODO @@ -1,15 +1,3 @@ ----- - -Testing - -- run ODBC tests on Mac -- run ODBC DB2, Oracle tests on win32; also test SQL Server ? -- test util/connect features -- test transaction functions - ----- - -Types - type annotations - two modes: mandatory and opportunistic @@ -21,60 +9,17 @@ Types - postgresql record type: docs, send - postgresql domain types, table record types, etc -- util/postgresql: add inet types -- util/geometry: add WKT functions - -- add support for ODBC intervals (no point w/o driver to test with) - ----- - -Misc - -- internal docs - -- use ffi/unsafe/alloc to simplify odbc handle allocation - -- add ODBC-like functions for inspecting schemas (list-tables, etc) - - for wrapped/managed connections, detect if underlying connection gets disconnected by server (eg, times out after 10 minutes of inactivity) - at least, pool should make sure connection is alive when gotten from idle list - add {keepalive : -> boolean} method to connection<%> (?) -- document/enumerate errors -- document exn:fail:sql, when used, when not used, links to SQLSTATE docs? - - disconnect on custudian shutdown (?) - disconnect should always work, even on thread-damaged connections - but might need version with timeout and/or rudely? flag, because I can't think of a way to solve the lock problem that doesn't involve aux thread. -- finish transaction api: tests, custom sqlite options (?), custom mysql options (?) - - add connect option #:rollback-invalid-transactions? (?) - -- identify common ODBC errors that can't possibly rollback transaction - - test with PostgreSQL ODBC driver using "rollback on all errors" mode - -- more ODBC information (?) - SQLGetInfo: - - SQL_CONVERT_ - use to refine supported types (?) - - SQL_CURSOR_{COMMIT,ROLLBACK}_BEHAVIOR - check that commit/rollback doesn't delete pstmts! - - SQL_MAX_{CATALOG,COLUMN,IDENTIFIER,SCHEMA_NAME,TABLE_NAME}_NAME (min 128) - -- add evt versions of functions - - for query functions (?) - - connection-pool-lease-evt - - when is it useful in practice? - - would make it easier to handle timeouts... - -- on insert, return last inserted id - - postgresql: parse CommandComplete msg tag - - mysql: in ok-packet (what conditions, though?) - - sqlite3: sqlite3_last_insert_rowid(), use sqlite3_changes() to see if insert succeeded, - but still need to tell if stmt was even insert (parse sql?) - - odbc: ??? - - add recursive locking? - cons: - considered by experts to be bad design, sloppy - pros: - would simplify cleanup for one-shot pstmts @@ -85,31 +30,6 @@ Misc - audit code for break-safety, disable breaks as needed -- dialect info for ODBC - - can get some tx data from ODBC... - - on the other hand, not supposed to do tx-SQL in ODBC anyway, so low-priority - - make implementation notes section of docs - explain cursor impl (& rationale) - explain nested tx impl - - ... - -- better query path: IMMEDIATE STATEMENTS vs PREPARED STATEMENT CACHE - - IMMEDIATE STATEMENTS - In pg terms, pipeline Parse and Bind (ie, 1 round-trip instead of 2). - Can do immediate query with args using typeids of parameters - - problem: results in worse error messages - - problem: error invalidates tx (in pg) - - problem: same problem exists even with no args: arity errors - - benefit: I like the code cleanup. - - PREPARED STATEMENT CACHE - Add sql=>pstmt cache in collection. - - schema can change without warning, invalidate pst type information - - mitigation: only cache w/in tx (but is isolation level sufficient?) - and clear cache on any tx rollback or potential ddl stmt - - problem: (cached) prepare and query not done atomically (two lock entries) - so a statement can be invalidated between cache retrieval and execution - -- support logging - -- audit: make sure no output within atomic section (in drracket, may thread switch)