diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,10 @@
 <!-- -*- Markdown -*- -->
 
+## 0.12.2.3
+
+- update for GHC 8.8.x.
+- apply compat interface packages of TH.
+
 ## 0.12.2.2
 
 - bugfix. fix record width of fromMaybe.
diff --git a/relational-query.cabal b/relational-query.cabal
--- a/relational-query.cabal
+++ b/relational-query.cabal
@@ -1,5 +1,5 @@
 name:                relational-query
-version:             0.12.2.2
+version:             0.12.2.3
 synopsis:            Typeful, Modular, Relational, algebraic query engine
 description:         This package contiains typeful relation structure and
                      relational-algebraic query building DSL which can
@@ -20,7 +20,8 @@
 category:            Database
 build-type:          Simple
 cabal-version:       >=1.10
-tested-with:           GHC == 8.6.1, GHC == 8.6.2, GHC == 8.6.3, GHC == 8.6.4, GHC == 8.6.5
+tested-with:           GHC == 8.8.1, GHC == 8.8.2
+                     , GHC == 8.6.1, GHC == 8.6.2, GHC == 8.6.3, GHC == 8.6.4, GHC == 8.6.5
                      , GHC == 8.4.1, GHC == 8.4.2, GHC == 8.4.3, GHC == 8.4.4
                      , GHC == 8.2.1, GHC == 8.2.2
                      , GHC == 8.0.1, GHC == 8.0.2
@@ -110,6 +111,7 @@
                        , dlist
                        , template-haskell
                        , th-reify-compat
+                       , th-constraint-compat
                        , product-isomorphic >= 0.0.3
                        , sql-words >=0.1.5
                        , names-th
@@ -120,7 +122,9 @@
   hs-source-dirs:      src
   ghc-options:         -Wall -fsimpl-tick-factor=200
   if impl(ghc >= 8)
-    ghc-options:         -Wcompat -Wnoncanonical-monadfail-instances
+    ghc-options:         -Wcompat
+  if impl(ghc >= 8) && impl(ghc < 8.8)
+    ghc-options:         -Wnoncanonical-monadfail-instances
 
   default-language:    Haskell2010
 
@@ -143,7 +147,7 @@
   hs-source-dirs:      test
   ghc-options:         -Wall -fsimpl-tick-factor=200
   if impl(ghc >= 8)
-    ghc-options:         -Wcompat -Wnoncanonical-monadfail-instances
+    ghc-options:         -Wcompat
 
   default-language:    Haskell2010
 
@@ -166,7 +170,7 @@
   hs-source-dirs:      test
   ghc-options:         -Wall
   if impl(ghc >= 8)
-    ghc-options:         -Wcompat -Wnoncanonical-monadfail-instances
+    ghc-options:         -Wcompat
 
   default-language:    Haskell2010
 
diff --git a/src/Database/Relational/InternalTH/Base.hs b/src/Database/Relational/InternalTH/Base.hs
--- a/src/Database/Relational/InternalTH/Base.hs
+++ b/src/Database/Relational/InternalTH/Base.hs
@@ -22,10 +22,11 @@
 import Control.Applicative ((<$>))
 import Data.List (foldl', inits)
 import Language.Haskell.TH
-  (Q, Name, mkName, normalB, classP, varP,
+  (Q, Name, mkName, normalB, varP,
    TypeQ, forallT, varT, tupleT, appT,
    Dec, sigD, valD, instanceD,
    TyVarBndr (PlainTV), )
+import Language.Haskell.TH.Compat.Constraint (classP)
 import Database.Record.Persistable
   (PersistableWidth, persistableWidth,
    PersistableRecordWidth, runPersistableRecordWidth)
diff --git a/src/Database/Relational/InternalTH/Overloaded.hs b/src/Database/Relational/InternalTH/Overloaded.hs
--- a/src/Database/Relational/InternalTH/Overloaded.hs
+++ b/src/Database/Relational/InternalTH/Overloaded.hs
@@ -21,8 +21,9 @@
 
 #if __GLASGOW_HASKELL__ >= 800
 import Language.Haskell.TH
-  (Name, mkName, Q, TypeQ, Dec, instanceD, funD, classP,
+  (Name, mkName, Q, TypeQ, Dec, instanceD, funD,
    appT, tupleT, varT, litT, strTyLit, clause, normalB, listE)
+import Language.Haskell.TH.Compat.Constraint (classP)
 import Language.Haskell.TH.Lib.Extra (integralE)
 import Language.Haskell.TH.Name.CamelCase
   (ConName, conName, toVarExp, toTypeCon)
diff --git a/src/Database/Relational/TH.hs b/src/Database/Relational/TH.hs
--- a/src/Database/Relational/TH.hs
+++ b/src/Database/Relational/TH.hs
@@ -73,8 +73,9 @@
 
 import Language.Haskell.TH
   (Name, nameBase, Q, reify, Dec, instanceD, ExpQ, stringE, listE,
-   TypeQ, Type (AppT, ConT), varT, tupleT, appT, arrowT, classP)
+   TypeQ, Type (AppT, ConT), varT, tupleT, appT, arrowT)
 import Language.Haskell.TH.Compat.Reify (unVarI)
+import Language.Haskell.TH.Compat.Constraint (classP)
 import Language.Haskell.TH.Name.CamelCase
   (VarName, varName, ConName (ConName), conName,
    varCamelcaseName, toVarExp, toTypeCon)
