@@ -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