diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -41,8 +41,6 @@
 - Decoder checks are now more strict and report `UnexpectedColumnTypeStatementError` when the actual type of a column does not match the expected type of the decoder. Previously such mismatches were silently ignored and could lead to either autocasts or runtime errors in later stages.
   - E.g., `int4` column decoded with `int8` decoder will now report `UnexpectedColumnTypeStatementError` instead of silently accepting the value.
 
-- Due to the above the oldest supported PostgreSQL version now is 10. In older versions some types had different OIDs.
-
 - Session now has exclusive access to the connection for its entire duration. Previously it was releasing and reacquiring the lock on the connection between statements.
   - If you need the old behaviour, you can use `ReaderT Connection (ExceptT SessionError IO)`.
 
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.10.2.3
+version: 1.10.2.4
 category: Hasql, Database, PostgreSQL
 synopsis: Fast PostgreSQL driver with a flexible mapping API
 description:
@@ -17,7 +17,7 @@
   so typically all you need is just to install the latest PostgreSQL distro.
 
   Despite the mentioned requirements for \"libpq\" \"hasql\" is thoroughly tested to be compatible
-  with a wide range of PostgreSQL servers starting from version 10.
+  with a wide range of PostgreSQL servers starting from version 9.
 
 homepage: https://github.com/nikita-volkov/hasql
 bug-reports: https://github.com/nikita-volkov/hasql/issues
diff --git a/src/comms-tests/Hasql/Comms/SpecHook.hs b/src/comms-tests/Hasql/Comms/SpecHook.hs
--- a/src/comms-tests/Hasql/Comms/SpecHook.hs
+++ b/src/comms-tests/Hasql/Comms/SpecHook.hs
@@ -9,8 +9,8 @@
 
 hook :: HookedSpec -> Spec
 hook hookedSpec = parallel do
-  byDistro "postgres:10"
-  byDistro "postgres:17"
+  byDistro "postgres:9"
+  byDistro "postgres:18"
   where
     byDistro tagName =
       describe (toList tagName) do
diff --git a/src/library-tests/Isolated/ByUnit/Connection/AcquireSpec.hs b/src/library-tests/Isolated/ByUnit/Connection/AcquireSpec.hs
--- a/src/library-tests/Isolated/ByUnit/Connection/AcquireSpec.hs
+++ b/src/library-tests/Isolated/ByUnit/Connection/AcquireSpec.hs
@@ -27,34 +27,10 @@
               expectationFailure ("Expected NetworkingConnectionError, but got: " <> show err)
 
   describe "postgres:9" do
-    it "Fails with compatibility error" do
-      TestcontainersPostgresql.run
-        TestcontainersPostgresql.Config
-          { tagName = "postgres:9",
-            auth = TestcontainersPostgresql.CredentialsAuth "postgres" "postgres",
-            forwardLogs = False
-          }
-        \(host, port) -> do
-          let settings =
-                mconcat
-                  [ Settings.hostAndPort host port,
-                    Settings.user "postgres",
-                    Settings.password "postgres",
-                    Settings.dbname "postgres"
-                  ]
-          result <- Connection.acquire settings
-          case result of
-            Right conn -> do
-              Connection.release conn
-              expectationFailure "Expected connection to fail with compatibility error, but it succeeded"
-            Left err ->
-              err `shouldBe` Errors.CompatibilityConnectionError "Server version is lower than 10: 9.6.24"
-
-  describe "postgres:10" do
     it "Succeeds" do
       TestcontainersPostgresql.run
         TestcontainersPostgresql.Config
-          { tagName = "postgres:10",
+          { tagName = "postgres:9",
             auth = TestcontainersPostgresql.CredentialsAuth "postgres" "postgres",
             forwardLogs = False
           }
@@ -73,11 +49,11 @@
             Left err -> do
               expectationFailure ("Expected connection to succeed, but it failed with error: " <> show err)
 
-  describe "postgres:17" do
+  describe "postgres:18" do
     it "Succeeds" do
       TestcontainersPostgresql.run
         TestcontainersPostgresql.Config
-          { tagName = "postgres:17",
+          { tagName = "postgres:18",
             auth = TestcontainersPostgresql.CredentialsAuth "postgres" "postgres",
             forwardLogs = False
           }
@@ -99,7 +75,7 @@
     it "Fails with authentication error on incorrect password" do
       TestcontainersPostgresql.run
         TestcontainersPostgresql.Config
-          { tagName = "postgres:17",
+          { tagName = "postgres:18",
             auth = TestcontainersPostgresql.CredentialsAuth "postgres" "postgres",
             forwardLogs = False
           }
@@ -124,7 +100,7 @@
     it "Fails with authentication error on incorrect user" do
       TestcontainersPostgresql.run
         TestcontainersPostgresql.Config
-          { tagName = "postgres:17",
+          { tagName = "postgres:18",
             auth = TestcontainersPostgresql.CredentialsAuth "postgres" "postgres",
             forwardLogs = False
           }
@@ -146,11 +122,11 @@
             Left err ->
               expectationFailure ("Expected AuthenticationConnectionError, but got: " <> show err)
 
-  describe "postgres:10" do
-    byDistro "postgres:10"
+  describe "postgres:9" do
+    byDistro "postgres:9"
 
-  describe "postgres:17" do
-    byDistro "postgres:17"
+  describe "postgres:18" do
+    byDistro "postgres:18"
 
 byDistro :: Text -> Spec
 byDistro tagName = do
diff --git a/src/library-tests/Sharing/ByFeature/DecoderCompatibilityCheckSpec.hs b/src/library-tests/Sharing/ByFeature/DecoderCompatibilityCheckSpec.hs
--- a/src/library-tests/Sharing/ByFeature/DecoderCompatibilityCheckSpec.hs
+++ b/src/library-tests/Sharing/ByFeature/DecoderCompatibilityCheckSpec.hs
@@ -73,7 +73,7 @@
             Scripts.onPreparableConnection config \connection -> do
               let statement =
                     (if preparable then Statement.preparable else Statement.unpreparable)
-                      "select 1::int8, 'text'"
+                      "select 1::int8, 'text'::text"
                       mempty
                       ( Decoders.singleRow
                           ( (,)
@@ -85,7 +85,8 @@
               case result of
                 Left (Errors.StatementSessionError _ _ _ _ _ (Errors.UnexpectedColumnTypeStatementError column expected actual)) -> do
                   shouldBe column 1
-                  (expected, actual) `shouldBe` (20, 25)
+                  shouldBe expected 20
+                  shouldBe actual 25
                 Left err ->
                   expectationFailure ("Unexpected type of error: " <> show err)
                 result ->
@@ -96,7 +97,7 @@
             Scripts.onPreparableConnection config \connection -> do
               let statement =
                     (if preparable then Statement.preparable else Statement.unpreparable)
-                      "select 1::int8, 'text'"
+                      "select 1::int8, 'text'::text"
                       mempty
                       ( Decoders.rowMaybe
                           ( (,)
diff --git a/src/library-tests/Sharing/ByUnit/Session/ScriptSpec.hs b/src/library-tests/Sharing/ByUnit/Session/ScriptSpec.hs
--- a/src/library-tests/Sharing/ByUnit/Session/ScriptSpec.hs
+++ b/src/library-tests/Sharing/ByUnit/Session/ScriptSpec.hs
@@ -23,17 +23,17 @@
       let sql =
             (mconcat . map (<> "\n"))
               [ "create table \"" <> tableName <> "_genre\" (",
-                "  \"id\" int4 not null generated always as identity primary key,",
+                "  \"id\" int4 not null primary key,",
                 "  \"name\" text not null unique",
                 ");",
                 "",
                 "create table \"" <> tableName <> "_artist\" (",
-                "  \"id\" int4 not null generated always as identity primary key,",
+                "  \"id\" int4 not null primary key,",
                 "  \"name\" text not null",
                 ");",
                 "",
                 "create table \"" <> tableName <> "_album\" (",
-                "  \"id\" int4 not null generated always as identity primary key,",
+                "  \"id\" int4 not null primary key,",
                 "  -- Album name.",
                 "  \"name\" text not null,",
                 "  -- The date the album was first released.",
diff --git a/src/library-tests/Sharing/SpecHook.hs b/src/library-tests/Sharing/SpecHook.hs
--- a/src/library-tests/Sharing/SpecHook.hs
+++ b/src/library-tests/Sharing/SpecHook.hs
@@ -9,8 +9,8 @@
 
 hook :: HookedSpec -> Spec
 hook hookedSpec = parallel do
-  byDistro "postgres:10"
-  byDistro "postgres:17"
+  byDistro "postgres:9"
+  byDistro "postgres:18"
   where
     byDistro tagName =
       describe (toList tagName) do
diff --git a/src/library/Hasql/Connection.hs b/src/library/Hasql/Connection.hs
--- a/src/library/Hasql/Connection.hs
+++ b/src/library/Hasql/Connection.hs
@@ -49,7 +49,7 @@
     -- Check version:
     version <- lift (ServerVersion.load pqConnection)
     when (version < ServerVersion.minimum) do
-      throwError (CompatibilityConnectionError ("Server version is lower than 10: " <> ServerVersion.toText version))
+      throwError (CompatibilityConnectionError ("Server version is lower than 9: " <> ServerVersion.toText version))
 
     -- Initialize:
     lift do
diff --git a/src/library/Hasql/Connection/ServerVersion.hs b/src/library/Hasql/Connection/ServerVersion.hs
--- a/src/library/Hasql/Connection/ServerVersion.hs
+++ b/src/library/Hasql/Connection/ServerVersion.hs
@@ -32,7 +32,7 @@
 -- >>> fromInt 90200
 -- ServerVersion 9 2 0
 --
--- Ref: https://www.postgresql.org/docs/17/libpq-status.html#LIBPQ-PQSERVERVERSION
+-- Ref: https://www.postgresql.org/docs/18/libpq-status.html#LIBPQ-PQSERVERVERSION
 fromInt :: Int -> ServerVersion
 fromInt x =
   if x < 100_000
@@ -63,7 +63,7 @@
 
 -- | Minimum supported version.
 minimum :: ServerVersion
-minimum = ServerVersion 10 0 0
+minimum = ServerVersion 9 0 0
 
 -- | Load from PQ connection.
 load :: Pq.Connection -> IO ServerVersion
diff --git a/src/profiling/Main.hs b/src/profiling/Main.hs
--- a/src/profiling/Main.hs
+++ b/src/profiling/Main.hs
@@ -89,7 +89,7 @@
 -- * Testcontainers
 
 withConnection :: (Connection.Connection -> IO ()) -> IO ()
-withConnection = withConnectionByTagName "postgres:17"
+withConnection = withConnectionByTagName "postgres:18"
 
 withConnectionByTagName :: Text -> (Connection.Connection -> IO ()) -> IO ()
 withConnectionByTagName tagName action = withConnectionSettings tagName \settings -> do
