* Check all DB API calls Make sure a) we check return codes for for all calls into DB and that b) when there is an error we output it only when configured to be verbose and c) then return the proper DBSQL error indicating what went wrong at a higher level. * Review all reused DB code Make sure that we're up to date with the latest in DB. Things such as hashing, etc. * Find printf/fprintf calls which print error messages The library should never print messages unless configured to be verbose. * splint Clean up all items pointed out by splint. * makedepend * valgrind Fix all memory related bugs. * review dbsql/dbsql.c General clean-up including changing calls to malloc, free, etc to __os_malloc, __os_free, etc. * Review SQLite's latest lemon.c and lempar.c code * Review code for trailing spaces, tab characters, lines > 79 col * api.c/__os_sleep() This is now static in DB's code, so to hack the compile I commented out the use of __os_sleep() in api.c * test/scr026 This test has not been updated to check for DBSQL API calls rather than DB API calls. Review and fix it. * test/scr030 Update this test to match the configure script. Augment it so that as the configure script changes the script reports options not tested. * Use LIST/QUEUE macros for linked lists, queues, etc. Find/replace all custom code implementing these simple data structures. * Review memory allocation code in general * A few scr??? < 050 examine source but do not include the TCL testing code * Consider using MPOOL to manage some of DBSQL state across processes Function pools and other aspects of the DBSQL runtime need not be re-created in-memory across multiple processes. When doing this revisit data structures using the LIST/QUEUE macros and shift them to the SH_ equivalents. * Investigate the TCL Extension Architecture (http://www.tcl.tk/doc/tea/)