@@ -53,6 +53,7 @@ import Data.ByteString (ByteString)
53import qualified Data.ByteString.Char8 as B
53import qualified Data.ByteString.Char8 as B
54import Data.Int (Int16, Int32, Int64)
54import Data.Int (Int16, Int32, Int64)
55import Data.List (foldl')
55import Data.List (foldl')
56+import Data.Maybe (fromMaybe)
56import Data.Ratio (Ratio)
57import Data.Ratio (Ratio)
57import Data.Sequence (Seq)
58import Data.Sequence (Seq)
58import qualified Data.Sequence as S
59import qualified Data.Sequence as S
@@ -250,8 +251,14 @@ instance (FromField a, Typeable a) => FromField (Seq a) where
250 (parseOnly (fromArray ',' f) (maybe "" id dat))
251 (parseOnly (fromArray ',' f) (maybe "" id dat))
252fromArray :: (FromField a) => Char -> Field -> Parser (Ok [a])
253fromArray :: (FromField a) => Char -> Field -> Parser (Ok [a])
253−fromArray delim f = sequence . (fromField f . Just
254+fromArray delim f = sequence . (parseIt <$>) <$> array delim
254− . fmt delim <$>) <$> array delim
255+ where
256+ fElem = f{ typeinfo = TypeInfo tElem Nothing }
258+ tElem = fromMaybe (typ tInfo) (typelem tInfo)
259+ parseIt item = (fromField f' . Just . fmt delim) item
260+ where f' | Array _ <- item = f
256newtype Compat = Compat Word64
263newtype Compat = Compat Word64