Safe Haskell | None |
---|---|
Language | Haskell2010 |
This module provides functions greating a temporary postgres instance on a random port for testing.
result <-start
[] case result of Left err -> print err Right tempDB -> do -- Do stuffstop
tempDB
The are few different methods for starting postgres
which provide different
methods of dealing with stdout
and stderr
.
The start methods use a config based on the one used by pg_tmp, but can be overriden by in different values to the first argument of the start functions.
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
Synopsis
- data DB = DB {}
- data StartError
- start :: [(String, String)] -> IO (Either StartError DB)
- startLocalhost :: [(String, String)] -> IO (Either StartError DB)
- startAndLogToTmp :: [(String, String)] -> IO (Either StartError DB)
- startWithHandles :: SocketClass -> [(String, String)] -> Handle -> Handle -> IO (Either StartError DB)
- stop :: DB -> IO ExitCode
- data SocketClass
Types
DB | |
|
data StartError Source #
Instances
Eq StartError Source # | |
Defined in Database.Postgres.Temp.Internal (==) :: StartError -> StartError -> Bool # (/=) :: StartError -> StartError -> Bool # | |
Show StartError Source # | |
Defined in Database.Postgres.Temp.Internal showsPrec :: Int -> StartError -> ShowS # show :: StartError -> String # showList :: [StartError] -> ShowS # | |
Exception StartError Source # | |
Defined in Database.Postgres.Temp.Internal toException :: StartError -> SomeException # fromException :: SomeException -> Maybe StartError # displayException :: StartError -> String # |
Starting postgres
startWithHandles
is the most general way to start postgres. It allows the user to
pass in it's own handles for stdout
and stderr
. start
and startAndLogToTmp
both call startWithHandles
passing in different handles. start
uses the current
process's stdout
and stderr
and startAndLogToTmp
logs to files in the mainDir
.
postgres
is started with a default config with the following options:
listen_addresses = '' shared_buffers = 12MB fsync = off synchronous_commit = off full_page_writes = off log_min_duration_statement = 0 log_connections = on log_disconnections = on unix_socket_directories = {mainDir} client_min_messages = ERROR
Any of the options can be overriden by passing in a different value when starting
Right db <- start
[("log_min_duration_statement", "1000")]
start postgres and use the current processes stdout and stderr
start postgres and use the current processes stdout and stderr but use TCP on localhost instead of a unix socket.
:: SocketClass | |
-> [(String, String)] | Extra options which override the defaults |
-> Handle | stdout |
-> Handle | stderr |
-> IO (Either StartError DB) |
Start postgres and pass in handles for stdout and stderr
Stopping postgres
data SocketClass Source #