HORIZON HASKELLDocslts/ghc-9.10.x248f8f02026-10-05Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · 248f8f0 · 2026-10-05

Modulepostgresql-simple-0.7.0.0Haskell2010

Database.PostgreSQL.Simple.Copy

mid-level support for COPY IN and COPY OUT. See https://www.postgresql.org/docs/9.5/static/sql-copy.html for more information.

To use this binding, first call copy with an appropriate query as documented in the link above. Then, in the case of a COPY TO STDOUT query, call getCopyData repeatedly until it returns CopyOutDone. In the case of a COPY FROM STDIN query, call putCopyData repeatedly and then finish by calling either putCopyEnd to proceed or putCopyError to abort.

You cannot issue another query on the same connection while a copy is ongoing; this will result in an exception. It is harmless to concurrently call getNotification on a connection while it is in a CopyIn or CopyOut state, however be aware that current versions of the PostgreSQL backend will not deliver notifications to a client while a transaction is ongoing.

  • 1 type
  • 7 values
valuecopy :: ToRow params => Connection -> Query -> params -> IO ()
#

Issue a COPY FROM STDIN or COPY TO STDOUT query. In the former case, the connection's state will change to CopyIn; in the latter, CopyOut. The connection must be in the ready state in order to call this function. Performs parameter substitution.

valuecopy_ :: Connection -> Query -> IO ()
#

Issue a COPY FROM STDIN or COPY TO STDOUT query. In the former case, the connection's state will change to CopyIn; in the latter, CopyOut. The connection must be in the ready state in order to call this function. Does not perform parameter subsitution.

datadata CopyOutResult
#

Constructors

  • CopyOutRow !ByteString

    Data representing either exactly one row of the result, or header or footer data depending on format.

  • CopyOutDone !Int64

    No more rows, and a count of the number of rows returned.

Instances2Eq, Show
  • Eq CopyOutResultDefined in postgresql-simple-0.7.0.0 · Database.PostgreSQL.Simple.Copy
  • Show CopyOutResultDefined in postgresql-simple-0.7.0.0 · Database.PostgreSQL.Simple.Copy
valuefoldCopyData
  1. :: Connection

    Database connection

  2. -> (a -> ByteString -> IO a)

    Accumulate one row of the result

  3. -> (a -> Int64 -> IO b)

    Post-process accumulator with a count of rows

  4. -> a

    Initial accumulator

  5. -> IO b

    Result

#

Fold over COPY TO STDOUT query passing each copied row to an accumulator and calling a post-process at the end. A connection must be in the CopyOut state in order to call this function.

Example

(acc, count) <- foldCopyData conn
    (\acc row -> return (row:acc))
    (\acc count -> return (acc, count))
    []

Retrieve some data from a COPY TO STDOUT query. A connection must be in the CopyOut state in order to call this function. If this returns a CopyOutRow, the connection remains in the CopyOut state, if it returns CopyOutDone, then the connection has reverted to the ready state.

valueputCopyData :: Connection -> ByteString -> IO ()
#

Feed some data to a COPY FROM STDIN query. Note that the data does not need to represent a single row, or even an integral number of rows. The net result of putCopyData conn a >> putCopyData conn b is the same as putCopyData conn c whenever c == BS.append a b.

A connection must be in the CopyIn state in order to call this function, otherwise a SqlError exception will result. The connection remains in the CopyIn state after this function is called.

valueputCopyEnd :: Connection -> IO Int64
#

Completes a COPY FROM STDIN query. Returns the number of rows processed.

A connection must be in the CopyIn state in order to call this function, otherwise a SqlError exception will result. The connection's state changes back to ready after this function is called.

valueputCopyError :: Connection -> ByteString -> IO ()
#

Aborts a COPY FROM STDIN query. The string parameter is simply an arbitrary error message that may show up in the PostgreSQL server's log.

A connection must be in the CopyIn state in order to call this function, otherwise a SqlError exception will result. The connection's state changes back to ready after this function is called.