diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,12 @@
+## 2.2.3
+
+* PersistField instance for Natural
+* better oracle support in odbc
+
+## 2.2.2
+
+* Add liftSqlPersistMPool function
+
 ## 2.2.1
 
 * Migration failure message with context
diff --git a/Database/Persist/Class/PersistField.hs b/Database/Persist/Class/PersistField.hs
--- a/Database/Persist/Class/PersistField.hs
+++ b/Database/Persist/Class/PersistField.hs
@@ -55,6 +55,10 @@
 import System.Locale (defaultTimeLocale)
 #endif
 
+#if MIN_VERSION_base(4,8,0)
+import Numeric.Natural (Natural)
+#endif
+
 -- | A value which can be marshalled to and from a 'PersistValue'.
 class PersistField a where
     toPersistValue :: a -> PersistValue
@@ -189,7 +193,7 @@
     [(a, "")] -> Right $ toRational (a :: Pico)
     _ -> Left $ "Can not read " <> t <> " as Rational (Pico in fact)"
   fromPersistValue (PersistInt64 i) = Right $ fromIntegral i
-  fromPersistValue (PersistByteString bs) = case double $ T.cons '0' $ T.decodeUtf8With T.lenientDecode bs of 
+  fromPersistValue (PersistByteString bs) = case double $ T.cons '0' $ T.decodeUtf8With T.lenientDecode bs of
                                               Right (ret,"") -> Right $ toRational ret
                                               Right (a,b) -> Left $ "Invalid bytestring[" <> T.pack (show bs) <> "]: expected a double but returned " <> T.pack (show (a,b))
                                               Left xs -> Left $ "Invalid bytestring[" <> T.pack (show bs) <> "]: expected a double but returned " <> T.pack (show xs)
@@ -199,7 +203,7 @@
     toPersistValue = PersistBool
     fromPersistValue (PersistBool b) = Right b
     fromPersistValue (PersistInt64 i) = Right $ i /= 0
-    fromPersistValue (PersistByteString i) = case readInt i of 
+    fromPersistValue (PersistByteString i) = case readInt i of
                                                Just (0,"") -> Right False
                                                Just (1,"") -> Right True
                                                xs -> error $ "PersistField Bool failed parsing PersistByteString xs["++show xs++"] i["++show i++"]"
@@ -254,6 +258,12 @@
 
     fromPersistValue x = Left $ T.pack $ "Expected UTCTime, received: " ++ show x
 
+#if MIN_VERSION_base(4,8,0)
+instance PersistField Natural where
+  toPersistValue = (toPersistValue :: Int64 -> PersistValue) . fromIntegral
+  fromPersistValue x = fromIntegral <$> (fromPersistValue x :: Either Text Int64)
+#endif
+
 instance PersistField a => PersistField (Maybe a) where
     toPersistValue Nothing = PersistNull
     toPersistValue (Just a) = toPersistValue a
@@ -342,7 +352,7 @@
     fromPersistValue PersistNull         = Right Inactive
     fromPersistValue (PersistBool True)  = Right Active
     fromPersistValue (PersistInt64 1)    = Right Active
-    fromPersistValue (PersistByteString i) = case readInt i of 
+    fromPersistValue (PersistByteString i) = case readInt i of
                                                Just (0,"") -> Left $ T.pack "PersistField Checkmark: found unexpected 0 value"
                                                Just (1,"") -> Right Active
                                                xs -> Left $ T.pack $ "PersistField Checkmark failed parsing PersistByteString xs["++show xs++"] i["++show i++"]"
diff --git a/Database/Persist/Sql/Class.hs b/Database/Persist/Sql/Class.hs
--- a/Database/Persist/Sql/Class.hs
+++ b/Database/Persist/Sql/Class.hs
@@ -34,6 +34,10 @@
 import Data.Bits (bitSize)
 import qualified Data.Vector as V
 
+#if MIN_VERSION_base(4,8,0)
+import Numeric.Natural (Natural)
+#endif
+
 -- | Class for data types that may be retrived from a 'rawSql'
 -- query.
 class RawSql a where
@@ -273,6 +277,11 @@
         _mn = return n `asTypeOf` a
 instance PersistFieldSql Rational where
     sqlType _ = SqlNumeric 32 20   --  need to make this field big enough to handle Rational to Mumber string conversion for ODBC
+
+#if MIN_VERSION_base(4,8,0)
+instance PersistFieldSql Natural where
+  sqlType _ = SqlInt64
+#endif
 
 -- An embedded Entity
 instance (PersistField record, PersistEntity record) => PersistFieldSql (Entity record) where
diff --git a/persistent.cabal b/persistent.cabal
--- a/persistent.cabal
+++ b/persistent.cabal
@@ -1,5 +1,5 @@
 name:            persistent
-version:         2.2.2.1
+version:         2.2.3
 license:         MIT
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
