diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Changelog for persistent-sqlite
 
+## 2.9.2
+
+* Add enableExtendedResultCodes and disableExtendedResultCodes functions
+
 ## 2.9.1
 
 * Bump vendored SQLite library to [3.26.0](https://www.sqlite.org/releaselog/3_26_0.html) to address [RCE bug: `magellan`](https://blade.tencent.com/magellan/index_en.html).
diff --git a/Database/Sqlite.hs b/Database/Sqlite.hs
--- a/Database/Sqlite.hs
+++ b/Database/Sqlite.hs
@@ -33,10 +33,10 @@
     -- fetch the rows from the table:
     --
     -- > {-#LANGUAGE OverloadedStrings#-}
-    -- > 
+    -- >
     -- > import Database.Sqlite
     -- > import Data.Text
-    -- > 
+    -- >
     -- > main :: IO ()
     -- > main = do
     -- >   conn <- open "/home/sibi/test.db"
@@ -73,7 +73,9 @@
                          freeLogFunction,
                          config,
                          status,
-                         softHeapLimit
+                         softHeapLimit,
+                         enableExtendedResultCodes,
+                         disableExtendedResultCodes
                         )
     where
 
@@ -229,6 +231,7 @@
 
 foreign import ccall "sqlite3_open_v2"
   openC :: CString -> Ptr (Ptr ()) -> Int -> CString -> IO Int
+
 openError :: Text -> IO (Either Connection Error)
 openError path' = do
     let flag = sqliteFlagReadWrite .|. sqliteFlagCreate .|. sqliteFlagUri
@@ -265,6 +268,28 @@
   case error of
     ErrorOK -> return ()
     _ -> sqlError (Just database) "close" error
+
+foreign import ccall "sqlite3_extended_result_codes"
+  sqlite3_extended_result_codesC :: Ptr () -> Int -> IO Int
+
+
+-- @since 2.9.2
+enableExtendedResultCodes :: Connection -> IO ()
+enableExtendedResultCodes con@(Connection _ (Connection' database)) =  do
+  error <- sqlite3_extended_result_codesC database 1
+  let err = decodeError error
+  case err of
+    ErrorOK -> return ()
+    _ -> sqlError (Just con) "enableExtendedResultCodes" err
+
+-- @since 2.9.2
+disableExtendedResultCodes :: Connection -> IO ()
+disableExtendedResultCodes con@(Connection _ (Connection' database)) =  do
+  error <- sqlite3_extended_result_codesC database 0
+  let err = decodeError error
+  case err of
+    ErrorOK -> return ()
+    _ -> sqlError (Just con) "disableExtendedResultCodes" err
 
 foreign import ccall "sqlite3_prepare_v2"
   prepareC :: Ptr () -> CString -> Int -> Ptr (Ptr ()) -> Ptr (Ptr ()) -> IO Int
diff --git a/persistent-sqlite.cabal b/persistent-sqlite.cabal
--- a/persistent-sqlite.cabal
+++ b/persistent-sqlite.cabal
@@ -1,5 +1,5 @@
 name:            persistent-sqlite
-version:         2.9.1
+version:         2.9.2
 license:         MIT
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
