diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,6 @@
+# hpqtypes-extras-1.17.0.1 (2025-03-27)
+* Fix validation of NOT NULL domains with PostgreSQL >= 17.
+
 # hpqtypes-extras-1.17.0.0 (2025-03-12)
 * Grouped some parameters of `migrateDatabase` and `checkDatabase` into a
   `DatabaseDefinitions` record type.
diff --git a/hpqtypes-extras.cabal b/hpqtypes-extras.cabal
--- a/hpqtypes-extras.cabal
+++ b/hpqtypes-extras.cabal
@@ -1,6 +1,6 @@
 cabal-version:       3.0
 name:                hpqtypes-extras
-version:             1.17.0.0
+version:             1.17.0.1
 synopsis:            Extra utilities for hpqtypes library
 description:         The following extras for hpqtypes library:
                      .
@@ -47,6 +47,9 @@
                     , UndecidableInstances
                     , ViewPatterns
   ghc-options: -Werror=prepositive-qualified-module
+
+  if impl(ghc >= 9.8)
+    ghc-options: -Wno-x-partial
 
 library
   import: common-stanza
diff --git a/src/Database/PostgreSQL/PQTypes/Checks.hs b/src/Database/PostgreSQL/PQTypes/Checks.hs
--- a/src/Database/PostgreSQL/PQTypes/Checks.hs
+++ b/src/Database/PostgreSQL/PQTypes/Checks.hs
@@ -312,15 +312,16 @@
     sqlResult "t1.typdefault" -- default value
     sqlResult
       "ARRAY(SELECT c.conname::text FROM pg_catalog.pg_constraint c \
-      \WHERE c.contypid = t1.oid ORDER by c.oid)" -- constraint names
+      \WHERE c.contype = 'c' AND c.contypid = t1.oid \
+      \ORDER by c.oid)" -- constraint names
     sqlResult
       "ARRAY(SELECT regexp_replace(pg_get_constraintdef(c.oid, true), '\
       \CHECK \\((.*)\\)', '\\1') FROM pg_catalog.pg_constraint c \
-      \WHERE c.contypid = t1.oid \
+      \WHERE c.contype = 'c' AND c.contypid = t1.oid \
       \ORDER by c.oid)" -- constraint definitions
     sqlResult
       "ARRAY(SELECT c.convalidated FROM pg_catalog.pg_constraint c \
-      \WHERE c.contypid = t1.oid \
+      \WHERE c.contype = 'c' AND c.contypid = t1.oid \
       \ORDER by c.oid)" -- are constraints validated?
     sqlWhereEq "t1.typname" $ unRawSQL $ domName def
   mdom <- fetchMaybe $
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -16,15 +16,7 @@
 import Data.Monoid.Utils
 import Database.PostgreSQL.PQTypes
 import Database.PostgreSQL.PQTypes.Checks
-import Database.PostgreSQL.PQTypes.Model.ColumnType
-import Database.PostgreSQL.PQTypes.Model.CompositeType
-import Database.PostgreSQL.PQTypes.Model.EnumType
-import Database.PostgreSQL.PQTypes.Model.ForeignKey
-import Database.PostgreSQL.PQTypes.Model.Index
-import Database.PostgreSQL.PQTypes.Model.Migration
-import Database.PostgreSQL.PQTypes.Model.PrimaryKey
-import Database.PostgreSQL.PQTypes.Model.Table
-import Database.PostgreSQL.PQTypes.Model.Trigger
+import Database.PostgreSQL.PQTypes.Model
 import Database.PostgreSQL.PQTypes.SQL.Builder
 import Log
 import Log.Backend.StandardOutput
@@ -2406,7 +2398,26 @@
 
 tableDefsWithPgCrypto :: [Table] -> DatabaseDefinitions
 tableDefsWithPgCrypto tables =
-  emptyDbDefinitions {dbTables = tables, dbExtensions = ["pgcrypto"]}
+  emptyDbDefinitions
+    { dbTables = tables
+    , dbExtensions = ["pgcrypto"]
+    , dbDomains = [testDomainColor]
+    }
+  where
+    testDomainColor =
+      Domain
+        { domName = "test_domain_color"
+        , domType = TextT
+        , domNullable = False
+        , domDefault = Nothing
+        , domChecks =
+            mkChecks
+              [ tblCheck
+                  { chkName = "test_domain_color"
+                  , chkCondition = "VALUE ~ '^#[0-9a-f]{6}$'::text"
+                  }
+              ]
+        }
 
 main :: IO ()
 main = do
