diff --git a/Database/Groundhog/Postgresql.hs b/Database/Groundhog/Postgresql.hs
--- a/Database/Groundhog/Postgresql.hs
+++ b/Database/Groundhog/Postgresql.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE ScopedTypeVariables, FlexibleInstances, FlexibleContexts, OverloadedStrings, TypeFamilies, MultiParamTypeClasses, TemplateHaskell #-}
+
 module Database.Groundhog.Postgresql
     ( withPostgresqlPool
     , withPostgresqlConn
@@ -48,10 +49,14 @@
 import Data.IORef
 import Data.List (groupBy, intercalate, isPrefixOf, stripPrefix)
 import Data.Maybe (fromJust, fromMaybe, isJust, mapMaybe)
-import Data.Monoid
+import Data.Monoid hiding ((<>))
 import Data.Pool
 import Data.Time.LocalTime (localTimeToUTC, utc)
 
+-- work around for no Semigroup instance of PG.Query prior to
+-- postgresql-simple 0.5.3.0
+import qualified Data.ByteString as B
+
 -- typical operations for connection: OPEN, BEGIN, COMMIT, ROLLBACK, CLOSE
 newtype Postgresql = Postgresql PG.Connection
 
@@ -148,12 +153,24 @@
                      -> m (Pool Postgresql)
 createPostgresqlPool s connCount = liftIO $ createPool (open' s) close' 1 20 connCount
 
+-- Not sure of the best way to handle Semigroup/Monoid changes in ghc 8.4
+-- here. It appears that the long SQL query text interferes with the use
+-- of CPP here.
+--
+-- Manually copying over https://github.com/lpsmith/postgresql-simple/commit/44c0bb8dec3b71e8daefe104cf643c0c4fb26768#diff-75d19972de474bc8fa181e4733f3f0d6R94
+-- but this is not really a good idea.
+--
+combine :: PG.Query -> PG.Query -> PG.Query
+-- combine = (<>)
+combine (PG.Query a) (PG.Query b) = PG.Query (B.append a b)
+
+
 instance Savepoint Postgresql where
   withConnSavepoint name m (Postgresql c) = do
     let name' = fromString name
-    liftIO $ PG.execute_ c $ "SAVEPOINT " <> name'
-    x <- onException m (liftIO $ PG.execute_ c $ "ROLLBACK TO SAVEPOINT " <> name')
-    liftIO $ PG.execute_ c $ "RELEASE SAVEPOINT" <> name'
+    liftIO $ PG.execute_ c $ "SAVEPOINT " `combine` name'
+    x <- onException m (liftIO $ PG.execute_ c $ "ROLLBACK TO SAVEPOINT " `combine` name')
+    liftIO $ PG.execute_ c $ "RELEASE SAVEPOINT" `combine` name'
     return x
 
 instance ConnectionManager Postgresql where
diff --git a/Database/Groundhog/Postgresql/Array.hs b/Database/Groundhog/Postgresql/Array.hs
--- a/Database/Groundhog/Postgresql/Array.hs
+++ b/Database/Groundhog/Postgresql/Array.hs
@@ -40,7 +40,7 @@
 import Data.ByteString.Char8 (ByteString)
 import qualified Data.ByteString as B
 import qualified Data.ByteString.Unsafe as B
-import Data.Monoid
+import Data.Monoid hiding ((<>))
 import Data.Word
 import qualified Data.Vector as V
 import Data.Traversable (traverse)
diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,3 +1,6 @@
+0.9.0
+* Support for GHC 8.4
+
 0.8.0.3
 * New typeclass to allow transaction rollback through ExceptT
 
diff --git a/groundhog-postgresql.cabal b/groundhog-postgresql.cabal
--- a/groundhog-postgresql.cabal
+++ b/groundhog-postgresql.cabal
@@ -1,5 +1,5 @@
 name:            groundhog-postgresql
-version:         0.8.0.3
+version:         0.9.0
 license:         BSD3
 license-file:    LICENSE
 author:          Boris Lykah <lykahb@gmail.com>
@@ -22,7 +22,7 @@
                    , bytestring               >= 0.9
                    , blaze-builder            >= 0.3       && < 0.5
                    , transformers             >= 0.2.1     && < 0.6
-                   , groundhog                >= 0.8.0.1   && < 0.9
+                   , groundhog                >= 0.9.0     && < 0.10
                    , monad-control            >= 0.3       && < 1.1
                    , containers               >= 0.2
                    , text                     >= 0.8
@@ -32,6 +32,11 @@
                    , time                     >= 1.1
                    , vector                   >= 0.10     && < 0.13
                    , resourcet                >= 1.1.2
+
+    -- See https://prime.haskell.org/wiki/Libraries/Proposals/SemigroupMonoid#Writingcompatiblecode
+    if !impl(ghc >= 8.0)
+      build-depends: semigroups
+
     exposed-modules: Database.Groundhog.Postgresql
                      Database.Groundhog.Postgresql.Array
                      Database.Groundhog.Postgresql.Geometry
