diff --git a/hasql.cabal b/hasql.cabal
--- a/hasql.cabal
+++ b/hasql.cabal
@@ -1,6 +1,6 @@
 cabal-version: 3.0
 name: hasql
-version: 1.9.2
+version: 1.9.3
 category: Hasql, Database, PostgreSQL
 synopsis: Fast PostgreSQL driver with a flexible mapping API
 description:
@@ -46,7 +46,6 @@
     ConstraintKinds
     DataKinds
     DefaultSignatures
-    DeriveDataTypeable
     DeriveFoldable
     DeriveFunctor
     DeriveGeneric
@@ -150,7 +149,7 @@
     hashtables >=1.1 && <2,
     iproute >=1.7 && <1.8,
     mtl >=2 && <3,
-    postgresql-binary >=0.14.1 && <0.15,
+    postgresql-binary >=0.14.2 && <0.15,
     postgresql-libpq >=0.10.1 && <0.12,
     profunctors >=5.1 && <6,
     scientific >=0.3 && <0.4,
diff --git a/library/Hasql/Decoders.hs b/library/Hasql/Decoders.hs
--- a/library/Hasql/Decoders.hs
+++ b/library/Hasql/Decoders.hs
@@ -50,6 +50,18 @@
     jsonBytes,
     jsonb,
     jsonbBytes,
+    int4range,
+    int8range,
+    numrange,
+    tsrange,
+    tstzrange,
+    daterange,
+    int4multirange,
+    int8multirange,
+    nummultirange,
+    tsmultirange,
+    tstzmultirange,
+    datemultirange,
     array,
     listArray,
     vectorArray,
diff --git a/library/Hasql/Decoders/All.hs b/library/Hasql/Decoders/All.hs
--- a/library/Hasql/Decoders/All.hs
+++ b/library/Hasql/Decoders/All.hs
@@ -14,6 +14,7 @@
 import Hasql.Prelude hiding (bool, maybe)
 import Hasql.Prelude qualified as Prelude
 import PostgreSQL.Binary.Decoding qualified as A
+import PostgreSQL.Binary.Range qualified as R
 
 -- * Result
 
@@ -292,6 +293,78 @@
 {-# INLINEABLE jsonbBytes #-}
 jsonbBytes :: (ByteString -> Either Text a) -> Value a
 jsonbBytes fn = Value (Value.decoder (const (A.jsonb_bytes fn)))
+
+-- |
+-- Decoder of the @INT4RANGE@ values.
+{-# INLINEABLE int4range #-}
+int4range :: Value (R.Range Int32)
+int4range = Value (Value.decoder (const A.int4range))
+
+-- |
+-- Decoder of the @INT8RANGE@ values.
+{-# INLINEABLE int8range #-}
+int8range :: Value (R.Range Int64)
+int8range = Value (Value.decoder (const A.int8range))
+
+-- |
+-- Decoder of the @NUMRANGE@ values.
+{-# INLINEABLE numrange #-}
+numrange :: Value (R.Range Scientific)
+numrange = Value (Value.decoder (const A.numrange))
+
+-- |
+-- Decoder of the @TSRANGE@ values.
+{-# INLINEABLE tsrange #-}
+tsrange :: Value (R.Range LocalTime)
+tsrange = Value (Value.decoder (Prelude.bool A.tsrange_float A.tsrange_int))
+
+-- |
+-- Decoder of the @TSTZRANGE@ values.
+{-# INLINEABLE tstzrange #-}
+tstzrange :: Value (R.Range UTCTime)
+tstzrange = Value (Value.decoder (Prelude.bool A.tstzrange_float A.tstzrange_int))
+
+-- |
+-- Decoder of the @DATERANGE@ values.
+{-# INLINEABLE daterange #-}
+daterange :: Value (R.Range Day)
+daterange = Value (Value.decoder (const A.daterange))
+
+-- |
+-- Decoder of the @INT4MULTIRANGE@ values.
+{-# INLINEABLE int4multirange #-}
+int4multirange :: Value (R.Multirange Int32)
+int4multirange = Value (Value.decoder (const A.int4multirange))
+
+-- |
+-- Decoder of the @INT8MULTIRANGE@ values.
+{-# INLINEABLE int8multirange #-}
+int8multirange :: Value (R.Multirange Int64)
+int8multirange = Value (Value.decoder (const A.int8multirange))
+
+-- |
+-- Decoder of the @NUMMULTIRANGE@ values.
+{-# INLINEABLE nummultirange #-}
+nummultirange :: Value (R.Multirange Scientific)
+nummultirange = Value (Value.decoder (const A.nummultirange))
+
+-- |
+-- Decoder of the @TSMULTIRANGE@ values.
+{-# INLINEABLE tsmultirange #-}
+tsmultirange :: Value (R.Multirange LocalTime)
+tsmultirange = Value (Value.decoder (Prelude.bool A.tsmultirange_float A.tsmultirange_int))
+
+-- |
+-- Decoder of the @TSTZMULTIRANGE@ values.
+{-# INLINEABLE tstzmultirange #-}
+tstzmultirange :: Value (R.Multirange UTCTime)
+tstzmultirange = Value (Value.decoder (Prelude.bool A.tstzmultirange_float A.tstzmultirange_int))
+
+-- |
+-- Decoder of the @DATEMULTIRANGE@ values.
+{-# INLINEABLE datemultirange #-}
+datemultirange :: Value (R.Multirange Day)
+datemultirange = Value (Value.decoder (const A.datemultirange))
 
 -- |
 -- Lift a custom value decoder function to a 'Value' decoder.
diff --git a/library/Hasql/Encoders.hs b/library/Hasql/Encoders.hs
--- a/library/Hasql/Encoders.hs
+++ b/library/Hasql/Encoders.hs
@@ -41,6 +41,18 @@
     jsonb,
     jsonbBytes,
     jsonbLazyBytes,
+    int4range,
+    int8range,
+    numrange,
+    tsrange,
+    tstzrange,
+    daterange,
+    int4multirange,
+    int8multirange,
+    nummultirange,
+    tsmultirange,
+    tstzmultirange,
+    datemultirange,
     name,
     oid,
     enum,
diff --git a/library/Hasql/Encoders/All.hs b/library/Hasql/Encoders/All.hs
--- a/library/Hasql/Encoders/All.hs
+++ b/library/Hasql/Encoders/All.hs
@@ -12,6 +12,7 @@
 import Hasql.Prelude hiding (bool)
 import Hasql.Prelude qualified as Prelude
 import PostgreSQL.Binary.Encoding qualified as A
+import PostgreSQL.Binary.Range qualified as R
 import TextBuilder qualified as C
 
 -- * Parameters Product Encoder
@@ -270,6 +271,78 @@
 {-# INLINEABLE name #-}
 name :: Value Text
 name = Value (Value.unsafePTIWithShow PTI.name (const A.text_strict))
+
+-- |
+-- Encoder of @INT4RANGE@ values.
+{-# INLINEABLE int4range #-}
+int4range :: Value (R.Range Int32)
+int4range = Value (Value.unsafePTIWithShow PTI.int4range (const A.int4range))
+
+-- |
+-- Encoder of @INT8RANGE@ values.
+{-# INLINEABLE int8range #-}
+int8range :: Value (R.Range Int64)
+int8range = Value (Value.unsafePTIWithShow PTI.int8range (const A.int8range))
+
+-- |
+-- Encoder of @NUMRANGE@ values.
+{-# INLINEABLE numrange #-}
+numrange :: Value (R.Range Scientific)
+numrange = Value (Value.unsafePTIWithShow PTI.numrange (const A.numrange))
+
+-- |
+-- Encoder of @TSRANGE@ values.
+{-# INLINEABLE tsrange #-}
+tsrange :: Value (R.Range LocalTime)
+tsrange = Value (Value.unsafePTIWithShow PTI.tsrange (Prelude.bool A.tsrange_float A.tsrange_int))
+
+-- |
+-- Encoder of @TSTZRANGE@ values.
+{-# INLINEABLE tstzrange #-}
+tstzrange :: Value (R.Range UTCTime)
+tstzrange = Value (Value.unsafePTIWithShow PTI.tstzrange (Prelude.bool A.tstzrange_float A.tstzrange_int))
+
+-- |
+-- Encoder of @DATERANGE@ values.
+{-# INLINEABLE daterange #-}
+daterange :: Value (R.Range Day)
+daterange = Value (Value.unsafePTIWithShow PTI.daterange (const A.daterange))
+
+-- |
+-- Encoder of @INT4MULTIRANGE@ values.
+{-# INLINEABLE int4multirange #-}
+int4multirange :: Value (R.Multirange Int32)
+int4multirange = Value (Value.unsafePTIWithShow PTI.int4multirange (const A.int4multirange))
+
+-- |
+-- Encoder of @INT8MULTIRANGE@ values.
+{-# INLINEABLE int8multirange #-}
+int8multirange :: Value (R.Multirange Int64)
+int8multirange = Value (Value.unsafePTIWithShow PTI.int8multirange (const A.int8multirange))
+
+-- |
+-- Encoder of @NUMMULTIRANGE@ values.
+{-# INLINEABLE nummultirange #-}
+nummultirange :: Value (R.Multirange Scientific)
+nummultirange = Value (Value.unsafePTIWithShow PTI.nummultirange (const A.nummultirange))
+
+-- |
+-- Encoder of @TSMULTIRANGE@ values.
+{-# INLINEABLE tsmultirange #-}
+tsmultirange :: Value (R.Multirange LocalTime)
+tsmultirange = Value (Value.unsafePTIWithShow PTI.tsmultirange (Prelude.bool A.tsmultirange_float A.tsmultirange_int))
+
+-- |
+-- Encoder of @TSTZMULTIRANGE@ values.
+{-# INLINEABLE tstzmultirange #-}
+tstzmultirange :: Value (R.Multirange UTCTime)
+tstzmultirange = Value (Value.unsafePTIWithShow PTI.tstzmultirange (Prelude.bool A.tstzmultirange_float A.tstzmultirange_int))
+
+-- |
+-- Encoder of @DATEMULTIRANGE@ values.
+{-# INLINEABLE datemultirange #-}
+datemultirange :: Value (R.Multirange Day)
+datemultirange = Value (Value.unsafePTIWithShow PTI.datemultirange (const A.datemultirange))
 
 -- |
 -- Given a function,
diff --git a/library/Hasql/Errors.hs b/library/Hasql/Errors.hs
--- a/library/Hasql/Errors.hs
+++ b/library/Hasql/Errors.hs
@@ -18,7 +18,7 @@
     PipelineError
       -- | Error details.
       CommandError
-  deriving (Show, Eq, Typeable)
+  deriving (Show, Eq)
 
 instance Exception SessionError where
   displayException = \case
diff --git a/library/Hasql/PostgresTypeInfo.hs b/library/Hasql/PostgresTypeInfo.hs
--- a/library/Hasql/PostgresTypeInfo.hs
+++ b/library/Hasql/PostgresTypeInfo.hs
@@ -61,6 +61,9 @@
 daterange :: PTI
 daterange = mkPTI LibPQ.Binary 3912 (Just 3913)
 
+datemultirange :: PTI
+datemultirange = mkPTI LibPQ.Binary 4535 (Just 6155)
+
 float4 :: PTI
 float4 = mkPTI LibPQ.Binary 700 (Just 1021)
 
@@ -85,12 +88,18 @@
 int4range :: PTI
 int4range = mkPTI LibPQ.Binary 3904 (Just 3905)
 
+int4multirange :: PTI
+int4multirange = mkPTI LibPQ.Binary 4451 (Just 6150)
+
 int8 :: PTI
 int8 = mkPTI LibPQ.Binary 20 (Just 1016)
 
 int8range :: PTI
 int8range = mkPTI LibPQ.Binary 3926 (Just 3927)
 
+int8multirange :: PTI
+int8multirange = mkPTI LibPQ.Binary 4536 (Just 6157)
+
 interval :: PTI
 interval = mkPTI LibPQ.Binary 1186 (Just 1187)
 
@@ -121,6 +130,9 @@
 numrange :: PTI
 numrange = mkPTI LibPQ.Binary 3906 (Just 3907)
 
+nummultirange :: PTI
+nummultirange = mkPTI LibPQ.Binary 4532 (Just 6151)
+
 oid :: PTI
 oid = mkPTI LibPQ.Binary 26 (Just 1028)
 
@@ -196,8 +208,14 @@
 tsrange :: PTI
 tsrange = mkPTI LibPQ.Binary 3908 (Just 3909)
 
+tsmultirange :: PTI
+tsmultirange = mkPTI LibPQ.Binary 4533 (Just 6152)
+
 tstzrange :: PTI
 tstzrange = mkPTI LibPQ.Binary 3910 (Just 3911)
+
+tstzmultirange :: PTI
+tstzmultirange = mkPTI LibPQ.Binary 4534 (Just 6153)
 
 tsvector :: PTI
 tsvector = mkPTI LibPQ.Binary 3614 (Just 3643)
