mssql-simple 0.1.0.2 → 0.1.0.3
raw patch · 4 files changed
+51/−52 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- README.md +1/−1
- mssql-simple.cabal +2/−2
- src/Database/MSSQLServer/Query/ResultSet.hs +47/−49
- src/Database/MSSQLServer/Query/RpcQuerySet.hs +1/−0
README.md view
@@ -33,7 +33,7 @@ * 7.1 Revision 1 (SQL Server 2000 SP1 and later) -* Tested with SQL Server 2008 R2+* Tested with SQL Server 2008 R2, SQL Server 2014
mssql-simple.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 4c754e412dcc65dfd60204d142f6236964b73631861dd5cd8396f44c739a2cb8+-- hash: a2df8ed81dd9de80929250fca8c1a1e6d0f352cead28b201c8aa6ed2f1c96799 name: mssql-simple-version: 0.1.0.2+version: 0.1.0.3 synopsis: SQL Server client library implemented in Haskell description: Please see the README on GitHub at <https://github.com/mitsuji/mssql-simple#readme> category: Database
src/Database/MSSQLServer/Query/ResultSet.hs view
@@ -3,6 +3,7 @@ {-# LANGUAGE FlexibleInstances #-} module Database.MSSQLServer.Query.ResultSet ( ResultSet (..)+ , extractTableStreams , Row (..) ) where @@ -18,89 +19,75 @@ instance ResultSet () where- fromTokenStreams = f . extractStreams+ fromTokenStreams = f . extractTableStreams where f [] = () f _ = error "fromTokenStreams: List length must be 0" instance (Row a) => ResultSet [a] where- fromTokenStreams = f . extractStreams+ fromTokenStreams = f . extractTableStreams where- f [v1] = b1+ f [(m1,r1)] = b1 where- !b1 = rowList v1+ !b1 = fromListOfRawBytes m1 <$> r1 f _ = error "fromTokenStreams: List length must be 1" instance (Row a, Row b) => ResultSet ([a],[b]) where- fromTokenStreams = f . extractStreams+ fromTokenStreams = f . extractTableStreams where- f [v1,v2] = (b1,b2)+ f [(m1,r1),(m2,r2)] = (b1,b2) where- !b1 = rowList v1- !b2 = rowList v2+ !b1 = fromListOfRawBytes m1 <$> r1+ !b2 = fromListOfRawBytes m2 <$> r2 f _ = error "fromTokenStreams: List length must be 2" instance (Row a, Row b, Row c) => ResultSet ([a],[b],[c]) where- fromTokenStreams = f . extractStreams+ fromTokenStreams = f . extractTableStreams where- f [v1,v2,v3] = (b1,b2,b3)+ f [(m1,r1),(m2,r2),(m3,r3)] = (b1,b2,b3) where- !b1 = rowList v1- !b2 = rowList v2- !b3 = rowList v3+ !b1 = fromListOfRawBytes m1 <$> r1+ !b2 = fromListOfRawBytes m2 <$> r2+ !b3 = fromListOfRawBytes m3 <$> r3 f _ = error "fromTokenStreams: List length must be 3" instance (Row a, Row b, Row c, Row d) => ResultSet ([a],[b],[c],[d]) where- fromTokenStreams = f . extractStreams+ fromTokenStreams = f . extractTableStreams where- f [v1,v2,v3,v4] = (b1,b2,b3,b4)+ f [(m1,r1),(m2,r2),(m3,r3),(m4,r4)] = (b1,b2,b3,b4) where- !b1 = rowList v1- !b2 = rowList v2- !b3 = rowList v3- !b4 = rowList v4+ !b1 = fromListOfRawBytes m1 <$> r1+ !b2 = fromListOfRawBytes m2 <$> r2+ !b3 = fromListOfRawBytes m3 <$> r3+ !b4 = fromListOfRawBytes m4 <$> r4 f _ = error "fromTokenStreams: List length must be 4" instance (Row a, Row b, Row c, Row d, Row e) => ResultSet ([a],[b],[c],[d],[e]) where- fromTokenStreams = f . extractStreams+ fromTokenStreams = f . extractTableStreams where- f [v1,v2,v3,v4,v5] = (b1,b2,b3,b4,b5)+ f [(m1,r1),(m2,r2),(m3,r3),(m4,r4),(m5,r5)] = (b1,b2,b3,b4,b5) where- !b1 = rowList v1- !b2 = rowList v2- !b3 = rowList v3- !b4 = rowList v4- !b5 = rowList v5+ !b1 = fromListOfRawBytes m1 <$> r1+ !b2 = fromListOfRawBytes m2 <$> r2+ !b3 = fromListOfRawBytes m3 <$> r3+ !b4 = fromListOfRawBytes m4 <$> r4+ !b5 = fromListOfRawBytes m5 <$> r5 f _ = error "fromTokenStreams: List length must be 5" - --- (TSColMetaData,[TSRow])-rowList :: (Row a) => (TokenStream,[TokenStream]) -> [a]-rowList = \(tsCmd,tsRss) ->- let (TSColMetaData (maybeCmd)) = tsCmd- cds = case (\(ColMetaData x) -> x) <$> maybeCmd of- Nothing -> error "rowList: ColMetaData is necessary"- Just cds' -> cds'- datas = (\(TSRow row) -> rawBytes <$> row) <$> tsRss- in map (fromListOfRawBytes cds) datas- where- rawBytes :: RowColumnData -> RawBytes- rawBytes (RCDOrdinal dt) = dt- rawBytes (RCDLarge _ _ dt) = dt ---- [(TSColMetaData,[TSRow])]-extractStreams :: [TokenStream] -> [(TokenStream,[TokenStream])]-extractStreams = f . ( filter $ \x -> isTSColMetaData x || isTSRow x )+extractTableStreams :: [TokenStream] -> [([MetaColumnData],[[RawBytes]])]+extractTableStreams = map extract . span' . ( filter $ \x -> isTSColMetaData x || isTSRow x ) where- f :: [TokenStream] -> [(TokenStream,[TokenStream])]- f [] = []- f (cmd:xs) =+ -- [(TSColMetaData,[TSRow])]+ span' :: [TokenStream] -> [(TokenStream,[TokenStream])]+ span' [] = []+ span' (cmd@TSColMetaData{}:xs) = let (rs,xs') = span isTSRow xs- in (cmd,rs):f xs'+ in (cmd,rs):span' xs'+ span' _ = error "extractTableStrams: TSColMetaData is necesarry" isTSColMetaData :: TokenStream -> Bool isTSColMetaData (TSColMetaData{}) = True@@ -110,7 +97,18 @@ isTSRow (TSRow{}) = True isTSRow _ = False -+ extract :: (TokenStream,[TokenStream]) -> ([MetaColumnData],[[RawBytes]])+ extract = \(tsCmd,tsRss) ->+ let (TSColMetaData (maybeCmd)) = tsCmd+ cds = case (\(ColMetaData x) -> x) <$> maybeCmd of+ Nothing -> error "extractTableStrams: ColMetaData is necessary"+ Just cds' -> cds'+ datas = (\(TSRow row) -> rawBytes <$> row) <$> tsRss+ in (cds, datas)+ where+ rawBytes :: RowColumnData -> RawBytes+ rawBytes (RCDOrdinal dt) = dt+ rawBytes (RCDLarge _ _ dt) = dt mcdTypeInfo :: MetaColumnData -> TypeInfo
src/Database/MSSQLServer/Query/RpcQuerySet.hs view
@@ -11,6 +11,7 @@ , RpcParamSet (..) , RpcParam (..) , RpcParamName+ , rpcReqBatchParam ) where