hasql 0.19.9 → 0.19.10
raw patch · 4 files changed
+112/−2 lines, 4 filesdep ~basedep ~postgresql-binaryPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base, postgresql-binary
API changes (from Hackage documentation)
Files
- hasql.cabal +26/−2
- tasty/Main.hs +21/−0
- threads-test/Main.hs +45/−0
- threads-test/Main/Queries.hs +20/−0
hasql.cabal view
@@ -1,7 +1,7 @@ name: hasql version:- 0.19.9+ 0.19.10 category: Hasql, Database, PostgreSQL synopsis:@@ -74,7 +74,7 @@ -- parsing: attoparsec >= 0.10 && < 0.14, -- database:- postgresql-binary >= 0.8 && < 0.9,+ postgresql-binary >= 0.9 && < 0.10, postgresql-libpq == 0.9.*, -- builders: bytestring-tree-builder >= 0.2.5 && < 0.3,@@ -134,6 +134,30 @@ QuickCheck >= 2.8.1 && < 2.9, -- general: data-default-class,+ -- base,+ rebase+++test-suite threads-test+ type:+ exitcode-stdio-1.0+ hs-source-dirs:+ threads-test+ main-is:+ Main.hs+ other-modules:+ Main.Queries+ ghc-options:+ -O2+ -threaded+ "-with-rtsopts=-N"+ default-extensions:+ Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples+ default-language:+ Haskell2010+ build-depends:+ -- database:+ hasql, -- base, rebase
tasty/Main.hs view
@@ -22,6 +22,27 @@ localOption (NumThreads 1) $ testGroup "All tests" [+ testCase "Empty array" $+ let+ io =+ do+ x <- Connection.with (Session.run session)+ assertEqual (show x) (Right (Right [])) x+ where+ session =+ Session.query () query+ where+ query =+ Query.statement sql encoder decoder True+ where+ sql =+ "select array[]::int8[]"+ encoder =+ Encoders.unit+ decoder =+ Decoders.singleRow (Decoders.value (Decoders.array (Decoders.arrayDimension replicateM (Decoders.arrayValue Decoders.int8))))+ in io+ , testCase "Failing prepared statements" $ let io =
+ threads-test/Main.hs view
@@ -0,0 +1,45 @@+module Main where++import Rebase.Prelude+import qualified Hasql.Connection+import qualified Hasql.Query+import qualified Hasql.Encoders+import qualified Hasql.Decoders+import qualified Hasql.Session+import qualified Main.Queries as Queries+++main =+ acquire >>= use+ where+ acquire =+ (,) <$> acquire <*> acquire+ where+ acquire =+ join $+ fmap (either (fail . show) return) $+ Hasql.Connection.acquire connectionSettings+ where+ connectionSettings =+ Hasql.Connection.settings "localhost" 5432 "postgres" "" "postgres"+ use (connection1, connection2) =+ do+ beginVar <- newEmptyMVar+ finishVar <- newEmptyMVar+ forkIO $ do+ traceM "1: in"+ putMVar beginVar ()+ session connection1 (Hasql.Session.query 0.2 Queries.selectSleep)+ traceM "1: out"+ void (tryPutMVar finishVar False)+ forkIO $ do+ takeMVar beginVar+ traceM "2: in"+ session connection2 (Hasql.Session.query 0.1 Queries.selectSleep)+ traceM "2: out"+ void (tryPutMVar finishVar True)+ bool exitFailure exitSuccess . traceShowId =<< takeMVar finishVar+ where+ session connection session =+ Hasql.Session.run session connection >>=+ either (fail . show) return
+ threads-test/Main/Queries.hs view
@@ -0,0 +1,20 @@+module Main.Queries where++import Rebase.Prelude+import Hasql.Query+import qualified Hasql.Encoders as E+import qualified Hasql.Decoders as D+++selectSleep :: Query Double ()+selectSleep =+ statement sql encoder decoder True+ where+ sql =+ "select pg_sleep($1)"+ encoder =+ E.value E.float8+ decoder =+ D.unit++