git.iko.soy/typeable/postgresql-simple
on master help sign in
Merge https://github.com/jochu/postgresql-simple into 0.3
commit42c917f9d456b658a31bb3c1dae7a85f79475ab5 authorLeon P Smith <leon@melding-monads.com> dateMon 8 Oct 2012, 13:32 (14 years ago) parentcc10a76811b621
3 files changed+11−5
src/Database/PostgreSQL/Simple.hs+2−1 src/Database/PostgreSQL/Simple/FromField.hs+8−4 src/Database/PostgreSQL/Simple/FromRow.hs+1
src/Database/PostgreSQL/Simple.hs+2−1
@@ -570,10 +570,11 @@ finishQuery conn q result = do
570570 , fmap ellipsis v )
571571 throw (ConversionFailed
572572 (show (unCol ncols) ++ " values: " ++ show vals)
573+ ""
573574 (show (unCol col) ++ " slots in target type")
574575 "mismatch between number of columns to \
575576 \convert and number in target type")
576− Errors [] -> throwIO $ ConversionFailed "" "" "unknown error"
577+ Errors [] -> throwIO $ ConversionFailed "" "" "" "unknown error"
577578 Errors [x] -> throwIO x
578579 Errors xs -> throwIO $ ManyErrors xs
579580 PQ.CopyOut ->
src/Database/PostgreSQL/Simple/FromField.hs+8−4
@@ -78,15 +78,18 @@ import qualified Data.Text.Lazy as LT
7878-- | Exception thrown if conversion from a SQL value to a Haskell
7979-- value fails.
8080data ResultError = Incompatible { errSQLType :: String
81+ , errSQLField :: String
8182 , errHaskellType :: String
8283 , errMessage :: String }
8384 -- ^ The SQL and Haskell types are not compatible.
8485 | UnexpectedNull { errSQLType :: String
86+ , errSQLField :: String
8587 , errHaskellType :: String
8688 , errMessage :: String }
8789 -- ^ A SQL @NULL@ was encountered when the Haskell
8890 -- type did not permit it.
8991 | ConversionFailed { errSQLType :: String
92+ , errSQLField :: String
9093 , errHaskellType :: String
9194 , errMessage :: String }
9295 -- ^ The SQL value could not be parsed, or could not
@@ -232,12 +235,12 @@ ff :: BuiltinType -> String -> (B8.ByteString -> Either String a)
232235 -> Field -> Maybe B8.ByteString -> Ok a
233236ff pgType hsType parse f mstr
234237 | typeOid f /= builtin2oid pgType
235− = left (Incompatible (B8.unpack (typename f)) hsType "")
238+ = left (Incompatible (B8.unpack (typename f)) (maybe "" B8.unpack (name f)) hsType "")
236239 | Nothing <- mstr
237− = left (UnexpectedNull (B8.unpack (typename f)) hsType "")
240+ = left (UnexpectedNull (B8.unpack (typename f)) (maybe "" B8.unpack (name f)) hsType "")
238241 | Just str <- mstr
239242 = case parse str of
240− Left msg -> left (ConversionFailed (B8.unpack (typename f)) hsType msg)
243+ Left msg -> left (ConversionFailed (B8.unpack (typename f)) (maybe "" B8.unpack (name f)) hsType msg)
241244 Right val -> return val
242245{-# INLINE ff #-}
243246
@@ -300,9 +303,10 @@ doFromField f _ _ _ = returnError UnexpectedNull f ""
300303-- exception value and returns it in a 'Left . SomeException'
301304-- constructor.
302305returnError :: forall a err . (Typeable a, Exception err)
303− => (String -> String -> String -> err)
306+ => (String -> String -> String -> String -> err)
304307 -> Field -> String -> Ok a
305308returnError mkErr f = left . mkErr (B.unpack (typename f))
309+ (maybe "" B.unpack (name f))
306310 (show (typeOf (undefined :: a)))
307311
308312atto :: forall a. (Typeable a)
src/Database/PostgreSQL/Simple/FromRow.hs+1
@@ -79,6 +79,7 @@ fieldWith fieldP = RP $ do
7979 [0..ncols-1]
8080 convertError = ConversionFailed
8181 (show (unCol ncols) ++ " values: " ++ show vals)
82+ ""
8283 ("at least " ++ show (unCol column + 1)
8384 ++ " slots in target type")
8485 "mismatch between number of columns to \