
- type annotations
  - two modes: mandatory and opportunistic
  - on result fields (eg sqlite, convert to date)
  - on parameters ???
  - per query or per connection? (or both?)
  - either only well-known conversions, or must apply outside of lock

- postgresql record type: docs, send
- postgresql domain types, table record types, 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<%> (?)

- 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.

- add recursive locking?
  - cons: - considered by experts to be bad design, sloppy
  - pros: - would simplify cleanup for one-shot pstmts
          - would enable simple impl of user-level 'call-with-lock' for grouping 
            multiple operations together
            (but this could also be done by two locks: outer "ownership" lock 
            and inner "invariant-protecting" lock)

- make implementation notes section of docs
  - explain nested tx impl

- invalidate statement cache on query error

- 2 call-with-transactions from separate threads can conflict
