| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Database.Postgres.Temp
Description
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 stuffstoptempDB
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
Constructors
| DB | |
Fields
| |
data StartError Source #
Constructors
| InitDBFailed ExitCode | |
| CreateDBFailed [String] ExitCode |
Instances
| Eq StartError Source # | |
Defined in Database.Postgres.Temp.Internal | |
| Show StartError Source # | |
Defined in Database.Postgres.Temp.Internal Methods showsPrec :: Int -> StartError -> ShowS # show :: StartError -> String # showList :: [StartError] -> ShowS # | |
| Exception StartError Source # | |
Defined in Database.Postgres.Temp.Internal Methods 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.
Arguments
| :: 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 #