hasql-pool-1.0.1: Pool of connections for Hasql
Safe HaskellSafe-Inferred
LanguageHaskell2010

Hasql.Pool

Contents

Synopsis

Pool

data Pool Source #

Pool of connections to DB.

acquire :: Config -> IO Pool Source #

Create a connection-pool.

No connections actually get established by this function. It is delegated to use.

If you want to ensure that the pool connects fine at the initialization phase, just run use with an empty session (pure ()) and check for errors.

use :: Pool -> Session a -> IO (Either UsageError a) Source #

Use a connection from the pool to run a session and return the connection to the pool, when finished.

Session failing with a ClientError gets interpreted as a loss of connection. In such case the connection does not get returned to the pool and a slot gets freed up for a new connection to be established the next time one is needed. The error still gets returned from this function.

Warning: Due to the mechanism mentioned above you should avoid intercepting this error type from within sessions.

release :: Pool -> IO () Source #

Release all the idle connections in the pool, and mark the in-use connections to be released after use. Any connections acquired after the call will be freshly established.

The pool remains usable after this action. So you can use this function to reset the connections in the pool. Naturally, you can also use it to release the resources.

Errors

data UsageError Source #

Union over all errors that use can result in.

Constructors

ConnectionUsageError ConnectionError

Attempt to establish a connection failed.

SessionUsageError QueryError

Session execution failed.

AcquisitionTimeoutUsageError

Timeout acquiring a connection.

Instances

Instances details
Exception UsageError Source # 
Instance details

Defined in Hasql.Pool

Show UsageError Source # 
Instance details

Defined in Hasql.Pool

Eq UsageError Source # 
Instance details

Defined in Hasql.Pool