tmp-postgres
provides functions creating a temporary postgres
instance.
By default it will create a temporary directory for the data,
a random port for listening and a temporary directory for a UNIX
domain socket.
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)"
MacOS and Linux are support. Windows is not.
Requires PostgreSQL 9.3+
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
[
Skip to Readme]
Versions |
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.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 |
None available |
Dependencies |
async, base (>=4.6 && <5), bytestring, directory, either, generic-monoid, network, port-utils, postgres-options, postgresql-simple, postgresql-simple-opts, process (>=1.2.0.0), temporary, transformers, unix [details] |
License |
BSD-3-Clause |
Copyright |
2017-2019 Jonathan Fischoff |
Author |
Jonathan Fischoff |
Maintainer |
jonathangfischoff@gmail.com |
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-10-31T21:00:11Z |
tmp-postgres
tmp-postgres
provides functions creating a temporary @postgres@ instance.
By default it will create a temporary directory for the data,
a random port for listening and a temporary directory for a UNIX
domain socket.
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 withPlan
(or startWith
).
tmp-postgres
ultimately calls initdb
, postgres
and createdb
.
All of the command line, environment variables and configuration files
that are generated by default for the respective executables can be
extended or overrided.
All tmp-postgres
by default is most useful for creating tests by
configuring "tmp-postgres" differently it can be used for other purposes.
- By disabling
initdb
and createdb
one could run a temporary
postgres on a base backup to test a migration.
- By using the
stopPostgres
and withRestart
functions one can test
backup strategies.
The level of custom configuration is extensive but with great power comes
ability to screw everything up. tmp-postgres
doesn't validate any custom
configuration and one can easily create a Config
that would not allow
postgres to start.
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