postgres
PostgreSQL database driver. Supports binary protocol, connection pooling and statement reuse.
3.5.12
572K downloads/mo
#478 most downloaded on pub.dev
isoos/postgresql-dart
What this package is like to depend on
Last release 2 months ago
11 Jun 2026
Release timing varies
gaps range from 2 weeks to 7 months
Nearly every release is documented
notes for 72 of 74 stable releases
1 version withdrawn
withdrawn after publishing
10 years old
85 releases · first in 2016
6 releases in the last 12 months
see the full history below
Release timeline
85 releases · Sep 2016 to Jun 2026Releases
latest 60 of 85-
3.5.1211 Jun 2026Release notes
Open source →- Fix
runTxsilently rolling back afterROLLBACK TO SAVEPOINTrecovery: clear stale_transactionExceptionwhen PostgreSQL confirms a healthy transaction state. - Fix connection permanently blocked when
BEGINfails insiderunTx(stale_activeTransactionstate). - Fix connection left in undefined PostgreSQL state when
ROLLBACKfails after a transaction error. - Fix untyped
Uint8Listparameters being encoded as an integer array literal: they are now encoded as abyteahex literal.
- Fix
-
3.5.1111 May 2026Release notes
Open source →- Adding
JsonbListViewwithisSqlNull(int index)method to check if a JSONB array has SQL or JSON null value. - Fix double-timezone encoding bug.
- Fix statement scope bug.
- Adding
-
3.5.1007 May 2026 -
3.5.922 Oct 2025Release notes
Open source →- Supporting multiple hosts in connection strings via comma-separated hosts or multiple
hostquery parameters. - Unix socket connections via
hostquery parameter (automatically detected when path contains/). - Supporting
user/username,password,database, andportas query parameters in connection strings (override URL components).
- Supporting multiple hosts in connection strings via comma-separated hosts or multiple
-
3.5.803 Oct 2025 -
3.5.701 Oct 2025Release notes
Open source →- Supporting URL-based connection-string specification in
Connection.openFromUrlandPool.withUrl. (Note: feature and supported settings is considered experimental.)
- Supporting URL-based connection-string specification in
-
3.5.613 Apr 2025 -
3.5.526 Mar 2025Release notes
Open source →- Better exception message when SSL is not supported.
- Fix: typo in type specification (
read->real, also keepingreadfor compatibility).
-
3.5.421 Feb 2025Release notes
Open source →Warning: This version fixes the inconsistency of
3.5.3by:UniqueViolationExceptionandForeignKeyViolationExceptionextendsServerExceptioninstead ofPgException, and- they no longer have public constructor (please open an issue if this is something you'd rely on).
- The exception from cancelling the statement is also extends
ServerExceptioninstead ofPgException.
-
3.5.321 Feb 2025 withdrawnRelease notes
Open source →- New typed exceptions:
UniqueViolationException,ForeignKeyViolationException. #416 by hurrba - Fix: don't reuse pool connections that are closed/closing. #417 by davidmartos96
- New typed exceptions:
-
3.5.214 Feb 2025Release notes
Open source →- Fix:
Poolconnection timeout does not rely onpackage:pool's timeout, instead uses a separateTimer.
- Fix:
-
3.5.108 Feb 2025 -
3.5.018 Jan 2025Release notes
Open source →- Better exception stacktraces (in some cases) using
package:stack_trace. - With that dependency, upgraded minimum SDK to
3.4.
- Better exception stacktraces (in some cases) using
-
3.4.826 Dec 2024Release notes
Open source →- Fix: Don't ignore de pool resource
closecall when using foce. #406 by davidmartos96.
- Fix: Don't ignore de pool resource
-
3.4.722 Dec 2024Release notes
Open source →- Implemented
Pool.close(force: true)(using davidmartos96's #397 as baseline).
- Implemented
-
3.4.622 Dec 2024Release notes
Open source →- Fix: do not close connection after an empty statement.
- Fix:
close(force: true)does not cause uncaught exception.
-
3.4.520 Dec 2024Release notes
Open source →close(force: true)to indicate intent to force-close pending queries and resources. #396 by davidmartos96- Fix: multiple message processing overlap bug when SSL mode was
disabled.
-
3.4.420 Nov 2024Release notes
Open source →- Fix: explicit closing of prepared statement portals in transactions to release table locks. #393
-
3.4.313 Nov 2024Release notes
Open source →- Fix: prevent hanging state by forwarding protocol-level parsing errors into the message stream.
-
3.4.208 Nov 2024Release notes
Open source →- Fix: When a transaction is rolled back, do not expose the exception on rollback, rather the original exception from the transaction.
-
3.4.102 Nov 2024Release notes
Open source →- Do not allow exceptions escape when closing broken connection. #384 by pulyaevskiy.
-
3.4.017 Sep 2024Release notes
Open source →Connection.info(throughConnectionInfoclass) exposes read-only connection-level information, e.g. acessing access server-provided parameter status values.- Support for binary
pgoutputreplication by wolframm. - Allowing custom type codecs:
Codecinterface is used for encoding/decoding value by type OIDs or Dart values.Codec.encodeandCodec.decodegets a reference toCodecContextwhich provides access toencoding, observed runtime parameters and theTypeRegistry.EncoderFnvalue converter for generic Dart object -> Postgres-encoded bytes (for values where type is not specified).DatabaseInfotracks information about relations and oids (currently limited toRelationMessagecaching).
- Timeout-related behaviour changes, may be breaking in some cases:
- Preparing/executing a stamement on the main connection while in a
runTxcallback will throw an exception. - Setting
timeoutwill try to actively cancel the current statement using a new connection. ServerExceptionmay be transformed into_PgQueryCancelledExceptionwhich is bothPgExceptionandTimeoutException(but no longerServerException).
- Preparing/executing a stamement on the main connection while in a
- API deprecations:
- Deprecated
TupleDataColumn.data, use.valueinstead (for binary protocol messages). - Deprecated some logical replication message parsing method.
- Removed
@internal-annotated methods from the public API ofServerExceptionandSeverity.
- Deprecated
-
3.4.0-dev.213 Sep 2024 pre-releaseNothing published for this version
-
3.4.0-dev.105 Sep 2024 pre-releaseNothing published for this version
-
3.3.021 Aug 2024Release notes
Open source →Removed legacy v2 APIs. These APIs were meant to be removed in
3.1.0, but were kept for a bit longer, as they didn't have any drawback to be around. However, a planned redesign of the type customization would require to touch the v2 codebase and it is not worth the effort to keep it much longer. -
3.2.118 May 2024 -
3.2.011 Apr 2024Release notes
Open source →- Support for
tsvectorandtsquerytypes. ResultRow.isSqlNull(int)returns true if the column's value was SQLNULL.TypedValue.isSqlNullindicates SQLNULL(vs. JSONnull).
- Support for
-
3.1.214 Mar 2024Release notes
Open source →ConnectionSettings.onOpencallback to initialize a new connection and set connection-level variables.
-
3.1.127 Feb 2024Release notes
Open source → -
3.1.021 Feb 2024Release notes
Open source →Added the following PostgreSQL builtin types:
- Geometric types
line,lseg,path,polygon,box,circle - Range types
int4range,int8range,daterange,tsrange,tstzrange - Time type
time - Array types
_int2,_date,_time,_timestamp,_timestamptz,_uuid
- Geometric types
-
3.0.829 Jan 2024Release notes
Open source →- Properly react to connection losses by reporting the database connection as closed.
-
3.0.724 Jan 2024Release notes
Open source → -
3.0.617 Jan 2024 -
3.0.527 Dec 2023 -
3.0.414 Dec 2023 -
3.0.305 Dec 2023 -
3.0.227 Nov 2023 -
3.0.119 Nov 2023Release notes
Open source →- Fix: do not allow
executeafter closing theConnection. Session.runTx()supports rolling back the transaction throughTxSession.rollback()(otherwise any exception has the same effect, but callers need to catch it).- Supporting more type aliases, including
serial4,serial8,integer... - Deprecated all of v2 API, legacy fallback will be removed in next minor version (
3.1.0).
- Fix: do not allow
-
3.0.014 Nov 2023Release notes
Open source →New features:
- New API (better names and consistency).
- New SQL parsing and configurable query substitutions.
- Integrated connection pooling.
- A somewhat-compatible legacy API support to help migrations (will be removed in
3.1.0).
BREAKING CHANGES
The package had a partial rewrite affecting public client API and internal behaviour, keeping most of the wire protocol handling from the old version.
Users of this package must rewrite and test their application when upgrading.
Notable breaking behaviour changes:
- Simple query protocol allows sending queries to the server without awaiting on the result. The new implementation queues these request on the client instead.
- Table name OIDs are not fetched or cached, this information from the
result schema is absent, also causing
mappedResultsQueryto be removed from the new API. - Queries are not cached implicitly, explicit prepared statements can be used instead.
intervalvalues are returned asIntervaltype instead ofDuration.- A newly added
UndecodedBytesinstances are returned when the package does not know or has not implemented the appropriate type decoding yet. Previously these values were auto-encoded toStringand if that failed theUint8Listwere used. - Types, fields and parameter names may have been renamed to be more consistent or more aligned with the Dart naming guides.
Legacy compatibility layer
package:postgres/legacy.dartprovides a somewhat backwards-compatible API via thePostgreSQLConnection.withV3()constructor. Many features, including the ones mentioned above are missing and/or throwUnimplementedErrorwhen called.Migration
- You may use the legacy compatibility layer to check if your code relies on any of the above mentioned feature, rewrite if needed.
- Start using the new API, incrementally, when possible.
- For most queries, you may use
Sql.named('SELECT ...')to keep the default name- andMap-based query@variable`` substitution, or you may use the raw$1` version (with 1-based indexes). - Always write tests.
If you have any issues with migration or with the new behavior, please open an issue on the package's GitHub issue tracker or discussions.
Thanks
The rewrite happened because of many contributions (including code, comments or criticism) on the new direction and design. I'd like to call out especially to simolus3 and osaxma, who helped to push forward.
-
3.0.0-beta.212 Nov 2023 pre-release -
3.0.0-beta.131 Oct 2023 pre-release -
3.0.0-alpha.121 Oct 2023 pre-release -
2.6.421 Feb 2024Nothing published for this version
-
2.6.306 Oct 2023Release notes
Open source →- Allow
encodingto be specified for connections. The setting will be used for all connection-related string conversions. - Allow generic
Listtype as substitution values in binary encoding (as long as the inner type matches). - Refactor: replaced
UTF8BackedStringwith generic encoding (not complete). - Breaking change in
package:postgres/messages.dart: default constructors made internal, parsing is done with more efficient reader.
- Allow
-
2.6.230 Jul 2023 -
2.6.126 Feb 2023 -
2.6.009 Feb 2023Release notes
Open source →- Updated to
package:lints. - Adding lowerCase values to
AuthenticationScheme. - Add new
package:postgres/postgres_v3_experimental.dartlibrary as a preview. It exposes the postgres client under a new API that will replace the current one in version3.0.0of this package. At the moment, the new library is experimental and not fully implemented. Until the actual3.0.0release, the new APIs might change without a breaking version.
- Updated to
-
2.5.217 Sep 2022 -
2.5.114 Sep 2022 -
2.5.010 Sep 2022Release notes
Open source →- Added Support for Streaming Replication Protocol which included the following changes:
- Replication Mode Messages Handling. #58 by osaxma
- Add new message types for replication. #57 by osaxma
- Add connection configuration for Streaming Replication Protocol. #56 by osaxma
- Raise the min sdk version to support enhanced enums. #55 by osaxma
- Add LSN type and time conversion to and from ms-since-Y2K. #53 by osaxma
- Fix affected rows parsing in CommandCompleteMessage. #52 by osaxma
- Introduced new APIs to
PostgreSQLConnection:addMessageto send client messages,messagesstream to listen to server messages &useSimpleQueryProtocoloption inquerymethod. #51 by osaxma
- Added Support for Streaming Replication Protocol which included the following changes:
-
2.4.629 Jul 2022 -
2.4.520 Jun 2022 -
2.4.406 Jun 2022 -
2.4.330 Nov 2021Release notes
Open source →- Support for clear text passwords using a boolean parameter in connection as 'allowClearTextPassword' to activate / deactivate the feature. #20.
-
2.4.205 Nov 2021 -
2.4.121 Aug 2021 -
2.4.1+122 Aug 2021 -
2.4.1+222 Aug 2021 -
2.4.011 Aug 2021Release notes
Open source → -
2.3.214 Apr 2021