tmp-postgres: Start and stop a temporary postgres

[ bsd3, library, program, web ] [ Propose Tags ] [ Report a vulnerability ]

Start and stop a temporary postgres. See README.md


[Skip to Readme]

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1.0.0, 0.1.0.1, 0.1.0.2, 0.1.0.3, 0.1.0.4, 0.1.0.5, 0.1.0.6, 0.1.0.7, 0.1.0.8, 0.1.1.0, 0.1.1.1, 0.1.2.0, 0.1.2.1, 0.1.2.2, 0.2.0.0, 0.3.0.0, 0.3.0.1, 1.0.0.0, 1.0.0.1, 1.0.0.2, 1.0.1.0, 1.2.0.0, 1.2.0.1, 1.2.1.0, 1.3.0.0, 1.4.0.0, 1.5.0.0, 1.6.0.0, 1.7.0.0, 1.7.0.1, 1.7.1.0, 1.8.0.0, 1.9.0.0, 1.9.0.1, 1.9.0.2, 1.10.0.0, 1.11.0.0, 1.12.0.0, 1.12.0.1, 1.13.0.0, 1.13.1.0, 1.13.1.1, 1.13.1.2, 1.14.0.0, 1.14.0.1, 1.14.1.0, 1.15.0.0, 1.15.1.0, 1.15.1.1, 1.16.0.0, 1.16.1.0, 1.17.0.0, 1.18.0.0, 1.19.0.0, 1.19.0.1, 1.20.0.0, 1.20.0.1, 1.21.0.0, 1.21.1.0, 1.21.1.1, 1.22.0.0, 1.23.0.0, 1.23.0.1, 1.23.0.2, 1.23.0.3, 1.24.0.0, 1.25.0.0, 1.25.0.1, 1.26.0.0, 1.27.0.0, 1.27.0.1, 1.27.0.2, 1.27.0.3, 1.27.0.4, 1.28.0.0, 1.28.1.0, 1.29.0.0, 1.29.0.1, 1.30.0.0, 1.30.0.1, 1.31.0.0, 1.31.0.1, 1.31.0.2, 1.31.0.3, 1.32.0.0, 1.32.0.1, 1.33.0.0, 1.34.0.0, 1.34.0.1, 1.34.1.0
Change log CHANGELOG.md
Dependencies ansi-wl-pprint (<1), async, base (>=4.6 && <5), base64-bytestring, bytestring, containers, cryptohash-sha1, deepseq, directory, generic-monoid, port-utils, postgres-options (>=0.2.0.0), postgresql-simple, process (>=1.2.0.0), stm, temporary, tmp-postgres, transformers, unix [details]
Tested with ghc ==8.6.5
License BSD-3-Clause
Copyright 2017-2019 Jonathan Fischoff
Author Jonathan Fischoff
Maintainer jonathangfischoff@gmail.com
Revised Revision 1 made by Bodigrim at 2024-05-06T14:14:54Z
Category Web
Home page https://github.com/jfischoff/tmp-postgres#readme
Source repo head: git clone https://github.com/jfischoff/tmp-postgres
Uploaded by JonathanFischoff at 2019-12-29T07:20:55Z
Distributions
Reverse Dependencies 4 direct, 1 indirect [details]
Executables with-cache-loop, soak-test
Downloads 35067 total (205 in the last 30 days)
Rating 2.25 (votes: 2) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2019-12-29 [all 1 reports]

Readme for tmp-postgres-1.34.1.0

[back to package description]

Hackage Travis CI Status

tmp-postgres

tmp-postgres provides functions for creating a temporary postgres instance. By default it will create a temporary data directory and a temporary directory for a UNIX domain socket for postgres to listen on.

Here is an example using the expection safe 'with' function:

with $ \db -> bracket
  (connectPostgreSQL (toConnectionString db))
  close $
  \conn -> execute_ conn "CREATE TABLE foo (id int)"

To extend or override the defaults use withConfig (or startConfig).

tmp-postgres ultimately calls initdb (optionally) , postgres and createdb (optionally).

All of the command line, environment variables and configuration files that are generated by default for the respective executables can be extended.

In general tmp-postgres is useful if you want a clean temporary postgres and do not want to worry about clashing with an existing postgres instance (or needing to ensure postgres is already running).

Here are some different use cases for tmp-postgres and their respective configurations:

  • The default 'with' and 'start' functions can be used to make a sandboxed temporary database for testing.
  • By disabling initdb one could run a temporary isolated postgres on a base backup to test a migration.
  • By using the 'stopPostgres' and 'withRestart' functions one can test backup strategies.

WARNING!! Ubuntu's PostgreSQL installation does not put initdb on the PATH. We need to add it manually. The necessary binaries are in the /usr/lib/postgresql/VERSION/bin/ directory, and should be added to the PATH

echo "export PATH=$PATH:/usr/lib/postgresql/VERSION/bin/" >> /home/ubuntu/.bashrc

Installation

macOS

$ brew install postgres
$ stack install tmp-postgres

Ubuntu

Ubuntu's PostgreSQL installation does not put initdb on the PATH. We need to add it manually.

$ sudo apt-get install postgresql-VERSION
$ echo "export PATH=$PATH:/usr/lib/postgresql/VERSION/bin/" >> /home/ubuntu/.bashrc
$ stack install tmp-postgres