summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikitaVolkov <>2017-03-20 22:32:00 (GMT)
committerhdiff <hdiff@hdiff.luite.com>2017-03-20 22:32:00 (GMT)
commit39b20f430055f5326a2a46ff9e80943cebac9ed0 (patch)
tree9edd6713c445646c42b673f1f71a612329d555cf
parentb5a74d914282c8969c4abab8d2ef9772b40234c1 (diff)
version 0.19.180.19.18
-rw-r--r--benchmark/Main/Prelude.hs12
-rw-r--r--hasql.cabal11
-rw-r--r--library/Hasql/Decoders.hs93
-rw-r--r--library/Hasql/Encoders.hs93
-rw-r--r--library/Hasql/Private/Decoders/Array.hs19
-rw-r--r--library/Hasql/Private/Decoders/Composite.hs17
-rw-r--r--library/Hasql/Private/Decoders/Row.hs4
-rw-r--r--library/Hasql/Private/Decoders/Value.hs11
-rw-r--r--library/Hasql/Private/Encoders/Array.hs29
-rw-r--r--library/Hasql/Private/Encoders/Params.hs28
-rw-r--r--library/Hasql/Private/Encoders/Value.hs9
-rw-r--r--library/Hasql/Private/Prelude.hs12
-rw-r--r--library/Hasql/Private/PreparedStatementRegistry.hs4
13 files changed, 153 insertions, 189 deletions
diff --git a/benchmark/Main/Prelude.hs b/benchmark/Main/Prelude.hs
index a293bc6..16e2dd1 100644
--- a/benchmark/Main/Prelude.hs
+++ b/benchmark/Main/Prelude.hs
@@ -52,18 +52,6 @@ import Data.Text as Exports (Text)
-------------------------
import Data.ByteString as Exports (ByteString)
--- scientific
--------------------------
-import Data.Scientific as Exports (Scientific)
-
--- uuid
--------------------------
-import Data.UUID as Exports (UUID)
-
--- time
--------------------------
-import Data.Time as Exports
-
-- vector
-------------------------
import Data.Vector as Exports (Vector)
diff --git a/hasql.cabal b/hasql.cabal
index 648fd55..5384cd6 100644
--- a/hasql.cabal
+++ b/hasql.cabal
@@ -1,7 +1,7 @@
name:
hasql
version:
- 0.19.17.1
+ 0.19.18
category:
Hasql, Database, PostgreSQL
synopsis:
@@ -74,22 +74,17 @@ library
-- parsing:
attoparsec >= 0.10 && < 0.14,
-- database:
- postgresql-binary >= 0.10 && < 0.11,
+ postgresql-binary >= 0.12.1 && < 0.13,
postgresql-libpq == 0.9.*,
-- builders:
- bytestring-tree-builder >= 0.2.5 && < 0.3,
+ bytestring-strict-builder >= 0.4 && < 0.5,
-- data:
dlist >= 0.7 && < 0.9,
- aeson >= 0.7 && < 2,
- uuid == 1.3.*,
vector >= 0.10 && < 0.13,
- time >= 1.4 && < 2,
hashtables >= 1.1 && < 2,
- scientific >= 0.2 && < 0.4,
text >= 1 && < 2,
bytestring >= 0.10 && < 0.11,
hashable >= 1.2 && < 1.3,
- network-ip >= 0.2 && < 0.4,
-- control:
semigroups >= 0.18 && < 0.20,
data-default-class >= 0.0.1 && < 0.2,
diff --git a/library/Hasql/Decoders.hs b/library/Hasql/Decoders.hs
index d6e3d9d..48294ea 100644
--- a/library/Hasql/Decoders.hs
+++ b/library/Hasql/Decoders.hs
@@ -60,9 +60,9 @@ module Hasql.Decoders
where
import Hasql.Private.Prelude hiding (maybe, bool)
-import qualified Data.Aeson as Aeson
import qualified Data.Vector as Vector
-import qualified PostgreSQL.Binary.Decoder as Decoder
+import qualified PostgreSQL.Binary.Decoding as A
+import qualified PostgreSQL.Binary.Data as B
import qualified Hasql.Private.Decoders.Results as Results
import qualified Hasql.Private.Decoders.Result as Result
import qualified Hasql.Private.Decoders.Row as Row
@@ -70,7 +70,6 @@ import qualified Hasql.Private.Decoders.Value as Value
import qualified Hasql.Private.Decoders.Array as Array
import qualified Hasql.Private.Decoders.Composite as Composite
import qualified Hasql.Private.Prelude as Prelude
-import qualified Network.IP.Addr as IPAddr
-- * Result
-------------------------
@@ -273,7 +272,7 @@ newtype Value a =
{-# INLINABLE bool #-}
bool :: Value Bool
bool =
- Value (Value.decoder (const Decoder.bool))
+ Value (Value.decoder (const A.bool))
-- |
-- Decoder of the @INT2@ values.
@@ -281,7 +280,7 @@ bool =
{-# INLINABLE int2 #-}
int2 :: Value Int16
int2 =
- Value (Value.decoder (const Decoder.int))
+ Value (Value.decoder (const A.int))
-- |
-- Decoder of the @INT4@ values.
@@ -289,7 +288,7 @@ int2 =
{-# INLINABLE int4 #-}
int4 :: Value Int32
int4 =
- Value (Value.decoder (const Decoder.int))
+ Value (Value.decoder (const A.int))
-- |
-- Decoder of the @INT8@ values.
@@ -298,7 +297,7 @@ int4 =
int8 :: Value Int64
int8 =
{-# SCC "int8" #-}
- Value (Value.decoder (const ({-# SCC "int8.int" #-} Decoder.int)))
+ Value (Value.decoder (const ({-# SCC "int8.int" #-} A.int)))
-- |
-- Decoder of the @FLOAT4@ values.
@@ -306,7 +305,7 @@ int8 =
{-# INLINABLE float4 #-}
float4 :: Value Float
float4 =
- Value (Value.decoder (const Decoder.float4))
+ Value (Value.decoder (const A.float4))
-- |
-- Decoder of the @FLOAT8@ values.
@@ -314,15 +313,15 @@ float4 =
{-# INLINABLE float8 #-}
float8 :: Value Double
float8 =
- Value (Value.decoder (const Decoder.float8))
+ Value (Value.decoder (const A.float8))
-- |
-- Decoder of the @NUMERIC@ values.
--
{-# INLINABLE numeric #-}
-numeric :: Value Scientific
+numeric :: Value B.Scientific
numeric =
- Value (Value.decoder (const Decoder.numeric))
+ Value (Value.decoder (const A.numeric))
-- |
-- Decoder of the @CHAR@ values.
@@ -330,7 +329,7 @@ numeric =
{-# INLINABLE char #-}
char :: Value Char
char =
- Value (Value.decoder (const Decoder.char))
+ Value (Value.decoder (const A.char))
-- |
-- Decoder of the @TEXT@ values.
@@ -338,7 +337,7 @@ char =
{-# INLINABLE text #-}
text :: Value Text
text =
- Value (Value.decoder (const Decoder.text_strict))
+ Value (Value.decoder (const A.text_strict))
-- |
-- Decoder of the @BYTEA@ values.
@@ -346,23 +345,23 @@ text =
{-# INLINABLE bytea #-}
bytea :: Value ByteString
bytea =
- Value (Value.decoder (const Decoder.bytea_strict))
+ Value (Value.decoder (const A.bytea_strict))
-- |
-- Decoder of the @DATE@ values.
--
{-# INLINABLE date #-}
-date :: Value Day
+date :: Value B.Day
date =
- Value (Value.decoder (const Decoder.date))
+ Value (Value.decoder (const A.date))
-- |
-- Decoder of the @TIMESTAMP@ values.
--
{-# INLINABLE timestamp #-}
-timestamp :: Value LocalTime
+timestamp :: Value B.LocalTime
timestamp =
- Value (Value.decoder (Prelude.bool Decoder.timestamp_float Decoder.timestamp_int))
+ Value (Value.decoder (Prelude.bool A.timestamp_float A.timestamp_int))
-- |
-- Decoder of the @TIMESTAMPTZ@ values.
@@ -375,17 +374,17 @@ timestamp =
-- However this library bypasses the silent conversions
-- and communicates with Postgres using the UTC values directly.
{-# INLINABLE timestamptz #-}
-timestamptz :: Value UTCTime
+timestamptz :: Value B.UTCTime
timestamptz =
- Value (Value.decoder (Prelude.bool Decoder.timestamptz_float Decoder.timestamptz_int))
+ Value (Value.decoder (Prelude.bool A.timestamptz_float A.timestamptz_int))
-- |
-- Decoder of the @TIME@ values.
--
{-# INLINABLE time #-}
-time :: Value TimeOfDay
+time :: Value B.TimeOfDay
time =
- Value (Value.decoder (Prelude.bool Decoder.time_float Decoder.time_int))
+ Value (Value.decoder (Prelude.bool A.time_float A.time_int))
-- |
-- Decoder of the @TIMETZ@ values.
@@ -396,41 +395,41 @@ time =
-- that fits the task, so we use a pair of 'TimeOfDay' and 'TimeZone'
-- to represent a value on the Haskell's side.
{-# INLINABLE timetz #-}
-timetz :: Value (TimeOfDay, TimeZone)
+timetz :: Value (B.TimeOfDay, B.TimeZone)
timetz =
- Value (Value.decoder (Prelude.bool Decoder.timetz_float Decoder.timetz_int))
+ Value (Value.decoder (Prelude.bool A.timetz_float A.timetz_int))
-- |
-- Decoder of the @INTERVAL@ values.
--
{-# INLINABLE interval #-}
-interval :: Value DiffTime
+interval :: Value B.DiffTime
interval =
- Value (Value.decoder (Prelude.bool Decoder.interval_float Decoder.interval_int))
+ Value (Value.decoder (Prelude.bool A.interval_float A.interval_int))
-- |
-- Decoder of the @UUID@ values.
--
{-# INLINABLE uuid #-}
-uuid :: Value UUID
+uuid :: Value B.UUID
uuid =
- Value (Value.decoder (const Decoder.uuid))
+ Value (Value.decoder (const A.uuid))
-- |
-- Decoder of the @INET@ values.
--
{-# INLINABLE inet #-}
-inet :: Value (IPAddr.NetAddr IPAddr.IP)
+inet :: Value (B.NetAddr B.IP)
inet =
- Value (Value.decoder (const Decoder.inet))
+ Value (Value.decoder (const A.inet))
-- |
-- Decoder of the @JSON@ values into a JSON AST.
--
{-# INLINABLE json #-}
-json :: Value Aeson.Value
+json :: Value B.Value
json =
- Value (Value.decoder (const Decoder.json_ast))
+ Value (Value.decoder (const A.json_ast))
-- |
-- Decoder of the @JSON@ values into a raw JSON 'ByteString'.
@@ -438,15 +437,15 @@ json =
{-# INLINABLE jsonBytes #-}
jsonBytes :: (ByteString -> Either Text a) -> Value a
jsonBytes fn =
- Value (Value.decoder (const (Decoder.json_bytes fn)))
+ Value (Value.decoder (const (A.json_bytes fn)))
-- |
-- Decoder of the @JSONB@ values into a JSON AST.
--
{-# INLINABLE jsonb #-}
-jsonb :: Value Aeson.Value
+jsonb :: Value B.Value
jsonb =
- Value (Value.decoder (const Decoder.jsonb_ast))
+ Value (Value.decoder (const A.jsonb_ast))
-- |
-- Decoder of the @JSONB@ values into a raw JSON 'ByteString'.
@@ -454,7 +453,7 @@ jsonb =
{-# INLINABLE jsonbBytes #-}
jsonbBytes :: (ByteString -> Either Text a) -> Value a
jsonbBytes fn =
- Value (Value.decoder (const (Decoder.jsonb_bytes fn)))
+ Value (Value.decoder (const (A.jsonb_bytes fn)))
-- |
-- Lifts a custom value decoder function to a 'Value' decoder.
@@ -498,14 +497,14 @@ composite (Composite imp) =
{-# INLINABLE hstore #-}
hstore :: (forall m. Monad m => Int -> m (Text, Maybe Text) -> m a) -> Value a
hstore replicateM =
- Value (Value.decoder (const (Decoder.hstore replicateM Decoder.text_strict Decoder.text_strict)))
+ Value (Value.decoder (const (A.hstore replicateM A.text_strict A.text_strict)))
-- |
-- Given a partial mapping from text to value,
-- produces a decoder of that value.
enum :: (Text -> Maybe a) -> Value a
enum mapping =
- Value (Value.decoder (const (Decoder.enum mapping)))
+ Value (Value.decoder (const (A.enum mapping)))
-- ** Instances
@@ -555,7 +554,7 @@ instance Default (Value Double) where
-- |
-- Maps to 'numeric'.
-instance Default (Value Scientific) where
+instance Default (Value B.Scientific) where
{-# INLINE def #-}
def =
numeric
@@ -583,56 +582,56 @@ instance Default (Value ByteString) where
-- |
-- Maps to 'date'.
-instance Default (Value Day) where
+instance Default (Value B.Day) where
{-# INLINE def #-}
def =
date
-- |
-- Maps to 'timestamp'.
-instance Default (Value LocalTime) where
+instance Default (Value B.LocalTime) where
{-# INLINE def #-}
def =
timestamp
-- |
-- Maps to 'timestamptz'.
-instance Default (Value UTCTime) where
+instance Default (Value B.UTCTime) where
{-# INLINE def #-}
def =
timestamptz
-- |
-- Maps to 'time'.
-instance Default (Value TimeOfDay) where
+instance Default (Value B.TimeOfDay) where
{-# INLINE def #-}
def =
time
-- |
-- Maps to 'timetz'.
-instance Default (Value (TimeOfDay, TimeZone)) where
+instance Default (Value (B.TimeOfDay, B.TimeZone)) where
{-# INLINE def #-}
def =
timetz
-- |
-- Maps to 'interval'.
-instance Default (Value DiffTime) where
+instance Default (Value B.DiffTime) where
{-# INLINE def #-}
def =
interval
-- |
-- Maps to 'uuid'.
-instance Default (Value UUID) where
+instance Default (Value B.UUID) where
{-# INLINE def #-}
def =
uuid
-- |
-- Maps to 'json'.
-instance Default (Value Aeson.Value) where
+instance Default (Value B.Value) where
{-# INLINE def #-}
def =
json
diff --git a/library/Hasql/Encoders.hs b/library/Hasql/Encoders.hs
index 31222d2..b9dc6c9 100644
--- a/library/Hasql/Encoders.hs
+++ b/library/Hasql/Encoders.hs
@@ -43,14 +43,13 @@ module Hasql.Encoders
where
import Hasql.Private.Prelude hiding (bool)
-import qualified PostgreSQL.Binary.Encoder as Encoder
-import qualified Data.Aeson as Aeson
+import qualified PostgreSQL.Binary.Encoding as A
+import qualified PostgreSQL.Binary.Data as B
import qualified Hasql.Private.Encoders.Params as Params
import qualified Hasql.Private.Encoders.Value as Value
import qualified Hasql.Private.Encoders.Array as Array
import qualified Hasql.Private.PTI as PTI
import qualified Hasql.Private.Prelude as Prelude
-import qualified Network.IP.Addr as IPAddr
-- * Parameters Product Encoder
-------------------------
@@ -186,49 +185,49 @@ newtype Value a =
{-# INLINABLE bool #-}
bool :: Value Bool
bool =
- Value (Value.unsafePTI PTI.bool (const Encoder.bool))
+ Value (Value.unsafePTI PTI.bool (const A.bool))
-- |
-- Encoder of @INT2@ values.
{-# INLINABLE int2 #-}
int2 :: Value Int16
int2 =
- Value (Value.unsafePTI PTI.int2 (const Encoder.int2_int16))
+ Value (Value.unsafePTI PTI.int2 (const A.int2_int16))
-- |
-- Encoder of @INT4@ values.
{-# INLINABLE int4 #-}
int4 :: Value Int32
int4 =
- Value (Value.unsafePTI PTI.int4 (const Encoder.int4_int32))
+ Value (Value.unsafePTI PTI.int4 (const A.int4_int32))
-- |
-- Encoder of @INT8@ values.
{-# INLINABLE int8 #-}
int8 :: Value Int64
int8 =
- Value (Value.unsafePTI PTI.int8 (const Encoder.int8_int64))
+ Value (Value.unsafePTI PTI.int8 (const A.int8_int64))
-- |
-- Encoder of @FLOAT4@ values.
{-# INLINABLE float4 #-}
float4 :: Value Float
float4 =
- Value (Value.unsafePTI PTI.float4 (const Encoder.float4))
+ Value (Value.unsafePTI PTI.float4 (const A.float4))
-- |
-- Encoder of @FLOAT8@ values.
{-# INLINABLE float8 #-}
float8 :: Value Double
float8 =
- Value (Value.unsafePTI PTI.float8 (const Encoder.float8))
+ Value (Value.unsafePTI PTI.float8 (const A.float8))
-- |
-- Encoder of @NUMERIC@ values.
{-# INLINABLE numeric #-}
-numeric :: Value Scientific
+numeric :: Value B.Scientific
numeric =
- Value (Value.unsafePTI PTI.numeric (const Encoder.numeric))
+ Value (Value.unsafePTI PTI.numeric (const A.numeric))
-- |
-- Encoder of @CHAR@ values.
@@ -237,105 +236,105 @@ numeric =
{-# INLINABLE char #-}
char :: Value Char
char =
- Value (Value.unsafePTI PTI.text (const Encoder.char))
+ Value (Value.unsafePTI PTI.text (const A.char_utf8))
-- |
-- Encoder of @TEXT@ values.
{-# INLINABLE text #-}
text :: Value Text
text =
- Value (Value.unsafePTI PTI.text (const Encoder.text_strict))
+ Value (Value.unsafePTI PTI.text (const A.text_strict))
-- |
-- Encoder of @BYTEA@ values.
{-# INLINABLE bytea #-}
bytea :: Value ByteString
bytea =
- Value (Value.unsafePTI PTI.bytea (const Encoder.bytea_strict))
+ Value (Value.unsafePTI PTI.bytea (const A.bytea_strict))
-- |
-- Encoder of @DATE@ values.
{-# INLINABLE date #-}
-date :: Value Day
+date :: Value B.Day
date =
- Value (Value.unsafePTI PTI.date (const Encoder.date))
+ Value (Value.unsafePTI PTI.date (const A.date))
-- |
-- Encoder of @TIMESTAMP@ values.
{-# INLINABLE timestamp #-}
-timestamp :: Value LocalTime
+timestamp :: Value B.LocalTime
timestamp =
- Value (Value.unsafePTI PTI.timestamp (Prelude.bool Encoder.timestamp_float Encoder.timestamp_int))
+ Value (Value.unsafePTI PTI.timestamp (Prelude.bool A.timestamp_float A.timestamp_int))
-- |
-- Encoder of @TIMESTAMPTZ@ values.
{-# INLINABLE timestamptz #-}
-timestamptz :: Value UTCTime
+timestamptz :: Value B.UTCTime
timestamptz =
- Value (Value.unsafePTI PTI.timestamptz (Prelude.bool Encoder.timestamptz_float Encoder.timestamptz_int))
+ Value (Value.unsafePTI PTI.timestamptz (Prelude.bool A.timestamptz_float A.timestamptz_int))
-- |
-- Encoder of @TIME@ values.
{-# INLINABLE time #-}
-time :: Value TimeOfDay
+time :: Value B.TimeOfDay
time =
- Value (Value.unsafePTI PTI.time (Prelude.bool Encoder.time_float Encoder.time_int))
+ Value (Value.unsafePTI PTI.time (Prelude.bool A.time_float A.time_int))
-- |
-- Encoder of @TIMETZ@ values.
{-# INLINABLE timetz #-}
-timetz :: Value (TimeOfDay, TimeZone)
+timetz :: Value (B.TimeOfDay, B.TimeZone)
timetz =
- Value (Value.unsafePTI PTI.timetz (Prelude.bool Encoder.timetz_float Encoder.timetz_int))
+ Value (Value.unsafePTI PTI.timetz (Prelude.bool A.timetz_float A.timetz_int))
-- |
-- Encoder of @INTERVAL@ values.
{-# INLINABLE interval #-}
-interval :: Value DiffTime
+interval :: Value B.DiffTime
interval =
- Value (Value.unsafePTI PTI.interval (Prelude.bool Encoder.interval_float Encoder.interval_int))
+ Value (Value.unsafePTI PTI.interval (Prelude.bool A.interval_float A.interval_int))
-- |
-- Encoder of @UUID@ values.
{-# INLINABLE uuid #-}
-uuid :: Value UUID
+uuid :: Value B.UUID
uuid =
- Value (Value.unsafePTI PTI.uuid (const Encoder.uuid))
+ Value (Value.unsafePTI PTI.uuid (const A.uuid))
-- |
-- Encoder of @INET@ values.
{-# INLINABLE inet #-}
-inet :: Value (IPAddr.NetAddr IPAddr.IP)
+inet :: Value (B.NetAddr B.IP)
inet =
- Value (Value.unsafePTI PTI.inet (const Encoder.inet))
+ Value (Value.unsafePTI PTI.inet (const A.inet))
-- |
-- Encoder of @JSON@ values from JSON AST.
{-# INLINABLE json #-}
-json :: Value Aeson.Value
+json :: Value B.Value
json =
- Value (Value.unsafePTI PTI.json (const Encoder.json_ast))
+ Value (Value.unsafePTI PTI.json (const A.json_ast))
-- |
-- Encoder of @JSON@ values from raw JSON.
{-# INLINABLE jsonBytes #-}
jsonBytes :: Value ByteString
jsonBytes =
- Value (Value.unsafePTI PTI.json (const Encoder.json_bytes))
+ Value (Value.unsafePTI PTI.json (const A.json_bytes))
-- |
-- Encoder of @JSONB@ values from JSON AST.
{-# INLINABLE jsonb #-}
-jsonb :: Value Aeson.Value
+jsonb :: Value B.Value
jsonb =
- Value (Value.unsafePTI PTI.jsonb (const Encoder.jsonb_ast))
+ Value (Value.unsafePTI PTI.jsonb (const A.jsonb_ast))
-- |
-- Encoder of @JSONB@ values from raw JSON.
{-# INLINABLE jsonbBytes #-}
jsonbBytes :: Value ByteString
jsonbBytes =
- Value (Value.unsafePTI PTI.jsonb (const Encoder.jsonb_bytes))
+ Value (Value.unsafePTI PTI.jsonb (const A.jsonb_bytes))
-- |
-- Unlifts the 'Array' encoder to the plain 'Value' encoder.
@@ -352,7 +351,7 @@ array (Array imp) =
{-# INLINABLE enum #-}
enum :: (a -> Text) -> Value a
enum mapping =
- Value (Value.unsafePTI PTI.text (const (Encoder.enum mapping)))
+ Value (Value.unsafePTI PTI.text (const (A.text_strict . mapping)))
-- |
-- Identifies the value with the PostgreSQL's \"unknown\" type,
@@ -369,7 +368,7 @@ enum mapping =
{-# INLINABLE unknown #-}
unknown :: Value ByteString
unknown =
- Value (Value.unsafePTI PTI.unknown (const Encoder.bytea_strict))
+ Value (Value.unsafePTI PTI.unknown (const A.bytea_strict))
-- ** Instances
@@ -412,7 +411,7 @@ instance Default (Value Double) where
float8
-- | Maps to 'numeric'.
-instance Default (Value Scientific) where
+instance Default (Value B.Scientific) where
{-# INLINE def #-}
def =
numeric
@@ -436,49 +435,49 @@ instance Default (Value ByteString) where
bytea
-- | Maps to 'date'.
-instance Default (Value Day) where
+instance Default (Value B.Day) where
{-# INLINE def #-}
def =
date
-- | Maps to 'timestamp'.
-instance Default (Value LocalTime) where
+instance Default (Value B.LocalTime) where
{-# INLINE def #-}
def =
timestamp
-- | Maps to 'timestamptz'.
-instance Default (Value UTCTime) where
+instance Default (Value B.UTCTime) where
{-# INLINE def #-}
def =
timestamptz
-- | Maps to 'time'.
-instance Default (Value TimeOfDay) where
+instance Default (Value B.TimeOfDay) where
{-# INLINE def #-}
def =
time
-- | Maps to 'timetz'.
-instance Default (Value (TimeOfDay, TimeZone)) where
+instance Default (Value (B.TimeOfDay, B.TimeZone)) where
{-# INLINE def #-}
def =
timetz
-- | Maps to 'interval'.
-instance Default (Value DiffTime) where
+instance Default (Value B.DiffTime) where
{-# INLINE def #-}
def =
interval
-- | Maps to 'uuid'.
-instance Default (Value UUID) where
+instance Default (Value B.UUID) where
{-# INLINE def #-}
def =
uuid
-- | Maps to 'json'.
-instance Default (Value Aeson.Value) where
+instance Default (Value B.Value) where
{-# INLINE def #-}
def =
json
diff --git a/library/Hasql/Private/Decoders/Array.hs b/library/Hasql/Private/Decoders/Array.hs
index 6c13eb8..01c5b32 100644
--- a/library/Hasql/Private/Decoders/Array.hs
+++ b/library/Hasql/Private/Decoders/Array.hs
@@ -1,31 +1,30 @@
module Hasql.Private.Decoders.Array where
import Hasql.Private.Prelude
-import qualified Database.PostgreSQL.LibPQ as LibPQ
-import qualified PostgreSQL.Binary.Decoder as Decoder
+import qualified PostgreSQL.Binary.Decoding as A
newtype Array a =
- Array (ReaderT Bool Decoder.ArrayDecoder a)
+ Array (ReaderT Bool A.Array a)
deriving (Functor)
{-# INLINE run #-}
-run :: Array a -> Bool -> Decoder.Decoder a
+run :: Array a -> Bool -> A.Value a
run (Array imp) env =
- Decoder.array (runReaderT imp env)
+ A.array (runReaderT imp env)
{-# INLINE dimension #-}
dimension :: (forall m. Monad m => Int -> m a -> m b) -> Array a -> Array b
dimension replicateM (Array imp) =
- Array $ ReaderT $ \env -> Decoder.arrayDimension replicateM (runReaderT imp env)
+ Array $ ReaderT $ \env -> A.dimensionArray replicateM (runReaderT imp env)
{-# INLINE value #-}
-value :: (Bool -> Decoder.Decoder a) -> Array (Maybe a)
+value :: (Bool -> A.Value a) -> Array (Maybe a)
value decoder' =
- Array $ ReaderT $ Decoder.arrayValue . decoder'
+ Array $ ReaderT $ A.nullableValueArray . decoder'
{-# INLINE nonNullValue #-}
-nonNullValue :: (Bool -> Decoder.Decoder a) -> Array a
+nonNullValue :: (Bool -> A.Value a) -> Array a
nonNullValue decoder' =
- Array $ ReaderT $ Decoder.arrayNonNullValue . decoder'
+ Array $ ReaderT $ A.valueArray . decoder'
diff --git a/library/Hasql/Private/Decoders/Composite.hs b/library/Hasql/Private/Decoders/Composite.hs
index d2cf7b9..3bebc90 100644
--- a/library/Hasql/Private/Decoders/Composite.hs
+++ b/library/Hasql/Private/Decoders/Composite.hs
@@ -1,26 +1,25 @@
module Hasql.Private.Decoders.Composite where
import Hasql.Private.Prelude
-import qualified Database.PostgreSQL.LibPQ as LibPQ
-import qualified PostgreSQL.Binary.Decoder as Decoder
+import qualified PostgreSQL.Binary.Decoding as A
newtype Composite a =
- Composite (ReaderT Bool Decoder.CompositeDecoder a)
+ Composite (ReaderT Bool A.Composite a)
deriving (Functor, Applicative, Monad)
{-# INLINE run #-}
-run :: Composite a -> Bool -> Decoder.Decoder a
+run :: Composite a -> Bool -> A.Value a
run (Composite imp) env =
- Decoder.composite (runReaderT imp env)
+ A.composite (runReaderT imp env)
{-# INLINE value #-}
-value :: (Bool -> Decoder.Decoder a) -> Composite (Maybe a)
+value :: (Bool -> A.Value a) -> Composite (Maybe a)
value decoder' =
- Composite $ ReaderT $ Decoder.compositeValue . decoder'
+ Composite $ ReaderT $ A.nullableValueComposite . decoder'
{-# INLINE nonNullValue #-}
-nonNullValue :: (Bool -> Decoder.Decoder a) -> Composite a
+nonNullValue :: (Bool -> A.Value a) -> Composite a
nonNullValue decoder' =
- Composite $ ReaderT $ Decoder.compositeNonNullValue . decoder'
+ Composite $ ReaderT $ A.valueComposite . decoder'
diff --git a/library/Hasql/Private/Decoders/Row.hs b/library/Hasql/Private/Decoders/Row.hs
index 2c5e203..e88997b 100644
--- a/library/Hasql/Private/Decoders/Row.hs
+++ b/library/Hasql/Private/Decoders/Row.hs
@@ -2,7 +2,7 @@ module Hasql.Private.Decoders.Row where
import Hasql.Private.Prelude
import qualified Database.PostgreSQL.LibPQ as LibPQ
-import qualified PostgreSQL.Binary.Decoder as Decoder
+import qualified PostgreSQL.Binary.Decoding as A
import qualified Hasql.Private.Decoders.Value as Value
@@ -53,7 +53,7 @@ value valueDec =
Right Nothing
Just value ->
fmap Just $ mapLeft ValueError $
- {-# SCC "decode" #-} Decoder.run (Value.run valueDec integerDatetimes) value
+ {-# SCC "decode" #-} A.valueParser (Value.run valueDec integerDatetimes) value
else pure (Left EndOfInput)
-- |
diff --git a/library/Hasql/Private/Decoders/Value.hs b/library/Hasql/Private/Decoders/Value.hs
index 4583110..351d080 100644
--- a/library/Hasql/Private/Decoders/Value.hs
+++ b/library/Hasql/Private/Decoders/Value.hs
@@ -1,22 +1,21 @@
module Hasql.Private.Decoders.Value where
import Hasql.Private.Prelude
-import qualified Database.PostgreSQL.LibPQ as LibPQ
-import qualified PostgreSQL.Binary.Decoder as Decoder
+import qualified PostgreSQL.Binary.Decoding as A
newtype Value a =
- Value (ReaderT Bool Decoder.Decoder a)
+ Value (ReaderT Bool A.Value a)
deriving (Functor)
{-# INLINE run #-}
-run :: Value a -> Bool -> Decoder.Decoder a
+run :: Value a -> Bool -> A.Value a
run (Value imp) integerDatetimes =
runReaderT imp integerDatetimes
{-# INLINE decoder #-}
-decoder :: (Bool -> Decoder.Decoder a) -> Value a
+decoder :: (Bool -> A.Value a) -> Value a
decoder =
{-# SCC "decoder" #-}
Value . ReaderT
@@ -24,5 +23,5 @@ decoder =
{-# INLINE decoderFn #-}
decoderFn :: (Bool -> ByteString -> Either Text a) -> Value a
decoderFn fn =
- Value $ ReaderT $ \integerDatetimes -> Decoder.fn $ fn integerDatetimes
+ Value $ ReaderT $ \integerDatetimes -> A.fn $ fn integerDatetimes
diff --git a/library/Hasql/Private/Encoders/Array.hs b/library/Hasql/Private/Encoders/Array.hs
index 86fa0ab..ddc9efd 100644
--- a/library/Hasql/Private/Encoders/Array.hs
+++ b/library/Hasql/Private/Encoders/Array.hs
@@ -1,31 +1,30 @@
module Hasql.Private.Encoders.Array where
import Hasql.Private.Prelude
-import qualified Database.PostgreSQL.LibPQ as LibPQ
-import qualified PostgreSQL.Binary.Encoder as Encoder
-import qualified Hasql.Private.PTI as PTI
+import qualified PostgreSQL.Binary.Encoding as A
+import qualified Hasql.Private.PTI as B
data Array a =
- Array PTI.OID PTI.OID (Bool -> Encoder.ArrayEncoder a)
+ Array B.OID B.OID (Bool -> a -> A.Array)
{-# INLINE run #-}
-run :: Array a -> (PTI.OID, Bool -> Encoder.Encoder a)
-run (Array valueOID arrayOID encoder') =
- (arrayOID, \env -> Encoder.array (PTI.oidWord32 valueOID) (encoder' env))
+run :: Array a -> (B.OID, Bool -> a -> A.Encoding)
+run (Array valueOID arrayOID encoder) =
+ (arrayOID, \env input -> A.array (B.oidWord32 valueOID) (encoder env input))
{-# INLINE value #-}
-value :: PTI.OID -> PTI.OID -> (Bool -> Encoder.Encoder a) -> Array a
-value valueOID arrayOID encoder' =
- Array valueOID arrayOID (Encoder.arrayValue . encoder')
+value :: B.OID -> B.OID -> (Bool -> a -> A.Encoding) -> Array a
+value valueOID arrayOID encoder =
+ Array valueOID arrayOID (\params -> A.encodingArray . encoder params)
{-# INLINE nullableValue #-}
-nullableValue :: PTI.OID -> PTI.OID -> (Bool -> Encoder.Encoder a) -> Array (Maybe a)
-nullableValue valueOID arrayOID encoder' =
- Array valueOID arrayOID (Encoder.arrayNullableValue . encoder')
+nullableValue :: B.OID -> B.OID -> (Bool -> a -> A.Encoding) -> Array (Maybe a)
+nullableValue valueOID arrayOID encoder =
+ Array valueOID arrayOID (\params -> maybe A.nullArray (A.encodingArray . encoder params))
{-# INLINE dimension #-}
dimension :: (forall a. (a -> b -> a) -> a -> c -> a) -> Array b -> Array c
-dimension foldl (Array valueOID arrayOID encoder') =
- Array valueOID arrayOID (Encoder.arrayDimension foldl . encoder')
+dimension fold (Array valueOID arrayOID encoder) =
+ Array valueOID arrayOID (\params -> A.dimensionArray fold (encoder params))
diff --git a/library/Hasql/Private/Encoders/Params.hs b/library/Hasql/Private/Encoders/Params.hs
index f2f5d48..121c907 100644
--- a/library/Hasql/Private/Encoders/Params.hs
+++ b/library/Hasql/Private/Encoders/Params.hs
@@ -1,26 +1,26 @@
module Hasql.Private.Encoders.Params where
import Hasql.Private.Prelude
-import qualified Database.PostgreSQL.LibPQ as LibPQ
-import qualified PostgreSQL.Binary.Encoder as Encoder
-import qualified Hasql.Private.Encoders.Value as Value
-import qualified Hasql.Private.PTI as PTI
+import qualified Database.PostgreSQL.LibPQ as A
+import qualified PostgreSQL.Binary.Encoding as B
+import qualified Hasql.Private.Encoders.Value as C
+import qualified Hasql.Private.PTI as D
-- |
-- Encoder of some representation of a parameters product.
newtype Params a =
- Params (Op (DList (LibPQ.Oid, Bool -> Maybe ByteString)) a)
+ Params (Op (DList (A.Oid, Bool -> Maybe ByteString)) a)
deriving (Contravariant, Divisible, Decidable, Monoid)
instance Semigroup (Params a)
-run :: Params a -> a -> DList (LibPQ.Oid, Bool -> Maybe ByteString)
+run :: Params a -> a -> DList (A.Oid, Bool -> Maybe ByteString)
run (Params (Op op)) params =
{-# SCC "run" #-}
op params
-run' :: Params a -> a -> Bool -> ([LibPQ.Oid], [Maybe (ByteString, LibPQ.Format)])
+run' :: Params a -> a -> Bool -> ([A.Oid], [Maybe (ByteString, A.Format)])
run' (Params (Op op)) params integerDatetimes =
{-# SCC "run'" #-}
foldr step ([], []) (op params)
@@ -28,9 +28,9 @@ run' (Params (Op op)) params integerDatetimes =
step (oid, bytesGetter) ~(oidList, bytesAndFormatList) =
(,)
(oid : oidList)
- (fmap (\bytes -> (bytes, LibPQ.Binary)) (bytesGetter integerDatetimes) : bytesAndFormatList)
+ (fmap (\bytes -> (bytes, A.Binary)) (bytesGetter integerDatetimes) : bytesAndFormatList)
-run'' :: Params a -> a -> Bool -> [Maybe (LibPQ.Oid, ByteString, LibPQ.Format)]
+run'' :: Params a -> a -> Bool -> [Maybe (A.Oid, ByteString, A.Format)]
run'' (Params (Op op)) params integerDatetimes =
{-# SCC "run''" #-}
foldr step [] (op params)
@@ -39,13 +39,13 @@ run'' (Params (Op op)) params integerDatetimes =
mapping a : b
where
mapping (oid, bytesGetter) =
- (,,) <$> pure oid <*> bytesGetter integerDatetimes <*> pure LibPQ.Binary
+ (,,) <$> pure oid <*> bytesGetter integerDatetimes <*> pure A.Binary
-value :: Value.Value a -> Params a
+value :: C.Value a -> Params a
value =
contramap Just . nullableValue
-nullableValue :: Value.Value a -> Params (Maybe a)
-nullableValue (Value.Value valueOID arrayOID encoder') =
+nullableValue :: C.Value a -> Params (Maybe a)
+nullableValue (C.Value valueOID arrayOID encoder) =
Params $ Op $ \input ->
- pure (PTI.oidPQ valueOID, \env -> fmap (Encoder.run (encoder' env)) input)
+ pure (D.oidPQ valueOID, \env -> fmap (B.encodingBytes . encoder env) input)
diff --git a/library/Hasql/Private/Encoders/Value.hs b/library/Hasql/Private/Encoders/Value.hs
index fbcce62..e255a27 100644
--- a/library/Hasql/Private/Encoders/Value.hs
+++ b/library/Hasql/Private/Encoders/Value.hs
@@ -1,13 +1,12 @@
module Hasql.Private.Encoders.Value where
import Hasql.Private.Prelude
-import qualified Database.PostgreSQL.LibPQ as LibPQ
-import qualified PostgreSQL.Binary.Encoder as Encoder
+import qualified PostgreSQL.Binary.Encoding as B
import qualified Hasql.Private.PTI as PTI
data Value a =
- Value PTI.OID PTI.OID (Bool -> Encoder.Encoder a)
+ Value PTI.OID PTI.OID (Bool -> a -> B.Encoding)
instance Contravariant Value where
{-# INLINE contramap #-}
@@ -15,12 +14,12 @@ instance Contravariant Value where
Value valueOID arrayOID (\integerDatetimes input -> encoder integerDatetimes (f input))
{-# INLINE run #-}
-run :: Value a -> (PTI.OID, PTI.OID, Bool -> Encoder.Encoder a)
+run :: Value a -> (PTI.OID, PTI.OID, Bool -> a -> B.Encoding)
run (Value valueOID arrayOID encoder') =
(valueOID, arrayOID, encoder')
{-# INLINE unsafePTI #-}
-unsafePTI :: PTI.PTI -> (Bool -> Encoder.Encoder a) -> Value a
+unsafePTI :: PTI.PTI -> (Bool -> a -> B.Encoding) -> Value a
unsafePTI pti encoder' =
Value (PTI.ptiOID pti) (fromMaybe ($bug "No array OID") (PTI.ptiArrayOID pti)) encoder'
diff --git a/library/Hasql/Private/Prelude.hs b/library/Hasql/Private/Prelude.hs
index 0872d92..809e961 100644
--- a/library/Hasql/Private/Prelude.hs
+++ b/library/Hasql/Private/Prelude.hs
@@ -69,18 +69,6 @@ import Data.Text as Exports (Text)
-------------------------
import Data.ByteString as Exports (ByteString)
--- scientific
--------------------------
-import Data.Scientific as Exports (Scientific)
-
--- uuid
--------------------------
-import Data.UUID as Exports (UUID)
-
--- time
--------------------------
-import Data.Time as Exports
-
-- vector
-------------------------
import Data.Vector as Exports (Vector)
diff --git a/library/Hasql/Private/PreparedStatementRegistry.hs b/library/Hasql/Private/PreparedStatementRegistry.hs
index e04c235..ce672ff 100644
--- a/library/Hasql/Private/PreparedStatementRegistry.hs
+++ b/library/Hasql/Private/PreparedStatementRegistry.hs
@@ -9,7 +9,7 @@ where
import Hasql.Private.Prelude hiding (lookup)
import qualified Data.HashTable.IO as A
-import qualified ByteString.TreeBuilder as B
+import qualified ByteString.StrictBuilder as B
data PreparedStatementRegistry =
@@ -39,7 +39,7 @@ update localKey onNewRemoteKey onOldRemoteKey (PreparedStatementRegistry table c
return result
where
remoteKey =
- B.toByteString . B.asciiIntegral $ n
+ B.builderBytes . B.asciiIntegral $ n
old =
onOldRemoteKey