Async PostgreSQL client for Nim.
Implements the PostgreSQL wire protocol v3 with full support for the extended query protocol, connection pooling, SSL/TLS, and binary format optimization.
Async Backend
Select at compile time with -d:asyncBackend=asyncdispatch (default) or -d:asyncBackend=chronos.
TLS backend differences
asyncdispatch uses OpenSSL (-d:ssl) and chronos uses BearSSL (via nim-bearssl).
| Behavior | asyncdispatch (OpenSSL) | chronos (BearSSL) |
|---|---|---|
| Negotiated TLS | 1.2 minimum, 1.3 when offered | Pinned to 1.2 |
| Expired/not-yet-valid cert | Accepted (not verified) under allow/prefer/require | Handshake fails with PgConnectionError |
| IP host, verify-full | Verifies IP SANs (PgSecurityError if OpenSSL lacks SSL_get0_param or X509_VERIFY_PARAM_set1_ip_asc) | Refused with PgSecurityError (dNSName SAN only) |
| SNI | Every sslmode (except IP/empty host, a host name of 256 bytes or more, or sslsni=0) | verify-full only; sslsni has no effect |
| Host name >= 256 bytes | Under verify-full: verified; the ClientHello carries no SNI, with no notice | Under verify-full: refused with PgSecurityError |
| TRUSTED CERTIFICATE | In sslrootcert (openssl x509 -trustout): aux trust settings honoured | Skipped, so the CA is not trusted (PgConfigError if no other CA is left); export CAs as plain CERTIFICATE |
| Root CA without CA:TRUE | Accepted as a CA with keyUsage keyCertSign; a bare root and CA:FALSE are refused as a CA | Refused as a CA with PgSecurityError |
| Client cert, key, root CA | Staged as temp files (owner-only on POSIX, /dev/shm preferred on Linux), deleted once loaded | Decoded in memory |
| ALPN postgresql | Sent unless libssl lacks SSL_CTX_set_alpn_protos (then traditional mode sends none and direct mode fails); if that call errors, the connect fails in either mode | Always sent |
A certificate refused as a CA (CA:FALSE, or a root OpenSSL rates not CA-capable) is still usable as a direct pin: with the server's own certificate in sslrootcert, both backends verify it — BearSSL matches the DN and public key, whatever the CA flag says.
Both backends trust only the pinned sslrootcert (no system store), enforce ALPN for sslnegotiation=direct only, and drop from SCRAM-SHA-256-PLUS to SCRAM-SHA-256 under channel_binding=prefer when the server certificate is unavailable (require fails the connect on both).
sslrootcert reaches the trust store only under verify-ca / verify-full; under require (and allow / prefer) the server certificate is accepted unverified even when a CA is configured (libpq loads the file whenever it exists and verifies against it even under require). A DSN's sslrootcert= is read while the DSN is parsed, whatever the mode, so a missing or unreadable file is a PgConfigError.
Downgrade and fallback notices
These go to stderr only, one pg_connection: line per event:
- the sslmode=prefer plaintext fallback after the server refuses SSL
- a client certificate that will not be sent (no TLS support, a Unix-socket connection, or that plaintext fallback, which then writes two lines)
- channel_binding=prefer passing over an offered SCRAM-SHA-256-PLUS for lack of a server certificate (written once startup completes)
- temp-file cleanup failures
They are not reported to PgTracer and cannot be hooked, filtered, or suppressed; a notification hook is future work.
Quick Start
import pkg/async_postgres proc main() {.async.} = let conn = await connect("postgresql://myuser:mypass@127.0.0.1:5432/mydb") defer: await conn.close() # Insert with typed parameters let name = "Alice" let age = 30'i32 let cr = await conn.exec(sql"INSERT INTO users (name, age) VALUES ({name}, {age})") echo "Inserted: ", cr.affectedRows # Query multiple rows let minAge = 25'i32 let row = await conn.query(sql"SELECT id, name, age FROM users WHERE age > {minAge}") for r in row: echo r.getStr("name"), " age=", r.getInt("age") # Query a single value let count = await conn.queryValueOrDefault("SELECT count(*) FROM users", default = "0") echo "Total users: ", count waitFor main()
Choosing a query API
Four parameterised entry points are provided. They differ in how parameters are supplied and in the amount of per-call allocation:
1. sql"..." macro — compile-time {expr} interpolation
Most readable. {expr} placeholders are rewritten to $1, $2, … at compile time and the expressions are collected into a seq[PgParam]. Works with query, exec, pool.query, cluster.withReadConnection, etc.
let name = "Alice" await conn.query(sql"SELECT id FROM users WHERE name = {name}")
- Pros: concise; compile-time placeholder rewriting; SQL injection-safe.
- Cons: still allocates a seq[PgParam] per call; {expr} must be a compile-time-visible expression (not an openArray spread).
- Use when: SQL is a literal and ergonomics matter more than zero-alloc.
2. query/exec with an explicit seq[PgParam]
The baseline runtime API. Use when the SQL or the parameter list is constructed dynamically (e.g. conditional WHERE clauses).
var params: seq[PgParam] params.add name.toPgParam params.add age.toPgParam await conn.query("SELECT id FROM users WHERE name = $1 AND age > $2", params)
The pgParams(a, b, c) macro builds a seq[PgParam] in one call. A second overload takes seq[PgParamInline] — constructed manually as @[toPgParamInline(a), toPgParamInline(b)] — which avoids per-parameter heap allocations for scalar types.
3. queryDirect/execDirect — low-allocation macros
Encodes parameters directly into the connection's send buffer at compile time; no intermediate seq[PgParam] or seq[byte] is built.
let qr = await conn.queryDirect("SELECT name FROM users WHERE id = $1", myId)
- Pros: no per-call allocations for the parameter path (building the QueryResult still allocates); same statement cache semantics as query.
- Cons: SQL must be a string literal/compile-time constant; arguments are positional ($1, $2, …), no {expr} sugar.
- Use when: the call site is on a hot path and params are scalars.
4. simpleQuery/simpleExec — simple query protocol
Parameter-less, text-only, single round trip. Allows multiple ;-separated statements and session-only commands that the extended protocol rejects (SET, LISTEN, VACUUM, …).
discard await conn.simpleExec("SET search_path TO myschema, public")
Quick decision table
| Situation | Prefer |
|---|---|
| Literal SQL, readability | sql"..." macro |
| Dynamic SQL or params | query(sql, params) / exec |
| Hot path, scalar params | queryDirect / execDirect |
| SET / multi-statement | simpleQuery / simpleExec |
sql"...", query/exec, and queryDirect/execDirect share the per-connection prepared-statement cache; simpleQuery/simpleExec use the simple protocol and are not cached. A timeout parameter is accepted by query/exec, queryDirect/execDirect, and simpleQuery/simpleExec; on timeout the connection is retired (csClosed) because the wire protocol desynchronises, unless the wire had settled (asyncdispatch always retires: the timed-out operation stays on the socket).
Client encoding
client_encoding is pinned to UTF8. A non-UTF8 value in the config (including -c client_encoding= in options) raises PgConfigError, and a session reporting a switch away (SET client_encoding) is closed with PgProtocolError. The switch is detected only after the fact, so do not change it within a query or pipeline.
Modules
- pg_connection — Connection management, DSN parsing, SSL, LISTEN/NOTIFY
- pg_client — Query execution, prepared statements, cursors, pipelines, transactions, COPY, low-alloc macros (queryDirect/execDirect)
- pg_pool — Connection pooling with health checks and maintenance
- pg_pool_cluster — Read replica pool cluster with automatic query routing
- pg_types — Type conversions (toPgParam, row accessors, arrays, ranges, composites, enums)
- pg_protocol — Wire protocol encoding/decoding
- pg_largeobject — Large Object API for streaming binary data
- pg_advisory_lock — Advisory lock API (session/transaction, exclusive/shared)
- pg_replication — Logical replication streaming with pgoutput decoder
- async_backend — Async framework abstraction (asyncdispatch / chronos)
Supported imports are pkg/async_postgres and the hub modules listed above. Importing a submodule directly (e.g. async_postgres/pg_connection/types) is unsupported and carries no compatibility guarantee; only the re-exported surface is covered by semantic versioning. Promised vs sibling * exports are frozen in tests/api_surface.{public,internal}.golden.
Imports
-
async_postgres/async_backend, async_postgres/pg_protocol, async_postgres/pg_types, async_postgres/pg_connection, async_postgres/pg_client, async_postgres/pg_pool, async_postgres/pg_pool_cluster, async_postgres/pg_largeobject, async_postgres/pg_advisory_lock, async_postgres/pg_sql, async_postgres/pg_replication
Exports
-
OidUuidArray, getIntervalOpt, getTimeTz, getIntervalOpt, writeParamOid, SqlStateConfigurationLimitExceeded, PgParam, sepBySpace, getTimestampTzOpt, $, OidBool, ==, get, getPathArrayOpt, get, OidCircle, writeParamFormat, toPgTimestampTzArrayParam, getPointArray, get, getXmlArrayOpt, getUuidArrayOpt, RetryAdvice, get, $, toPgParam, toPgParamInline, OidNumMultirange, toPgParam, SqlStateExclusionViolation, getTimestampArrayOpt, writeBytesAt, items, $, toPgParam, get, emptyRange, writeBindParam, getPointOpt, getBox, toPgParam, where, affectedRows, getMacAddr8Opt, getNumericOpt, SqlStateAdminShutdown, ==, get, getInt4RangeOpt, getTsMultirangeArray, writeParamValue, getBytesArrayOpt, <=, getPolygon, ==, PgQueryError, $, get, toPgParam, getTime, getDomainOpt, getStrArray, PgPoolError, toPgBinaryParam, appendBytes, getTsQueryOpt, ==, getMoneyOpt, toPgBinaryParam, getInt4Multirange, PgNullError, getXmlOpt, OidVarchar, toPgParam, getTsTzRangeArray, fromBE64, getCircleArray, SqlStateInvalidCatalogName, getHstoreArrayOpt, getCircle, SqlStateSyntaxError, get, PgArray, toPgMoneyArrayNDParam, getTsTzMultirange, getTsMultirangeArrayOpt, toPgBinaryParam, getDateOpt, toPgParam, getPointArray, pgArray, decimalSep, get, getBytesOpt, PgMultirange, getTimestampArray, OidTimestampTzArray, paramOidOf, getCompositeOpt, getXmlArrayOpt, accountingParens, serverErrors, OidXmlArray, OidMacAddr, toPgBinaryParam, getTimeArray, toPgParamInline, getTsMultirangeOpt, PgXml, SqlStateProtocolViolation, writeBE64, SqlStateObjectInUse, toPgParam, getInt4Range, getInt4MultirangeArray, isNull, parseTimeTzText, getTimeTz, OidMoneyArray, $, checkPgMoneyConventions, OidInt8MultirangeArray, OidPolygonArray, toPgParamInline, OidName, getNumMultirange, get, writeParamOid, get, get, $, getLseg, OidRecord, toPgParam, isZero, getInterval, OidMacAddr8, getDateMultirangeArray, expectedElemCount, OidBitArray, OidTsMultirangeArray, getInt64Opt, isBinaryCol, get, getJsonArrayOpt, SqlStateCrashShutdown, getTimestampArrayOpt, get, toPgBinaryParam, getInt8Range, ==, getTimestampTzOpt, get, OidDate, $, getInt16Array, getBoolOpt, [], get, toPgBinaryParam, toPgParam, toPgBinaryParam, PgPath, toPgParam, get, toPgParam, OidLine, getMoneyArrayND, getTsVectorOpt, get, OidMoney, toPgParam, newPoolError, toPgParam, toPgParam, getInt4MultirangeArrayOpt, getTsQueryArray, toPgBinaryParam, toPgBinaryParam, getInt, getLineOpt, writeBindParam, getBytesOpt, PgMessageTooLargeError, getUuidArray, PgUuid, coerceBinaryParam, writeParamFormat, pgEpochDaysOffset, getTsMultirange, toBE16, getFloat, getJson, ==, toPgParam, toPgParam, getBoolArrayOpt, get, toPgParam, getTsVectorArray, getFloatArray, get, toPgParam, getXml, toPgTsTzMultirangeArrayParam, getStrArrayElemOpt, getTsQueryArrayOpt, PgConnectionError, $, PgTsVector, SqlStateInsufficientPrivilege, toPgBinaryParam, OidInet, OidJson, getCircleOpt, getInt, getIntArrayElemOpt, getNumRangeArrayOpt, getMoneyArrayNDOpt, ==, toPgDateMultirangeParam, toPgBinaryParam, getMoneyArray, getUuid, getInt8RangeArrayOpt, toPgBinaryParam, getTsTzMultirangeArray, getBoolArrayOpt, isLastingRefusal, toPgTsMultirangeArrayParam, getTimeArrayOpt, get, symbol, getTsMultirangeArray, getFloatOpt, getBitArrayOpt, writeParamValue, writeParamValue, toPgParam, getInt4RangeArray, get, initCommandResult, getTsVector, OidInt2Array, toPgParam, get, getNumRange, getMacAddrOpt, getBytesArrayOpt, toPgParam, <=, errorField, getInet, $, toPgParam, OidCidrArray, getInt64Array, get, writeBE16, getTimeOpt, getPolygon, OidInt2, ==, PgTimeTz, $, toPgBinaryParam, getTsTzMultirangeArrayOpt, rangeFrom, getTimeOpt, PgNumericSign, get, get, constraintName, getTsRange, get, getPathOpt, ==, getMoneyArrayNDOpt, toPgParam, toPgParam, toPgParam, getInt4MultirangeArrayOpt, toPgBinaryParam, toPgParam, getFloat, getPathArray, getDateMultirangeArray, get, OidNumRangeArray, getNumericArray, ==, len, get, $, get, writeBE32, getTimestampOpt, get, SqlStateIdleInTransactionSessionTimeout, PgParamInline, toPgBinaryParam, ==, toPgParam, toPgDateRangeParam, PgMacAddr8, getHstoreOpt, getStrArray, columnIndex, toPgParam, toPgBinaryParam, getTsTzRange, toPgParam, ==, getFloatArrayElemOptOpt, getNumMultirangeArrayOpt, get, toPgBinaryParam, getInt16ArrayElemOpt, ==, getTimeTzArrayOpt, getNumMultirangeOpt, OidCidr, writeParamOid, getNumRangeArray, getUuid, getInt8Range, ==, getBitArray, getStr, internalQuery, getMoneyArrayNDOpt, toPgBinaryParam, get, get, tableName, getXmlArray, getInt64ArrayElemOpt, getMoneyArrayND, get, OidInt4RangeArray, getStrArrayElemOpt, encodeBinaryArray, toBE32, toPgRangeParam, ==, toPgParam, OidPoint, OidIntervalArray, getBoolArray, amount, getTsMultirangeArrayOpt, toPgParam, toPgParamInline, get, parseMultirangeText, getTsVectorArray, getLineArray, isSerializationFailure, getStrArrayOpt, get, toPgParam, getBoxArrayOpt, getMoney, PgTypeError, OidText, getLine, getIntArray, getTimeTzOpt, getTsTzRangeArrayOpt, get, OidDateArray, PgLseg, get, get, getDateArrayOpt, writeParamOid, fromPgText, getBool, getTsMultirangeOpt, toPgParam, getFloat32ArrayElemOpt, getHstoreArrayOpt, getBytesArray, getInetOpt, parsePgMoney, getCircle, toPgParam, isFinite, getCircleArrayOpt, getMacAddrArray, getInt8MultirangeArrayOpt, getInt64, get, toPgBinaryParam, getIntOpt, toPgParam, parseTimeText, toPgBinaryParam, parsePgNumeric, PgRangeBound, getTsRange, ==, getUuidOpt, pgArray, $, getBitArray, OidInt8, getHstoreOpt, isForeignKeyViolation, ndim, toPgParam, getBoxOpt, getTsTzMultirangeOpt, get, getStrOpt, OidInt8RangeArray, PoolErrorKind, writeParamValue, getDateRangeArray, isIntegrityConstraintViolation, toPgBinaryParam, writeParamValue, getTsQuery, $, get, getArrayNDOpt, getDateOpt, getMoneyArrayNDOpt, toPgBinaryParam, get, <, OidTimestamp, OidBoolArray, isDeadlockDetected, toPgBinaryDateMultirangeParam, OidNumericArray, get, OidMacAddr8Array, getNumMultirangeArray, pgArray, getTsVectorOpt, getBox, getStrArrayElemOptOpt, toPgBinaryParam, getIntervalArray, OidBox, $, getMoneyArrayND, toPgParam, getInt4RangeArray, getTsRangeArray, get, toPgTimestampArrayParam, getEnumArray, get, toPgParam, getInt4MultirangeArray, position, getLine, getFloat32Array, PgError, getTimestampArray, getEnum, encodeBinaryArray, getMacAddr8Opt, getMacAddr8Array, getMoneyArray, ==, getDateMultirangeArrayOpt, paramOidOf, getTimeTzArray, toString, toPgParam, toPgParam, writeParamFormat, getFloatArrayElemOpt, OidDateMultirange, toPgParam, toPgParam, columnMap, toPgParam, PgLine, OidFloat8, getDateRangeOpt, getBoolArray, PgTimeoutError, getPolygonOpt, $, get, getPathArrayOpt, get, retryAdvice, toPgParamInline, isExclusionViolation, getBoolOpt, get, getPointOpt, getInt16, encodeHstoreText, getTime, ==, toPgBinaryParam, getTsTzRange, checkMoneyScale, getDateMultirange, toPgParam, toPgParamInline, toPgBinaryTsTzMultirangeArrayParam, toPgParamInline, getUuidArrayOpt, getInt16ArrayElemOptOpt, get, $, toPgParam, dataTypeName, getMoneyOpt, toPgBinaryParam, OidBpcharArray, get, RelOff, get, toPgParam, getLineOpt, getIntArrayElemOptOpt, getInt8MultirangeArrayOpt, getXmlOpt, getPolygonArrayOpt, internalPosition, getInt16Opt, PgListenError, getBytes, getMacAddr8ArrayOpt, toPgBinaryParam, getLineArray, toPgParam, getTsVector, getInt4RangeArrayOpt, toPgBinaryTimestampTzParam, PgStateError, get, toPgParam, SqlStateCannotConnectNow, symbolBefore, rangeOf, getTimestampOpt, getInet, toPgParam, get, getTimeTzArrayOpt, toPgBinaryDateRangeParam, isNull, toPgTsTzMultirangeParam, get, PgMacAddr, toPgParam, getEnumArrayElemOpt, toPgParamInline, getIntArrayElemOptOpt, getStrArrayOpt, toPgBinaryParam, getInt4MultirangeOpt, toPgDateMultirangeArrayParam, getNumMultirangeOpt, getBool, getTsTzRangeArrayOpt, getTsRangeOpt, getInt64, foldBindParam, toPgParam, +, OidPolygon, getTsTzMultirangeOpt, $, toRow, isDuplicateObject, initPgMoneyConventions, getStrArrayElemOptOpt, toPgParam, get, getJsonOpt, getInt4MultirangeOpt, OidNumRange, toPgParam, getPolygonOpt, groupDigits, rangeUbInf, isNotNullViolation, get, get, toPgParam, getPolygonArrayOpt, getMacAddr8ArrayOpt, OidVarbit, parseRangeText, toPgParamInline, getDateMultirangeArrayOpt, getCircleArray, toPgParam, get, getBoolArrayElemOpt, OidFloat4Array, cmp, OidJsonb, OidTimeTz, getMoneyArrayOpt, getMoneyArrayOpt, get, PgArrayMaxDim, getInt8Multirange, get, writeParamOid, toPgBinaryParam, get, OidTimeTzArray, writeParamFormat, SqlStateUniqueViolation, getMacAddr, getInt8Multirange, getDate, getDateRangeArrayOpt, hash, get, $, toPgParam, get, getLseg, PgNoRowsError, writeParamOid, SqlStateSerializationFailure, writeParamFormat, getTsTzRangeOpt, writeParamOid, SqlStateDeadlockDetected, pgArray, toPgMoneyArrayParam, toPgBinaryParam, OidTsTzRangeArray, getBitOpt, paramOidOf, writeParamValue, getInt16ArrayElemOpt, getPathOpt, inferPgMoneyConventions, get, parsePointText, getTimeArrayOpt, getFloat32, writeParamValue, getDateRange, get, isEmpty, getMoney, getMoneyArrayOpt, getFloat32ArrayElemOpt, getIntArrayOpt, data, PgInet, getInt16ArrayOpt, OidInt4, getLsegArray, OidDateMultirangeArray, getInetOpt, OidBpchar, getNumeric, toPgBinaryParam, getFloat32Opt, getNumericArrayOpt, getMacAddrArrayOpt, parsePgMoney, OidTsQuery, getDateArray, getPath, get, getInt64Array, toPgParam, get, PgNumeric, PgConfigError, hash, getTimestampTzArrayOpt, getNumRangeArray, OidInt4Multirange, getMoneyOpt, OidNumeric, toPgParam, get, toPgBinaryParam, getCircleArrayOpt, getJson, $, OidInt4Array, getLsegArrayOpt, toPgParam, get, toPgBinaryParam, OidTimeArray, get, getJsonArrayOpt, getLineArrayOpt, PgCircle, getMoney, toPgParam, get, get, toPgBinaryDateRangeArrayParam, writeParamFormat, getFloatArrayOpt, getIntOpt, getDateArrayOpt, toPgBinaryParam, scale, toPgParam, toPgMultirangeParam, isTransientError, writeParamOid, getLsegArray, getEnumArrayOpt, OidPointArray, toPgBinaryParam, OidInt4Range, OidByteaArray, ==, getInetArray, getCidrArray, paramOidOf, toPgDateArrayParam, getTsMultirange, getBoolArrayElemOpt, OidPathArray, get, getTsQueryArray, toPgParam, ResultFormat, writeParamOid, $, toPgParam, decodeFloat32BE, getTsVectorArrayOpt, getUuidOpt, thousandsSep, pgArray, SqlStateLockNotAvailable, getInt16, [], getTsQueryArrayOpt, getBoolArrayElemOptOpt, get, toPgBinaryParam, initPgBit, get, getInt8MultirangeArray, OidFloat4, toPgBinaryParam, ErrorField, decodeFloat64BE, $, toPgParam, toPgParam, toPgBinaryParam, getUuidArray, getBitOpt, toPgParam, toPgTimestampTzParam, toPgBinaryParam, isUniqueViolation, MaxMoneyScale, getInt8RangeArrayOpt, getTimestampTzArray, writeParamValue, pgComposite, schemaName, $, get, toPgBinaryTsTzRangeParam, getDate, OidPath, toPgBinaryParam, getPathArray, get, toPgParam, OidNumMultirangeArray, getTsVectorArrayOpt, getMacAddr8Array, OidTsTzMultirange, getBoolArrayElemOptOpt, get, get, getXmlArray, OidInt4MultirangeArray, SqlStateCheckViolation, encodeBinaryComposite, toBytes, getBoxOpt, toPgParam, parseInetText, toPgBinaryParam, toPgBinaryParam, getFloat32, getFloatOpt, get, readBytes, writeParamValue, OidTsVector, getXml, toMultirange, OidBit, $, PgTsQuery, get, getMacAddr, getInterval, SqlStateForeignKeyViolation, getFloatArrayElemOpt, toPgParam, pgTzDispLimit, get, toPgParamInline, getTsQuery, getDateMultirange, ==, getDomain, getErrorField, getInt8MultirangeOpt, OidLineArray, toPgBinaryParam, getInt4RangeArrayOpt, toPgParam, fromBE32, parseTextArray, OidInterval, nbits, getInt8RangeArray, getIntArray, getTsTzRangeOpt, OidTsTzRange, toPgBinaryParam, contains, toPgParam, toPgBinaryParam, OidBytea, getIntervalArrayOpt, getJsonArray, getIntArrayOpt, getInt16ArrayOpt, getMacAddrArrayOpt, getDateArray, getCidrArrayOpt, getFloat32Opt, toPgBinaryTsTzRangeArrayParam, getDateMultirangeOpt, toPgBinaryParam, writeParamFormat, toPgParam, OidXml, getTimestampTzArray, PgSecurityError, getBoxArray, paramOidOf, getInt64ArrayElemOpt, parseBitString, toPgParam, parseCompositeText, toPgBinaryParam, get, getTsQueryOpt, getMacAddrArray, OidTsQueryArray, getNumeric, rangeUbInc, getNumRangeOpt, toPgBinaryParam, SqlStateIdleSessionTimeout, SqlStateUndefinedTable, ProtocolError, getNumericArrayOpt, get, pgDomain, pgParams, writeParamFormat, OidUuid, toPgDateRangeArrayParam, OidTextArray, fracDigits, SqlStateInFailedSqlTransaction, getIntervalArrayOpt, getTsRangeArray, getMacAddr8, <, getTsRangeOpt, getHstoreArray, getLsegOpt, toPgParamInline, getTsTzMultirangeArray, toPgParam, getFloat32ArrayElemOptOpt, toPgParam, getMacAddr8, getBit, parseIntervalText, toPgParam, getPointArrayOpt, get, getFloatArrayOpt, rangeTo, getNumMultirangeArrayOpt, OidTime, getInt64ArrayElemOptOpt, getIntArrayElemOpt, OidDateRangeArray, PgMoneyConventions, PgBit, getCidrArrayOpt, getLsegOpt, toPgParam, toPgParam, PgMoney, getStr, getLsegArrayOpt, PgInterval, toPgTsTzRangeParam, getDateRangeArrayOpt, getPolygonArray, getComposite, addParseDirect, toPgParamInline, isQueryCanceled, get, get, getFloat32ArrayOpt, toPgParam, toPgParam, getNumMultirangeArray, hash, getTimeArray, getCidr, rangeLbInf, getInt64Opt, getStrOpt, getDateRange, getTsTzRangeArray, getFloat32ArrayElemOptOpt, getArrayND, toPgParam, getInt4RangeOpt, encodeCompositeText, $, toPgBinaryParam, getMoneyOpt, getInt4Multirange, toPgParam, SqlStateTransactionTimeout, getNumRangeOpt, OidMacAddrArray, OidTsMultirange, CommandResult, paramOidOf, $, getHstore, getIntervalArray, toPgParam, getTimestamp, getInt4Range, validate, PgBitMaxBits, getNumMultirange, get, getTsTzMultirange, pgEnum, toPgBinaryParam, PgNotifyOverflowError, $, toPgBinaryParam, getMoneyArrayND, PgBox, OidInt8Range, writeParamFormat, getHstoreArray, getInt16Opt, toPgParam, toPgParam, toPgBinaryDateMultirangeArrayParam, OidBoxArray, parsePointsText, toPgBinaryParam, getCircleOpt, SqlStateQueryCanceled, getInt64ArrayElemOptOpt, columnIndex, getTimeTzOpt, toPgBinaryTsTzMultirangeParam, getTsTzMultirangeArrayOpt, get, toPgParam, getNumRangeArrayOpt, get, ==, get, getJsonArray, parseDateText, toPgBinaryParam, ==, OidNameArray, OidCircleArray, getBoxArrayOpt, writeParamOid, toPgParam, OidJsonbArray, get, unboundedRange, getJsonOpt, get, get, addBindDirect, getLineArrayOpt, len, toPgParam, fromBE16, toPgBinaryParam, OidJsonArray, encodeEnumTextArray, getDateRangeArray, getHstore, OidInt8Array, OidTsVectorArray, columnName, validatePgArrayShape, OidCharArray, get, SqlStateNotNullViolation, getInt8RangeOpt, getTimestamp, getMoneyArray, OidTsRangeArray, toPgParam, toPgParam, getTsRangeArrayOpt, toPgByteaArrayParam, getBoxArray, formatPgMoney, ==, getFloat32Array, getInt16ArrayElemOptOpt, PgInlineBufSize, getInt16Array, toPgBinaryDateParam, getBytes, rangeLbInc, get, PgUnavailableError, getInt8RangeOpt, toPgParam, toPgBinaryParam, foldBindParam, get, toPgParam, OidTsTzMultirangeArray, get, OidInetArray, toPgParam, toPgParam, getMoneyArrayOpt, get, toPgBinaryParam, getPointArrayOpt, getEnumOpt, isCheckViolation, rangeContainEmpty, paramOidOf, getNumericArray, PgTime, getBytesArray, parseHstoreText, getPath, get, OidLsegArray, PgHstore, toPgParam, OidTimestampTz, toPgDateParam, toPgParam, pgEnum, toPgBinaryParam, getPolygonArray, readString, getMacAddrOpt, getBit, getNumericOpt, toPgParam, SqlStateDuplicateObject, getMoneyArray, PgPolygon, getBitArrayOpt, toPgParam, OidDateRange, get, SqlStateInvalidPassword, toPgBinaryParam, writeParamValue, getFloatArray, toPgParamInline, getFloatArrayElemOptOpt, getCidr, OidLseg, get, getInt8RangeArray, toPgParam, PgPoint, OidChar, paramOidOf, PgCidr, getTimeTzArray, parseTimestampText, getInt8MultirangeArray, getFloat32ArrayOpt, getPoint, toPgParam, PgRange, getTimestampTz, toPgParam, getInt64ArrayOpt, get, toPgParam, getTimestampTzArrayOpt, pgEpochUnix, get, isSessionFatal, PgListenStoppedError, pgEnum, writeParamFormat, toPgParam, toPgBinaryParam, ==, getDateMultirangeOpt, OidTsRange, getMoney, getInetArray, rangeEmpty, initPgMoney, OidInt8Multirange, get, OidVarbitArray, toPgParam, formatPgMoney, getNumRange, toPgParam, get, paramOidOf, OidVarcharArray, PgProtocolError, toPgParam, getInetArrayOpt, OidTimestampArray, toPgParam, getInt8MultirangeOpt, getTsRangeArrayOpt, getCidrOpt, getInt64ArrayOpt, getPoint, getTimestampTz, OidFloat8Array, toPgParam, getCidrArray, toPgParam, getDateRangeOpt, paramOidOf, getInetArrayOpt, toBE64, getCidrOpt, toPgTsTzRangeArrayParam, CopyInCallback, serverParam, SqlStateConfigurationLimitExceeded, stmtCacheCapacity=, position, SqlStateUniqueViolation, TraceCopyStartData, AuthMethod, sslEnabled, ping, HostEntry, simpleExec, retryAdvice, SqlStateSerializationFailure, ChannelBindingMode, quoteLiteral, tableName, SqlStateDeadlockDetected, TracePoolReleaseEndData, cancelNoWait, getHosts, stmtCacheCapacity, TraceQueryEndData, PgConnState, where, NoticeCallback, SqlStateAdminShutdown, waitNotification, pid, isSerializationFailure, parseDsn, PgQueryError, PgTypeError, TargetSessionAttrs, QueryResult, notifyMaxQueueBytes, internalQuery, SqlStateExclusionViolation, PgNoRowsError, onReconnect, isSessionFatal, PgNullError, host, NotifyOverflowCallback, listenError, SqlStateInvalidCatalogName, CopyOutInfo, SqlStateTransactionTimeout, SqlStateSyntaxError, makeCopyOutCallback, connect, columnIndex, onNotify, PgNotifyOverflowError, SqlStateCrashShutdown, newPoolError, PgConnection, PoolErrorKind, TraceConnectStartData, SqlStateProtocolViolation, txStatus, SqlStateObjectInUse, isTransientError, CopyOutCallback, TracePoolReleaseStartData, isConnected, PgSecurityError, initConnConfig, dialAddr, columnName, TraceContext, displayHost, isDuplicateObject, onNotifyOverflow, TraceLeakedSessionLocksData, isDeadlockDetected, socketHasFin, CopyResult, checkSessionAttrs, Notice, TracePrepareEndData, onListenError, Notification, SqlStateLockNotAvailable, PgTracer, serverParams, onNotice, isUnixSocket, RowCallback, TraceConnectEndData, listen, ListenErrorCallback, socketHasPendingData, ReconnectCallback, SqlStateNotNullViolation, ErrorField, cancel, PgError, errorField, CleanupSkipReason, quoteIdentifier, ClientCertPairingErrorMsg, SqlStateForeignKeyViolation, simpleQuery, withConnTracing, TracePoolAcquireStartData, PgUnavailableError, schemaName, isForeignKeyViolation, TracePrepareStartData, state, PgMessageTooLargeError, TraceInsecureAuthData, TraceQueryStartData, PgTimeoutError, serverErrors, invalidateOnTimeout, isCheckViolation, RetryAdvice, isExclusionViolation, TypeOidInfo, SqlStateCheckViolation, SqlStateInvalidPassword, isIntegrityConstraintViolation, TracePoolAcquireEndData, PgConfigError, PgConnectionError, PgProtocolError, connect, SqlStateInsufficientPrivilege, isNotNullViolation, ConnConfig, unlisten, PgPoolOwner, dataTypeName, PgPoolError, SqlStateDuplicateObject, SslMode, LoadBalanceHosts, isLastingRefusal, TracePipelineEndData, internalPosition, config, PgListenError, CleanupKind, getErrorField, listenReconnectMaxAttempts=, SqlStateQueryCanceled, isQueryCanceled, TraceTransportCloseErrorData, TraceAdvisoryUnlockFailedData, PgStateError, notifyMaxQueue=, SqlStateCannotConnectNow, lookupTypeOids, CopyInInfo, TraceDeprecatedAuthData, TraceCopyDirection, withTracing, close, validateConnConfig, SslNegotiation, stopListening, TraceCopyEndData, PgListenStoppedError, unixSocketPath, notifyMaxQueueBytes=, TracePipelineStartData, connectToHost, TracePoolCloseErrorData, constraintName, listenReconnectMaxBackoff=, TraceCleanupSkippedData, isUniqueViolation, items, notifyMaxQueue, TracePoolDoubleReleaseData, port, listenReconnectMaxBackoff, makeCopyInCallback, CachedStmt, len, TransportCloseStage, rows, SqlStateIdleSessionTimeout, SqlStateUndefinedTable, ProtocolError, SqlStateIdleInTransactionSessionTimeout, createdAt, notifyDropped, listenReconnectMaxAttempts, NotifyCallback, orderedHosts, SqlStateInFailedSqlTransaction, copyIn, Pipeline, queryValue, executeIsolated, copyInStream, queryEach, addQuery, name, newPipeline, PreparedStatement, isRetryableTxError, addExec, AccessMode, copyIn, conn, queryInTransaction, PipelineResultKind, DeferrableMode, queryDirect, withSavepoint, queryColumn, exec, PipelineResult, queryValueOpt, sql, withTransactionRetryDeadline, close, backoffDelayMs, paramOids, notify, addQuery, queryValueOrDefault, fields, TransactionOptions, reset, queryExists, IsolationLevel, withCursor, openCursor, fetchNext, queryValueOrDefault, withSavepointDeadline, Cursor, columnIndex, query, queryRow, copyIn, addExec, queryValueOpt, close, queryValueOrDefault, execDirect, withTransactionRetry, execute, execInTransaction, execInTransaction, RetryOptions, prepare, copyIn, exec, queryInTransaction, conn, IsolatedPipelineResults, withTransactionDeadline, columnIndex, query, exhausted, fields, queryValue, copyOutStream, buildBeginSql, queryRowOpt, execute, copyOut, withTransaction, withPipeline, PgPoolCluster, newPoolCluster, writeConnection, replicaFallback, primaryPool, withTransactionRetryDeadline, withWriteConnection, withTransactionDeadline, ReadFallbackCallback, onReadFallback, close, ReadFallbackReason, withTransactionRetry, fallbackTimeout, replicaPool, ReplicaFallback, withTransaction, withReadConnection, isClosed, readConnection, INV_WRITE, SEEK_END, SEEK_SET, oid, makeLoWriteCallback, loTell, loReadStreamDeadline, loWriteStreamDeadline, loReadStream, loWriteAll, loDefaultChunkSize, loImport, withLargeObject, makeLoReadCallback, loReadAllDeadline, loWriteAllDeadline, loWrite, loTruncate, Oid, LoReadCallback, loSize, INV_READ, conn, SEEK_CUR, LoWriteCallback, fd, loClose, loWriteStream, loSeek, loCreate, loRead, loUnlink, loSizeDeadline, INV_READWRITE, loExport, loOpen, loReadAll, LargeObject, withAdvisoryLockShared, advisoryTryLock, advisoryTryLockXact, advisoryLockXact, advisoryUnlockShared, advisoryLock, advisoryLock, advisoryLockShared, advisoryTryLockXact, withAdvisoryLockXact, advisoryUnlock, advisoryLockXact, advisoryTryLockShared, advisoryUnlockShared, advisoryUnlock, advisoryTryLockXactShared, advisoryTryLock, advisoryTryLockXactShared, advisoryLockXactShared, withAdvisoryLockXactShared, advisoryLockShared, advisoryUnlockAll, withAdvisoryLock, advisoryLockXactShared, advisoryTryLockShared, queryExists, queryEach, queryValueOpt, queryInTransaction, queryValueOrDefault, queryValue, exec, queryEach, queryValueOrDefault, exec, queryInTransaction, sql, query, queryValue, queryInTransaction, queryRow, execInTransaction, queryValueOrDefault, queryValueOrDefault, addExec, query, queryValueOpt, execInTransaction, queryRowOpt, queryValueOpt, queryValueOpt, queryValueOrDefault, queryValue, queryColumn, queryValueOrDefault, SqlQuery, queryValue, addQuery, queryRowOpt, queryExists, queryRow, sqlParams, queryColumn, execInTransaction, sendCopyData, decodePgOutput, ReplicationMessage, PgOutputMessageKind, DeleteMessage, toUInt64, ReplicationSlotInfo, readReplicationSlot, ==, dropReplicationSlot, confirmFlushed, TruncateMessage, currentPgTimestamp, timelineHistory, RelationCache, <, $, CommitMessage, parseTimelineId, <=, RelationColumn, TimelineHistory, TupleField, parseReplicationMessage, receivedEndLsn, InvalidLsn, SystemInfo, LogicalMessage, ReplicationMode, TypeMessage, toString, BeginMessage, identifySystem, PgOutputMessage, OriginMessage, toInt64, hasOldTuple, confirmedFlushLsn, UpdateMessage, PrimaryKeepalive, Lsn, createReplicationSlot, TupleDataKind, sendStandbyStatus, parsePgOutputMessage, parseLsn, XLogData, ReplicationMessageKind, makeReplicationCallback, InsertMessage, startReplication, connectReplication, stopReplication, startPhysicalReplication, ReplicationCallback, connectReplication, RelationInfo, PoolConfig, PoolMetrics, PooledConnHandle, PgPool, initPoolConfig, poolConfig, idleCount, activeCount, size, pendingAcquires, isClosed, metrics, connectRefusal, resetSession, newPool, release, release, resetSessionAndRelease, acquire, acquireHandle, runAndRelease, withConnection, exec, exec, query, query, queryEach, queryRow, queryRowOpt, queryValue, queryValue, queryValueOpt, queryValueOpt, queryValueOrDefault, queryValueOrDefault, queryValueOrDefault, queryExists, queryColumn, simpleQuery, simpleExec, execInTransaction, execInTransaction, queryInTransaction, queryInTransaction, notify, withTransaction, withTransactionRetry, withTransactionDeadline, withTransactionRetryDeadline, withPipeline, close, makeAsyncSinkByteCallback, milliseconds, <=, allFuturesCancelling, cancelAndWait, <, wait, hours, <=, cancelAndWaitPumped, sleepMsAsync, -, ZeroDuration, hasTls, Moment, ==, toMilliseconds, Duration, scheduleSoon, seconds, hasChronos, unregisterFdReader, +, noCancel, declareAsyncCallback, $, nanoseconds, -, makeAsyncSeqByteCallback, +, minutes, sleepAsync, now, AsyncTimeoutError, remainingDeadlineDuration, allFutures, -, <, completed, cancelTimer, registerFdReader, CancelledError, hasAsyncDispatch, nanoseconds, asyncSpawn, FrontendMessageKind, BackendMessageKind, DescribeKind, TransactionStatus, FieldDescription, CopyFormat, BackendMessage, ParseState, ParseResult, RowData, Row, syncMsg, flushMsg, copyDoneMsg, BinarySafeOids, maxInt16Count, maxInt32Len, DefaultMaxBackendMessageLen, MaxNegotiateProtocolOptions, MaxErrorOrNoticeFields, MaxSaslMechanisms, MaxServerParams, MaxServerParamsBytes, initRow, data, rowIdx, isBinarySafeOid, addInt16, addInt32, addCount16, addLen32, addCString, patchMsgLen, patchMsgLenAtomic, preflightParseDirect, preflightBindDirect, encodeStartup, encodeSSLRequest, encodePassword, encodeSASLInitialResponse, encodeSASLResponse, encodeQuery, addParse, addBind, addBindRaw, addDescribe, addExecute, addClose, addSync, addFlush, addCopyDone, encodeParse, encodeBind, encodeDescribe, encodeExecute, encodeClose, encodeSync, encodeFlush, encodeTerminate, encodeCancelRequest, encodeCopyData, encodeCopyDone, encodeCopyFail, newRowData, reuseRowData, reuseRowData, clone, buildResultFormats, parseDataRowInto, parseBackendMessage, formatError, addCopyBinaryHeader, addCopyBinaryTrailer, addCopyTupleStart, addCopyFieldNull, addCopyFieldInt16, addCopyFieldInt32, addCopyFieldInt64, addCopyFieldFloat64, addCopyFieldFloat32, addCopyFieldBool, addCopyFieldText, addCopyFieldString, encodeStandbyStatusUpdate