diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,8 +1,6 @@
-# Revision history for src
-
-## 0.1.0.0 -- YYYY-mm-dd
+## 0.1.0.2 -- 2022-02-04
 
-* First version. Released on an unsuspecting world.
+* Support `hasql-1.5`
 
 ## 0.1.0.1 -- 2021-11-15
 
diff --git a/hasql-interpolate.cabal b/hasql-interpolate.cabal
--- a/hasql-interpolate.cabal
+++ b/hasql-interpolate.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.4
 name:               hasql-interpolate
-version:            0.1.0.1
+version:            0.1.0.2
 
 author: Travis Staton <hello@travisstaton.com>
 category: Hasql, Database, PostgreSQL
@@ -9,6 +9,7 @@
 homepage: https://github.com/awkward-squad/hasql-interpolate
 license-file: LICENSE
 license: BSD-3-Clause
+tested-with: GHC == 8.10.7, GHC == 9.0.1
 maintainer: Travis Staton <hello@travisstaton.com>, Mitchell Rosen
 synopsis: QuasiQuoter that supports expression interpolation for hasql
 description:
@@ -35,7 +36,7 @@
                       Hasql.Interpolate.Internal.EncodeRow.TH
 
     build-depends:    base >= 4.14 && < 5
-                    , hasql ^>= 1.4
+                    , hasql ^>= 1.4 || ^>= 1.5
                     , haskell-src-meta ^>= 0.8
                     , template-haskell >= 2.14
                     , megaparsec >= 8.0.0
@@ -73,5 +74,6 @@
                , tasty
                , text
                , tasty-hunit
+               , tmp-postgres
   hs-source-dirs: test
   default-language: Haskell2010
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -13,6 +13,7 @@
 import Control.Exception
 import Data.Int
 import Data.Text (Text)
+import qualified Database.Postgres.Temp as Tmp
 import GHC.Generics (Generic)
 import qualified Hasql.Connection as Hasql
 import Hasql.Decoders (column)
@@ -32,7 +33,7 @@
   testGroup
     "Tests"
     [ parserTests,
-      executionTests
+      withResource (either (error . show) pure =<< Tmp.startConfig Tmp.defaultConfig) Tmp.stop executionTests
     ]
 
 parserTests :: TestTree
@@ -44,15 +45,17 @@
       testCase "param" testParseParam
     ]
 
-executionTests :: TestTree
-executionTests =
+executionTests :: IO Tmp.DB -> TestTree
+executionTests getDb =
   testGroup
     "execution"
-    [ testCase "basic" testBasic,
-      testCase "composite test" testComposite,
-      testCase "row" testRow,
-      testCase "row generic" testRowGeneric
-    ]
+    ( ($ getDb)
+        <$> [ testCase "basic" . testBasic,
+              testCase "composite test" . testComposite,
+              testCase "row" . testRow,
+              testCase "row generic" . testRowGeneric
+            ]
+    )
 
 testParseQuotes :: IO ()
 testParseQuotes = do
@@ -99,9 +102,9 @@
           0
   parseSqlExpr "#{x} #{2}" @?= Right expected
 
-testBasic :: IO ()
-testBasic = do
-  withLocalTransaction \conn -> do
+testBasic :: IO Tmp.DB -> IO ()
+testBasic getDb = do
+  withLocalTransaction getDb \conn -> do
     let relation :: [(Int64, Bool, Int64)]
         relation =
           [ (0, True, 5),
@@ -115,9 +118,9 @@
     selectRes <- run conn [sql| select x, y, z from hasql_interpolate_test where x > #{0 :: Int64} order by x |]
     selectRes @?= filter (\(x, _, _) -> x > 0) relation
 
-testComposite :: IO ()
-testComposite = do
-  withLocalTransaction \conn -> do
+testComposite :: IO Tmp.DB -> IO ()
+testComposite getDb = do
+  withLocalTransaction getDb \conn -> do
     let expected = [Point 0 0, Point 1 1]
     res <- run conn [sql| select * from (values (row(0,0)), (row(1,1)) ) as t |]
     res @?= map OneColumn expected
@@ -131,31 +134,32 @@
       <*> column decodeField
       <*> column decodeField
 
-testRow :: IO ()
-testRow = do
-  withLocalTransaction \conn -> do
+testRow :: IO Tmp.DB -> IO ()
+testRow getDb = do
+  withLocalTransaction getDb \conn -> do
     let expected = [T 0 True "foo", T 1 False "bar"]
     res <- run conn [sql| select * from (values (0,true,'foo'), (1,false,'bar') ) as t |]
     res @?= expected
 
-testRowGeneric :: IO ()
-testRowGeneric = do
-  withLocalTransaction \conn -> do
+testRowGeneric :: IO Tmp.DB -> IO ()
+testRowGeneric getDb = do
+  withLocalTransaction getDb \conn -> do
     let expected = [Point 0 0, Point 1 1]
     res <- run conn [sql| select * from (values (0,0), (1,1) ) as t |]
     res @?= expected
 
-withLocalTransaction :: (Hasql.Connection -> IO a) -> IO a
-withLocalTransaction k = bracket (either (fail . show) pure =<< Hasql.acquire "host=localhost") Hasql.release \conn -> do
-  let beginTrans = do
-        Hasql.run (Hasql.statement () (interp False [sql| begin |])) conn >>= \case
-          Left err -> fail (show err)
-          Right () -> pure ()
-      rollbackTrans = do
-        Hasql.run (Hasql.statement () (interp False [sql| rollback |])) conn >>= \case
-          Left err -> fail (show err)
-          Right () -> pure ()
-  bracket beginTrans (\() -> rollbackTrans) \() -> k conn
+withLocalTransaction :: IO Tmp.DB -> (Hasql.Connection -> IO a) -> IO a
+withLocalTransaction getDb k =
+  getDb >>= \db -> bracket (either (fail . show) pure =<< Hasql.acquire (Tmp.toConnectionString db)) Hasql.release \conn -> do
+    let beginTrans = do
+          Hasql.run (Hasql.statement () (interp False [sql| begin |])) conn >>= \case
+            Left err -> fail (show err)
+            Right () -> pure ()
+        rollbackTrans = do
+          Hasql.run (Hasql.statement () (interp False [sql| rollback |])) conn >>= \case
+            Left err -> fail (show err)
+            Right () -> pure ()
+    bracket beginTrans (\() -> rollbackTrans) \() -> k conn
 
 run :: DecodeResult a => Hasql.Connection -> Sql -> IO a
 run conn stmt = do
