@hackage / valiant-pipes

Pipes streaming adapter for valiant

Latest0.1.0.0

About

Metadata

  • Last updated , by joshburgess
  • License BSD-3-Clause
  • Categories Databases
  • Maintained by: joshburgess.webdev@gmail.com

  • Lottery factor: 1

Links

Installation

Tested Compilers

  1. 9.10.3

Package Flags

Use the -f option with cabal commands to enable flags

    werror (off by default)

    Enable -Werror for development builds.

Readme

valiant-pipes

Pipes streaming adapter for valiant.

Produces Producer r IO () values from query results, so they compose with the pipes ecosystem.

Quick start

import Valiant
import Valiant.Pipes
import Pipes
import Pipes.Prelude qualified as P

printAllUserNames :: Pool -> IO ()
printAllUserNames pool =
  withTransaction pool $ \tx ->
    runEffect $
      selectPipe (txConn tx) listAllUsers () 500
      >-> P.map userName
      >-> P.stdoutLn

Two streaming strategies

  • selectPipe conn stmt params batchSize — cursor-based. Must run inside a transaction.
  • foldPipe conn stmt params — single-shot extended-protocol query. No transaction required.

Both functions accumulate one result set at a time before yielding, so memory usage scales with the active batch (cursor) or the full result set (foldPipe). For truly incremental memory use, drive Valiant.withCursor / Valiant.fetchBatch directly.

See the valiant tutorial for Statement definitions and the valiant prepare workflow.