@@ -16,7 +16,7 @@ import Data.Traversable
16
16
import Data.Foldable
17
17
import Control.Applicative
18
18
import Data.Monoid
19
- import Control.Concurrent (forkIO , killThread , ThreadId )
19
+ import Control.Concurrent (forkIO , killThread , ThreadId , threadDelay )
20
20
import Data.Binary.Get ( runGetIncremental , pushChunk )
21
21
import qualified Data.Binary.Get as BG (Decoder (.. ))
22
22
import Data.Maybe (fromJust )
@@ -107,7 +107,6 @@ readAuthMessage s =
107
107
receiverThread :: UnixSocket -> InChan ServerMessage -> IO ()
108
108
receiverThread sock chan = forever $ do
109
109
r <- receive sock 4096 mempty
110
- print r
111
110
go r
112
111
where
113
112
decoder = runGetIncremental decodeServerMessage
@@ -119,53 +118,43 @@ receiverThread sock chan = forever $ do
119
118
BG. Partial _ -> error " Partial"
120
119
BG. Fail _ _ e -> error e
121
120
122
- -- data QQuery a = QQuery
123
- -- { qName :: B.ByteString
124
- -- , qStmt :: B.ByteString
125
- -- , qOids :: V.Vector Oid
126
- -- , qValues :: V.Vector B.ByteString
127
- -- } deriving Show
128
-
129
- -- query1 = QQuery "test1" "SELECT $1 + $2" [23, 23] ["1", "3"]
130
- -- query2 = QQuery "test2" "SELECT $1 + $2" [23, 23] ["2", "3"]
131
- -- query3 = QQuery "test3" "SELECT $1 + $2" [23, 23] ["3", "3"]
132
- -- query4 = QQuery "test4" "SELECT $1 + $2" [23, 23] ["4", "3"]
133
- -- query5 = QQuery "test5" "SELECT $1 + $2" [23, 23] ["5", "3"]
121
+ data Query = Query
122
+ { qStatement :: B. ByteString
123
+ , qOids :: V. Vector Oid
124
+ , qValues :: V. Vector B. ByteString
125
+ } deriving (Show )
126
+
127
+ query1 = Query " SELECT $1 + $2" [Oid 23 , Oid 23 ] [" 1" , " 3" ]
128
+ query2 = Query " SELECT $1 + $2" [Oid 23 , Oid 23 ] [" 2" , " 3" ]
129
+ query3 = Query " SELECT $1 + $2" [Oid 23 , Oid 23 ] [" 3" , " 3" ]
130
+ query4 = Query " SELECT $1 + $2" [Oid 23 , Oid 23 ] [" 4" , " 3" ]
131
+ query5 = Query " SELECT * FROM a where v > $1 + $2 LIMIT 100" [Oid 23 , Oid 23 ] [" 5" , " 3" ]
134
132
-- query1 = QQuery "test1" "select sum(v) from a" [] []
135
133
-- query2 = QQuery "test2" "select sum(v) from a" [] []
136
134
-- query3 = QQuery "test3" "select sum(v) from a" [] []
137
135
-- query4 = QQuery "test4" "select sum(v) from a" [] []
138
136
-- query5 = QQuery "test5" "select sum(v) from a" [] []
139
137
140
- -- sendBatch :: Connection -> [QQuery] -> IO ()
141
- -- sendBatch (Connection s _) qs = do
142
- -- traverse sendSingle $ take 5 qs
143
- -- sendMessage s $ encodeClientMessage Sync
144
- -- where
145
- -- sendSingle q = do
146
- -- sendMessage s $ encodeClientMessage $
147
- -- Parse (qName q) (qStmt q) (qOids q)
148
- -- sendMessage s $ encodeClientMessage $
149
- -- Bind (qName q) (qName q) Text (qValues q) Text
150
- -- sendMessage s $ encodeClientMessage $ Execute (qName q)
151
-
152
-
153
- -- sendQuery :: Connection -> IO ()
154
- -- sendQuery (Connection s _) = do
155
- -- sendMessage s $ encodeClientMessage $ Parse "test" "SELECT $1 + $2" [23, 23]
156
- -- sendMessage s $ encodeClientMessage $
157
- -- Bind "test" "test" Text ["2", "3"] Text
158
- -- sendMessage s $ encodeClientMessage $ Execute "test"
159
- -- sendMessage s $ encodeClientMessage Sync
160
-
161
- -- test :: IO ()
162
- -- test = do
163
- -- c <- connect defaultConnectionSettings
164
- -- -- sendQuery c
165
- -- getPOSIXTime >>= \t -> print "Start " >> print t
166
- -- sendBatch c [query1, query2, query3, query4, query5]
167
- -- threadDelay $ 5 * 1000 * 1000
168
- -- close c
138
+ sendBatch :: Connection -> [Query ] -> IO ()
139
+ sendBatch conn qs = do
140
+ traverse sendSingle $ take 5 qs
141
+ sendMessage s Sync
142
+ where
143
+ s = connSocket conn
144
+ sendSingle q = do
145
+ let sname = StatementName " "
146
+ pname = PortalName " "
147
+ sendMessage s $ Parse sname (StatementSQL $ qStatement q) (qOids q)
148
+ sendMessage s $ Bind pname sname Text (qValues q) Text
149
+ sendMessage s $ Execute pname noLimitToReceive
150
+
151
+
152
+ test :: IO ()
153
+ test = do
154
+ c <- connect defaultConnectionSettings
155
+ sendBatch c [query1, query2, query3, query4, query5]
156
+ threadDelay $ 1 * 1000 * 1000
157
+ close c
169
158
170
159
171
160
-- sendBatchAndSync :: IsQuery a => [a] -> Connection -> IO ()
@@ -187,20 +176,3 @@ receiverThread sock chan = forever $ do
187
176
188
177
-- data Request = forall a . Request (QQuery a)
189
178
190
- -- query :: Decode a => QQuery a -> Session a
191
- -- query q = Send One [Request q] $ Receive Done
192
-
193
-
194
-
195
- -- sendBatch :: Connection -> [Request] -> IO ()
196
- -- sendBatch (Connection s _ _) rs = do
197
- -- traverse sendSingle rs
198
- -- sendMessage s $ encodeClientMessage Sync
199
- -- where
200
- -- sendSingle (Request q) = do
201
- -- sendMessage s $ encodeClientMessage $
202
- -- Parse (qName q) (qStmt q) (qOids q)
203
- -- sendMessage s $ encodeClientMessage $
204
- -- Bind (qName q) (qName q) Text (qValues q) Text
205
- -- sendMessage s $ encodeClientMessage $ Execute (qName q)
206
-
0 commit comments