TODOs

Testing

  • Doctests. A little more involved with Myst I think.

Docs

  • explain the forced guarantees of foreign_keys = ON and autocommit=True somewhere.
    Also really make sure we want that!
    SOON

  • How can we make sphinx decide where items actually get doc’d? Especially to silence the complaints when building the docs.

  • Why are links to anchors not working, despite doing it like myst says to?

Functionality

  • User functions
    NEXT AFTER

    • default functions: one for each python builtin (like str.startswith, etc.)

  • Should there be a way to run your converter on all rows at once, and collect the errors in parallel?

Transactions

  • Do Savepoint objects properly handle when they’re invalidated due to a rollback? Has to be checked on the inner functions too? Or is that mainly handled from exit…

  • Should TransactionControlException not subclass coolqlite error? it should basically never be exposed so idk. we could make a BaseException subclass.

  • It’s called this for now to clarify it should only be used as a context manager. if we ever have a version that allows manual control, it should perhaps be a separate class or whatnot.

  • Do we still allow using the connection as a context manager, and it just keeps an internal savepoint? I would say let that be closing() but we want to not confuse people used to the stdlib.

  • UOH: generators might non-obviously hold open a savepoint… How do we catch that? If one exits while another is held? Good god this is what rust is for…

Other

  • Sqlite NOW doesn’t use a Z. Maybe we really should have DDL support, To have you fall into the pit of success?

  • We could support dynamically-sized IN (list) easily enough.

  • Since temporal types accept format strings… I hope people won’t expect that to work. Maybe we should document that somewhere. (Maybe that’s what we use !s for? Later if so.)

done-ish but revisit maybe