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.
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 — zero-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; 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 marked closed because the wire protocol desynchronises.
Modules
- pg_connection — Connection management, DSN parsing, SSL, LISTEN/NOTIFY
- pg_client — Query execution, prepared statements, cursors, pipelines, transactions, COPY, zero-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_auth — MD5 and SCRAM-SHA-256 authentication
- 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)
Imports
-
async_postgres/async_backend, async_postgres/pg_protocol, async_postgres/pg_auth, 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
-
getIntervalOpt, PgTimeoutError, get, getIntervalOpt, writeParamOid, PgParam, getTimestampTzOpt, $, OidBool, ==, get, getPathArrayOpt, get, OidCircle, toPgBinaryParam, toPgTimestampTzArrayParam, getPointArray, get, getXmlArrayOpt, getUuidArrayOpt, getUuid, getFloatOpt, toPgParamInline, writeParamOid, toPgParam, SqlStateExclusionViolation, getTimestampArrayOpt, writeBytesAt, getBoolOpt, toPgMoneyArrayNDParam, toPgParam, get, emptyRange, getInt64Array, getPointOpt, getBox, toPgParam, where, affectedRows, getMoney, $, getInt, getUuid, getTimeOpt, getInt4RangeOpt, getTsMultirangeArray, get, getBytesArrayOpt, <=, getPolygon, ==, PgQueryError, getInt4Range, get, toPgParam, getTime, getDomainOpt, getStrArray, getTimeArray, toPgBinaryParam, appendBytes, getTsQueryOpt, ==, toPgBinaryParam, getInt4Multirange, PgNullError, getXmlOpt, OidVarchar, toPgParam, fromBE64, getCircleArray, getHstoreArrayOpt, getCircle, SqlStateSyntaxError, get, pgArray, $, pgParseFloat, writeParamFormat, getDateOpt, toPgParam, getPointArray, pgArray, toPgBinaryParam, get, PgMultirange, getTimestampArray, OidTimestampTzArray, getBox, toPgParamInline, getXmlArrayOpt, $, OidXmlArray, OidMacAddr, toPgBinaryParam, toPgParamInline, getTsMultirangeOpt, getNumericOpt, pgParseFloat32, writeBE64, toPgParam, $, getTimestamp, isNull, parseTimeTzText, OidMoneyArray, $, OidInt8MultirangeArray, get, toPgParamInline, OidFloat4Array, get, writeParamOid, get, get, $, getLseg, OidRecord, toPgParam, isZero, getInterval, toPgBinaryParam, toPgBinaryParam, expectedElemCount, OidTsMultirangeArray, pgEnum, isBinaryCol, getStrOpt, getJsonArrayOpt, getTimestampArrayOpt, get, toPgBinaryParam, toPgBinaryParam, ==, getTimestampTzOpt, getInt16, $, [], get, schemaName, toPgBinaryParam, toPgParam, toPgBinaryParam, toPgParam, OidJsonbArray, toPgParam, $, getTsVectorOpt, get, SqlStateForeignKeyViolation, toPgParam, newPoolError, toPgParam, toPgParam, getInt4MultirangeArrayOpt, getTsQueryArray, writeParamFormat, toPgBinaryParam, getJsonArray, getLineOpt, getCidrArrayOpt, getBytesOpt, getUuidArray, PgUuid, coerceBinaryParam, writeParamFormat, pgEpochDaysOffset, getTsMultirange, toBE16, getFloat, getJson, getInt8MultirangeArrayOpt, toPgParam, toPgParam, getBoolArrayOpt, get, toPgParam, getTsVectorArray, getFloatArray, getInt4RangeArray, toPgParam, getMacAddr8Opt, toPgTsTzMultirangeArrayParam, getStrArrayElemOpt, $, PgConnectionError, OidBoxArray, PgTsVector, toPgBinaryParam, OidInet, OidJson, getCircleOpt, getInt, nameAccessor, toPgParam, ==, toPgDateMultirangeParam, toPgBinaryParam, getMoneyArray, ==, getInt8RangeArrayOpt, getTimeArrayOpt, getBoolArrayOpt, toPgTsMultirangeArrayParam, getInt8Range, getInet, getTsMultirangeArray, getTsQueryArrayOpt, getBitArrayOpt, get, get, toPgParam, get, writeParamValue, getTsVector, OidInt2Array, toPgBinaryDateMultirangeArrayParam, getTimeTzOpt, getNumRange, getMacAddrOpt, getBytesArrayOpt, getTsTzRange, writeParamOid, ErrorField, toPgBinaryTsTzMultirangeParam, $, pgParseHexInt, OidCidrArray, getInt64Array, get, writeBE16, getTimeOpt, getPolygon, OidInt2, ==, PgStateError, $, toPgBinaryParam, getTsTzMultirangeArrayOpt, rangeOf, PgNumericSign, get, get, constraintName, getTsRange, getStr, getPathOpt, ==, toPgParam, toPgParam, toPgParam, getNumRangeArrayOpt, toPgParam, getInt4MultirangeArrayOpt, toPgBinaryParam, getInt4MultirangeArray, getFloat, getPathArray, get, OidNumRangeArray, getFloatArrayElemOptOpt, len, getTsTzMultirangeArray, getNumericOpt, get, toPgParam, getTimestampOpt, getTsRangeArray, getInt4MultirangeArray, PgParamInline, toPgBinaryParam, ==, toPgParam, getInt16ArrayElemOpt, PgMacAddr8, getStrArray, parsePgBoolText, toPgParam, toPgBinaryParam, getMacAddr8Array, toPgParam, ==, get, toPgBinaryParam, getTsMultirangeArrayOpt, ==, getTimeTzArrayOpt, getNumMultirangeOpt, OidCidr, writeParamOid, getNumRangeArray, getTsVectorArrayOpt, ==, getBitArray, readBytes, toPgBinaryParam, get, get, tableName, getXmlArray, getInt64ArrayElemOpt, getMoneyArrayND, OidInt4RangeArray, encodeBinaryArray, toBE32, toPgRangeParam, ==, toPgParam, OidPoint, OidIntervalArray, getBoolArray, getEnumArrayElemOpt, toPgBinaryDateRangeArrayParam, toString, get, parseMultirangeText, getTsVectorArray, getLineArray, isSerializationFailure, getStrArrayOpt, writeParamValue, toPgParam, getBoxArrayOpt, PgTypeError, OidText, getJsonOpt, getIntArray, get, getTsTzRangeArrayOpt, get, OidDateArray, PgLseg, cellInfo, get, get, getDateArrayOpt, writeParamOid, fromPgText, getBool, getTsMultirangeOpt, toPgParam, getFloat32ArrayElemOpt, getHstoreArrayOpt, getNumRangeOpt, getInetOpt, parsePgMoney, getCircle, toPgParam, getCircleArrayOpt, getMacAddrArray, getInt64, get, toPgBinaryParam, getIntOpt, toPgParam, parseTimeText, toPgBinaryParam, parsePgNumeric, PgRangeBound, getTsRange, ==, getUuidOpt, pgArray, $, getBitArray, OidInt8, getHstoreOpt, $, ndim, toPgParam, getInt64ArrayElemOpt, columnIndex, OidInt8RangeArray, PoolErrorKind, get, rangeUpperInc, isIntegrityConstraintViolation, toPgBinaryParam, get, getHstore, $, get, getArrayNDOpt, getDateOpt, toPgBinaryParam, writeParamValue, <, OidTimestamp, OidBoolArray, isDeadlockDetected, OidNumericArray, getTsTzMultirangeArray, OidMacAddr8Array, getNumMultirangeArray, getInt8MultirangeOpt, getTsVectorOpt, paramOidOf, getStrArrayElemOptOpt, toPgBinaryParam, getIntervalArray, OidBox, $, getMoneyArrayND, getTsQuery, get, toPgTimestampArrayParam, getEnumArray, get, toPgParam, position, getLine, pgParseInt32, PgError, getTimestampArray, getEnum, encodeBinaryArray, getMacAddr8Opt, ==, getDateMultirangeArrayOpt, paramOidOf, getTimeTzArray, OidTsRangeArray, toPgParamInline, toPgParam, toPgParam, writeParamFormat, getFloatArrayElemOpt, OidDateMultirange, toPgParam, columnMap, toPgParam, PgLine, OidFloat8, getDateRangeOpt, getBoolArray, OidUuidArray, getPolygonOpt, $, writeParamValue, getPathArrayOpt, get, ==, getTsVectorArrayOpt, isExclusionViolation, getBoolOpt, get, getPointOpt, getInt16, encodeHstoreText, getTime, ==, toPgBinaryParam, getDateMultirange, toPgParam, getFloat32Array, pgTypeErrorOnValueError, getInt8MultirangeArrayOpt, toPgParamInline, getUuidArrayOpt, getInt16ArrayElemOptOpt, get, getTsQueryArrayOpt, toPgParam, dataTypeName, getMoneyOpt, toPgBinaryParam, getInt16Array, getNumericArray, RelOff, get, toPgParam, pgParseBiggestInt, getIntArrayElemOptOpt, getFloatArrayElemOptOpt, getXmlOpt, getPolygonArrayOpt, internalPosition, OidLineArray, PgListenError, getBytes, getMacAddr8ArrayOpt, getTimestampTzArray, getLineArray, toPgParam, getTsVector, toPgBinaryTimestampTzParam, PgTimeTz, get, OidInt4MultirangeArray, getFloatOpt, getTimestampOpt, getTsTzRangeArray, get, getTimeTzArrayOpt, toPgBinaryDateRangeParam, isNull, PgMacAddr, toPgParam, OidBitArray, getCompositeOpt, getIntArrayElemOptOpt, getStrArrayOpt, getLsegArray, getInt4MultirangeOpt, toPgDateMultirangeArrayParam, getNumMultirangeOpt, getBool, getTsTzRangeArrayOpt, getTsRangeOpt, getInt64, getInt4RangeArrayOpt, +, OidPolygon, getTsTzMultirangeOpt, $, toRow, toPgBinaryDateMultirangeParam, getStrArrayElemOptOpt, toPgParam, get, getJsonOpt, getInt4MultirangeOpt, OidNumRange, getPolygonOpt, get, get, isNotNullViolation, OidPolygonArray, getStr, toPgParam, getPolygonArrayOpt, getMacAddr8ArrayOpt, OidVarbit, parseRangeText, toPgParamInline, getDateMultirangeArrayOpt, getCircleArray, pgParseInt16, get, getBoolArrayElemOpt, get, cmp, OidJsonb, OidTimeTz, get, PgArrayMaxDim, getInt8Multirange, get, <=, toPgBinaryParam, get, OidTimeTzArray, getTimestampTzArray, SqlStateUniqueViolation, getMacAddr, getInt8Multirange, getDate, getDateRangeArrayOpt, hash, get, $, toPgParam, get, getLseg, PgNoRowsError, OidNumMultirange, SqlStateSerializationFailure, toPgBinaryParam, getTsTzRangeOpt, writeParamOid, SqlStateDeadlockDetected, pgArray, toPgMoneyArrayParam, writeParamFormat, OidTsTzRangeArray, getBitOpt, paramOidOf, writeParamValue, getInt16ArrayElemOpt, getPathOpt, getInet, parsePointText, getLsegArray, getFloat32, get, getDateRange, getInt8MultirangeArray, isEmpty, toPgTsTzMultirangeParam, getMoneyArrayOpt, getFloat32ArrayElemOpt, getIntArrayOpt, PgInet, getLineOpt, OidInt4, getTsTzMultirange, OidDateMultirangeArray, getInetOpt, getLsegArrayOpt, getNumeric, toPgBinaryParam, getFloat32Opt, getNumericArrayOpt, getMacAddrArrayOpt, getTsRangeOpt, OidTsQuery, getDateArray, getPath, hash, toPgParam, getIntArrayElemOpt, PgNumeric, hash, getTimestampTzArrayOpt, getNumRangeArray, OidInt4Multirange, getMoneyOpt, OidNumeric, getTimeArray, get, toPgBinaryParam, getCircleArrayOpt, OidTimestampTz, $, OidInt4Array, getMoney, getDate, toPgBinaryParam, OidTimeArray, get, getJsonArrayOpt, getLineArrayOpt, getHstore, toPgParam, get, get, getTsTzRange, toPgBinaryParam, getFloatArrayOpt, getIntOpt, getDateArrayOpt, toPgBinaryParam, OidXml, getXml, toPgBinaryParam, getInt4RangeArrayOpt, writeParamOid, getInt8Range, getEnumArrayOpt, OidPointArray, toPgBinaryParam, OidInt4Range, toPgBinaryParam, ==, getInetArray, getCidrArray, paramOidOf, toPgDateArrayParam, getTsMultirange, getDateMultirangeArray, OidPathArray, getTsQueryArray, toPgParam, ResultFormat, writeParamOid, $, toPgParam, decodeFloat32BE, getTsQueryOpt, getUuidOpt, PgArray, pgArray, [], PgXml, getBoolArrayElemOptOpt, get, toPgBinaryParam, toMultirange, getHstoreOpt, OidFloat4, toPgBinaryParam, errorField, parseCompositeText, $, getMoneyArrayNDOpt, toPgParam, toPgBinaryParam, getUuidArray, getBitOpt, toPgParam, toPgTimestampTzParam, toPgBinaryParam, toPgParam, validatePgArrayShape, getInt8RangeArrayOpt, getBoolArrayElemOpt, get, pgComposite, PgPath, $, internalQuery, toPgBinaryTsTzRangeParam, OidPath, toPgBinaryParam, getPathArray, get, toPgParam, OidNumMultirangeArray, getTsMultirangeArrayOpt, OidTsTzMultirange, getBoolArrayElemOptOpt, get, get, getXmlArray, isUniqueViolation, SqlStateCheckViolation, getDateRangeArray, get, toBytes, toPgParam, parseInetText, writeParamFormat, toPgBinaryParam, getFloat32, $, getTimeTz, get, get, OidTsVector, getTsRangeArray, OidBit, $, PgTsQuery, get, getMacAddr, getInterval, OidMoney, getFloatArrayElemOpt, toPgParam, writeParamValue, toPgParamInline, getMoneyArrayNDOpt, getDateMultirange, toPgBinaryTsTzMultirangeArrayParam, getDomain, getErrorField, getInt16Opt, getBoxOpt, toPgParam, fromBE32, parseTextArray, OidInterval, getInt8RangeArray, getIntArray, getTsTzRangeOpt, OidTsTzRange, getTimeArrayOpt, contains, toPgParam, toPgBinaryParam, OidBytea, getIntervalArrayOpt, optAccessor, getIntArrayOpt, getInt16ArrayOpt, getMacAddrArrayOpt, getDateArray, getCidrArrayOpt, getFloat32Opt, toPgBinaryTsTzRangeArrayParam, getDateMultirangeOpt, toPgBinaryParam, OidMacAddr8, getInt16ArrayOpt, getBytesOpt, getBit, toPgBinaryParam, getBoxArray, getArrayND, getTsTzMultirangeOpt, parseBitString, toPgParam, decodeFloat64BE, toPgBinaryParam, get, getMacAddrArray, OidTsQueryArray, getNumeric, toPgBinaryParam, toPgBinaryParam, SqlStateUndefinedTable, ProtocolError, get, pgDomain, pgParams, writeParamFormat, OidUuid, toPgDateRangeArrayParam, OidTextArray, getNumericArrayOpt, getIntervalArrayOpt, getLsegOpt, getMacAddr8, <, getHstoreArray, getLsegOpt, toPgParamInline, toPgParam, getFloat32ArrayElemOptOpt, toPgParam, getMacAddr8, parseIntervalText, toPgParam, getPointArrayOpt, get, getFloatArrayOpt, rangeTo, getNumMultirangeArrayOpt, OidTime, getInt64ArrayElemOptOpt, getIntArrayElemOpt, OidDateRangeArray, PgBit, toPgParam, toPgParam, PgMoney, getInt64ArrayElemOptOpt, getLsegArrayOpt, PgInterval, toPgTsTzRangeParam, getDateRangeArrayOpt, getPolygonArray, getComposite, addParseDirect, toPgParamInline, isQueryCanceled, get, getFloat32ArrayOpt, toPgParam, toPgParam, getNumMultirangeArray, writeParamValue, getTsQuery, getCidr, getInt64ArrayOpt, getInt64Opt, getStrOpt, getDateRange, getStrArrayElemOpt, getFloat32ArrayElemOptOpt, paramOidOf, toPgParam, getInt4RangeOpt, encodeCompositeText, rangeFrom, getDateMultirangeArray, getInt4Multirange, getMacAddr8Array, get, OidMacAddrArray, OidTsMultirange, CommandResult, paramOidOf, $, getIntervalArray, toBE64, getTimestamp, validate, PgBitMaxBits, getNumMultirange, get, getTsTzMultirange, getInt64Opt, writeParamFormat, PgNotifyOverflowError, OidLine, toPgBinaryParam, PgBox, OidInt8Range, writeParamFormat, getHstoreArray, getInt16Opt, toPgParam, toPgParam, isForeignKeyViolation, parsePointsText, toPgBinaryParam, rangeHasLower, getCircleOpt, SqlStateQueryCanceled, get, getTimeTzOpt, getTsTzMultirangeArrayOpt, encodeBinaryComposite, OidDate, getNumRangeArrayOpt, rangeHasUpper, ==, getTimeTz, toPgParam, getJsonArray, parseDateText, toPgBinaryParam, ==, getNumMultirangeArrayOpt, OidCircleArray, getBoxArrayOpt, writeParamOid, toPgParam, get, initCommandResult, unboundedRange, getLine, get, get, toPgParam, getLineArrayOpt, len, writeBE32, fromBE16, toPgBinaryParam, toPgParam, encodeEnumTextArray, getDateRangeArray, PgCircle, OidInt8Array, OidTsVectorArray, columnName, pgParseInt, SqlStateNotNullViolation, getInt8RangeOpt, getMoneyArray, toPgParam, toPgParam, getTsRangeArrayOpt, toPgByteaArrayParam, getBoxArray, items, ==, getFloat32Array, getInt16ArrayElemOptOpt, PgInlineBufSize, getInt16Array, toPgBinaryDateParam, getBytes, columnIndex, getInt8RangeOpt, getBytesArray, toPgParam, OidTsTzMultirangeArray, getInt8MultirangeArray, OidInetArray, toPgParam, getTsTzRangeArray, getMoneyArrayOpt, get, getBoxOpt, getPointArrayOpt, getEnumOpt, isCheckViolation, toPgParamInline, paramOidOf, getInt4RangeArray, PgTime, getNumRangeOpt, parseHstoreText, getPath, getNumericArray, OidLsegArray, PgHstore, getXml, getJson, toPgDateParam, toPgParam, pgEnum, getBytesArray, getPolygonArray, readString, getMacAddrOpt, getBit, getInt4Range, PgPoolError, PgPolygon, getBitArrayOpt, toPgParam, OidDateRange, get, toPgBinaryParam, writeParamValue, getFloatArray, toPgParamInline, ==, getInt8MultirangeOpt, OidLseg, get, getInt8RangeArray, toPgParam, PgPoint, getDateMultirangeOpt, paramOidOf, PgCidr, toPgMultirangeParam, getTimeTzArray, parseTimestampText, getFloat32ArrayOpt, getPoint, toPgParam, PgRange, getTimestampTz, toPgParam, getInt64ArrayOpt, get, toPgParam, getTimestampTzArrayOpt, pgEpochUnix, writeParamValue, toPgParam, getNumMultirange, pgEnum, writeParamFormat, OidByteaArray, ==, OidTsRange, toPgParam, getInetArray, rangeEmpty, initPgMoney, OidInt8Multirange, OidVarbitArray, addBindDirect, formatPgMoney, getNumRange, writeParamValue, paramOidOf, OidVarcharArray, PgProtocolError, toPgParam, getInetArrayOpt, OidTimestampArray, rangeLowerInc, toPgParam, getCidr, getTsRangeArrayOpt, getCidrOpt, getPoint, getTimestampTz, OidFloat8Array, getCidrArray, toPgDateRangeParam, getDateRangeOpt, paramOidOf, getInetArrayOpt, toPgParam, getCidrOpt, toPgTsTzRangeArrayParam, PgTimeoutError, simpleExec, TracePoolReleaseEndData, SqlStateUniqueViolation, TraceCopyStartData, AuthMethod, ping, HostEntry, CopyInCallback, SqlStateSerializationFailure, ChannelBindingMode, socketHasFin, SqlStateDeadlockDetected, cancelNoWait, TraceQueryEndData, PgConnState, where, TraceCopyDirection, waitNotification, initConnConfig, isSerializationFailure, parseDsn, PgTypeError, SqlStateNotNullViolation, QueryResult, SqlStateExclusionViolation, PgNoRowsError, PgNullError, TransportCloseStage, CopyOutInfo, SqlStateSyntaxError, columnIndex, PgNotifyOverflowError, listen, cancel, newPoolError, PgStateError, PgConnection, getHosts, TraceConnectStartData, SqlStateQueryCanceled, isNotNullViolation, CopyOutCallback, TracePoolReleaseStartData, isUnixSocket, RowCallback, ConnConfig, dialAddr, TraceContext, displayHost, TracePoolCloseErrorData, TraceLeakedSessionLocksData, isDeadlockDetected, tableName, CopyResult, checkSessionAttrs, Notice, TracePrepareEndData, Notification, onNotify, PgTracer, unlisten, isConnected, columnName, TraceConnectEndData, onListenError, socketHasPendingData, TargetSessionAttrs, ErrorField, PgError, position, CleanupSkipReason, quoteIdentifier, ClientCertPairingErrorMsg, SqlStateForeignKeyViolation, simpleQuery, SslMode, TracePoolAcquireStartData, errorField, isForeignKeyViolation, TracePrepareStartData, TraceInsecureAuthData, TraceQueryStartData, PoolErrorKind, invalidateOnTimeout, isCheckViolation, isExclusionViolation, SqlStateCheckViolation, isIntegrityConstraintViolation, TracePoolAcquireEndData, NoticeCallback, PgConnectionError, PgProtocolError, PgListenError, PgPoolOwner, dataTypeName, connect, PgPoolError, withConnTracing, LoadBalanceHosts, TracePipelineEndData, internalPosition, CleanupKind, getErrorField, isQueryCanceled, TraceTransportCloseErrorData, TraceAdvisoryUnlockFailedData, makeCopyInCallback, lookupTypeOids, CopyInInfo, TraceDeprecatedAuthData, schemaName, withTracing, close, SslNegotiation, TraceCopyEndData, PgQueryError, makeCopyOutCallback, unixSocketPath, TracePipelineStartData, connectToHost, NotifyCallback, constraintName, TraceCleanupSkippedData, isUniqueViolation, items, TracePoolDoubleReleaseData, CachedStmt, len, connect, rows, SqlStateUndefinedTable, ProtocolError, internalQuery, TypeOidInfo, orderedHosts, Pipeline, newPipeline, queryValueOrDefault, isRetryableTxError, queryValue, copyIn, exec, queryEach, Cursor, addQuery, columnIndex, query, queryInTransaction, queryRow, PreparedStatement, copyIn, addExec, addQuery, addExec, copyIn, AccessMode, close, queryValueOrDefault, execInTransaction, withTransactionRetry, rollbackGrace, copyInStream, withSavepointDeadline, DeferrableMode, copyIn, execute, withSavepoint, reset, queryColumn, exec, queryDirect, execInTransaction, RetryOptions, PipelineResult, prepare, queryValueOpt, withTransaction, withTransactionRetryDeadline, backoffDelayMs, notify, queryValueOpt, IsolatedPipelineResults, withTransactionDeadline, close, columnIndex, queryValueOrDefault, query, execDirect, TransactionOptions, queryValue, copyOutStream, PipelineResultKind, buildBeginSql, queryInTransaction, queryRowOpt, execute, copyOut, queryExists, IsolationLevel, openCursor, executeIsolated, withCursor, fetchNext, 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, makeLoWriteCallback, loTell, loReadStreamDeadline, loReadStream, loWriteAll, loDefaultChunkSize, loImport, withLargeObject, makeLoReadCallback, loReadAllDeadline, loWriteAllDeadline, loWrite, LoWriteCallback, Oid, LoReadCallback, INV_READ, loWriteStreamDeadline, SEEK_CUR, loTruncate, loSize, loClose, loWriteStream, loSeek, loCreate, loRead, loUnlink, loSizeDeadline, INV_READWRITE, loExport, loOpen, loReadAll, LargeObject, withAdvisoryLockShared, withAdvisoryLockShared, withAdvisoryLock, advisoryTryLock, withAdvisoryLockXactShared, withAdvisoryLockXactShared, withAdvisoryLockXact, withAdvisoryLockXact, advisoryTryLockXact, advisoryLockXact, advisoryUnlockShared, withAdvisoryLockXact, advisoryLock, advisoryLock, withAdvisoryLockShared, withAdvisoryLockXact, advisoryLockShared, advisoryTryLockXact, withAdvisoryLockShared, advisoryUnlock, advisoryLockXact, advisoryTryLockShared, advisoryUnlockShared, advisoryUnlock, advisoryTryLockXactShared, withAdvisoryLock, advisoryTryLock, advisoryTryLockXactShared, advisoryLockXactShared, withAdvisoryLock, withAdvisoryLockXactShared, advisoryLockShared, advisoryUnlockAll, withAdvisoryLockXactShared, 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, md5AuthHash, scramVerifyServerFinal, scramClientFirstMessage, scramClientFirstMessage, DefaultMaxScramIterations, oidRsaPss, computeTlsServerEndpoint, scramClientFinalMessage, ScramState, burnStr, scramEscapeUsername, PoolConfig, PoolMetrics, PooledConnHandle, PgPool, initPoolConfig, idleCount, activeCount, size, isClosed, metrics, resetSession, newPool, release, release, resetSessionAndRelease, acquire, 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, <=, cancelAndWait, <, wait, hours, <=, declareAsyncCallback, sleepMsAsync, -, ZeroDuration, hasTls, Moment, ==, toMilliseconds, Duration, scheduleSoon, seconds, hasChronos, unregisterFdReader, +, $, 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, maxInt32Len, DefaultMaxBackendMessageLen, MaxNegotiateProtocolOptions, MaxErrorOrNoticeFields, MaxSaslMechanisms, initRow, data, rowIdx, isBinarySafeOid, addInt16, addInt32, addCount16, addLen32, addCString, patchMsgLen, 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