git.iko.soy/typeable/postgresql-simple
on master help sign in
Integrate type info with array unmarshalling.
commitaf0201e290bc8957b801775de22d538c1758ed12 authorJason Dusek <jason.dusek@gmail.com> dateThu 16 Aug 2012, 10:57 (14 years ago) parentcfbdca9
1 file changed+9−2
src/Database/PostgreSQL/Simple/FromField.hs+9−2
src/Database/PostgreSQL/Simple/FromField.hs+9−2
@@ -53,6 +53,7 @@ import Data.ByteString (ByteString)
5353import qualified Data.ByteString.Char8 as B
5454import Data.Int (Int16, Int32, Int64)
5555import Data.List (foldl')
56+import Data.Maybe (fromMaybe)
5657import Data.Ratio (Ratio)
5758import Data.Sequence (Seq)
5859import qualified Data.Sequence as S
@@ -250,8 +251,14 @@ instance (FromField a, Typeable a) => FromField (Seq a) where
250251 (parseOnly (fromArray ',' f) (maybe "" id dat))
251252
252253fromArray :: (FromField a) => Char -> Field -> Parser (Ok [a])
253−fromArray delim f = sequence . (fromField f . Just
254− . fmt delim <$>) <$> array delim
254+fromArray delim f = sequence . (parseIt <$>) <$> array delim
255+ where
256+ fElem = f{ typeinfo = TypeInfo tElem Nothing }
257+ tInfo = typeinfo f
258+ tElem = fromMaybe (typ tInfo) (typelem tInfo)
259+ parseIt item = (fromField f' . Just . fmt delim) item
260+ where f' | Array _ <- item = f
261+ | otherwise = fElem
255262
256263newtype Compat = Compat Word64
257264