{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreihp4stzwjnrbqxd2ymqdbns7ajsjzb3x3agbf3v7lrabplcj5efem",
    "uri": "at://did:plc:pi6woz4d47bkuws673w2il2r/app.bsky.feed.post/3mlrgmdypzni2"
  },
  "path": "/t/ann-hpgsql-a-pure-haskell-postgresql-driver-no-libpq/14101#post_4",
  "publishedAt": "2026-05-13T21:16:53.000Z",
  "site": "https://discourse.haskell.org",
  "tags": [
    "these TODOs"
  ],
  "textContent": "This is cool, thank you for creating this!\n\nI have a question about the semantics. Is it always safe to reuse connection unless I got `IrrecoverableHpgsqlError`? The docs are not 100% clear, e.g. this:\n\n> It is possible Hpgsql throws a different kind of exception. File a bug report if that happens, and if you know it came from Hpgsql, treat it like a `IrrecoverableHpgsqlError`.\n\nBut most of the time I have no idea where the exception came from. And in `withTransactionMode` it looks like `IrrecoverableHpgsqlError` might get lost if async exception arrives between `tryAny` and `throw`, which (unless I’m misreading the code) will break the promise.\n\n(Also these TODOs are suspicious)",
  "title": "[ANN] hpgsql, a pure Haskell PostgreSQL driver (no libpq)"
}