beam-postgres
Connection layer between beam and postgres
https://haskell-beam.github.io/beam/user-guide/backends/beam-postgres
| LTS Haskell 24.45: | 0.5.6.1 |
| Stackage Nightly 2026-06-14: | 0.6.2.0 |
| Latest on Hackage: | 0.6.2.0 |
MIT licensed by Travis Athougies
Maintained by [email protected]
This version can be pinned in stack with:
beam-postgres-0.6.2.0@sha256:dee171cde375905e5ade5fb04c9e9b1f1a2939b7caf2701ab1327ba5013e5443,4887Module documentation for 0.6.2.0
- Database
- Database.Beam
Depends on 24 packages(full list with versions):
Beam driver for PostgreSQL, an advanced open-source RDBMS
Changes
0.6.2.0
Added features
- Added instances for
BeamSqlBackendIsString Postgres (CI String)andBeamSqlBackendIsString Postgres (CI Text), allowing the use oftoTsVectorover colums of typecitext(#818) - Exposed the functionality to implement user-defined extensions via
Database.Beam.Postgres.Extensions(#819)
Bug fixes
- Fixed an issue where using
pgSelectWithwith no common-table expressions would lead to an invalid SQL query at runtime.
0.6.1.0
Added features
- Added file-mode
COPY ... TO 'file'/COPY ... FROM 'file'support via the newMonadBeamCopyTo/MonadBeamCopyFrominstances onPg. Smart constructorscopyToText/copyToCSV(andcopyFromText/copyFromCSV, plus*Withvariants) build the per-format options records. Note that this requires thepg_write_server_files/pg_read_server_filesrole (or superuser) on the connecting role — seeDatabase.Beam.Postgres.Extensions.Copy.File. - Added streaming
COPY ... TO STDOUT/COPY ... FROM STDINsupport via the newMonadBeamCopyToStream/MonadBeamCopyFromStreaminstances onPg. Smart constructorscopyToTextStream/copyToCSVStream/copyFromTextStream/copyFromCSVStreambuild the per-format options. Streaming COPY does not require any special role attribute and is the appropriate choice when the client and server are on different hosts — seeDatabase.Beam.Postgres.Extensions.Copy.Stream.
Bug fixes
- Fixed an issue where a window function applied over the result of
nub_(or the Postgres-specificpgNubBy_) would emitDISTINCTand the window expression in the sameSELECT, causing the window to evaluate against the pre-deduplicated rows. The inner select is now materialised as a subquery whenever it carriesDISTINCT,GROUP BY, orHAVING(#756).
0.6.0.0
Interface changes
- Removed
week_fromDatabase.Beam.Postgres.PgSpecific. The same functionality is now available inbeam-coreas a backend-agnosticweek_extract field; import it fromDatabase.Beam.Query.Extract(or re-exported throughDatabase.Beam) instead. - Replaced the single
BeamSqlBackendHasSerial Postgresinstance with three width-specific instancesBeamSqlBackendHasSerial Int16/Int32/Int64 Postgres, mapping respectively tosmallserial,serial, andbigserial. Existing code usinggenericSerialfor aSqlSerial Int32column continues to work; other widths are now also supported (#534).
Added features
- Implemented the new
runInsertReturningListWith/runUpdateReturningListWith/runDeleteReturningListWithclass methods on thePgmonad. These let callers project a subset of columns from the affected rows of anINSERT/UPDATE/DELETE ... RETURNING(#801). - Implemented
weekFieldforPgExtractFieldSyntax, supporting the new backend-agnosticweek_extract field frombeam-core.
Updated dependencies
- Bumped the lower bound on
beam-coreto0.11.
0.5.6.1
Bug fixes
- Fixed a critical bug introduced by the performance improvements of 0.5.6.0, which would result in unexpected type errors when executing database queries. While the bug has been fixed, performance remains as good as the 0.5.6.0 release (#803)
0.5.6.0
Added features
-
Support for temporary tables.
-
getDbConstraintsForSchemasnow discovers foreign key constraints viapg_constraint, includingON DELETE/ON UPDATEactions.
Performance improvements
- By minimizing redundant work in the hot loop, the performance of
beam-postgreswhen fetching data from a database has been improved by 30%. The performance ofbeam-postgresis now within 10% of raw queries viapostgresql-simple(#797).
0.5.5.0
Added features
- Add support for creating secondary indices, supporting both
CREATE INDEXandCREATE UNIQUE INDEX.getDbConstraintsForSchemasnow discovers user-created secondary indices viapg_index(excluding primary keys and constraint-backing indices).
0.5.4.4
Added features
- Added the array functions
arrayAppend_,arrayPrepend_,arrayRemove_,arrayReplace_,arrayShuffle_,arraySample_,arrayToString_, andarrayToStringWithNull_(#770)
Updated dependencies
- Updated the upper bound on
timeto includetime-1.14
0.5.4.3
Added features
- Added
pgSelectWith, a combinator likeselectWithwhich allows to nest common table expressions in subqueries (#720).
Bug fixes
- Added the ability to migrate Postgres’ array types (#354).
- Remove dependency on
haskell-src-exts, which was not in use anymore.
0.5.4.2
Bug fixes
- Fixed an issue where columns of type
Maybe (Vector a)did not marshall correctly from the database. In particular, querying aNothingwould returnJust (Vector.fromList [])instead (#692).
0.5.4.1
Bug fixes
- Fixed an issue where inexact numeric literals (e.g. Haskell type
Double) were implicitly converted to PostgresNUMERIC, triggering a runtime conversion error (#700).
0.5.4.0
Added features
- Better error messages on column type mismatches (#696).
- Added support for creating and dropping database schemas and associated tables with
createDatabaseSchema,dropDatabaseSchema, andcreateTableWithSchema(#716).
Documentation
- Make
runBeamPostgresandrunBeamPostgresDebugeasier to find (#663).
0.5.3.1
Added features
- Loosen some version bounds
0.5.3.0
Bug fixes
- Make sure lateral join names do not overlap
- Fix
bool_or
Addded features
- Add
runSelectReturningFirst IN (SELECT ...)syntax viainQuery_
0.5.2.1
Added features
- Aeson 2.0 support
0.5.2.0
Added features
- New
conduitstreaming variants which work directly inMonadResource - Heterogeneous variant of
ilike_:ilike_' - Postgres-specific
EXTRACTfields - GHC 9.2 and 9.0 support
Bug fixes
- Throw correct exception for row errors in
conduitimplementation - Support emitting UUID values in context where type cannot be inferred by Postgres
0.5.1.0
Added features
MonadBaseandMonadBaseControlinstances forPg
Bug fixes
- Fix possible memory corruption by copying row data
- Remove invalid parentheses emitted by
pgUnnest
0.5.0.0
Interface changes
- Removed instances for machine-dependent ambiguous integer types
IntandWord - Fixed types for some functions that only work with
jsonband notjson
Added features
- Support for
in_on row values - Various Postgres regex functions
- Expose
fromPgIntegralandfromPgScientificOrIntegral - Add
liftIOWithHandle :: (Connection -> IO a) -> Pg a - Add
getDbConstraintsForSchemasto get constraints without relying on the state of the connection - Poly-kinded instances for
Data.Tagged.Tagged - Add
HasDefaultDatatypeforUTCTime - Support for specifically-sized
SqlSerialintegers (smallserial,serial,bigserial) - Predicate detection for extensions
pgArrayToJsonforarray_to_json- Extension definition and all functions provided by
uuid-ossp - GHC 8.8 support
Bug fixes
- Only detect primary keys of tables in visible schemas
- Fix emitting of
DECIMALtype - Report JSON correct decoding errors instead of throwing
UnexpectedNull
Behavior changes
runReturningOneandrunResturningListnow fetch all rows at once instead of using cursors
0.4.0.0
0.3.2.0
Add Semigroup instances to prepare for GHC 8.4 and Stackage nightly
0.3.1.0
Add runBeamPostgres and runBeamPostgresDebug functions.
0.3.0.0
Initial hackage beam-postgres