@@ -24,7 +24,6 @@ final class PostgreSQLClient {
24
24
func send( _ message: PostgreSQLMessage ) -> Future < [ PostgreSQLMessage ] > {
25
25
var responses : [ PostgreSQLMessage ] = [ ]
26
26
return queueStream. enqueue ( [ message] ) { message in
27
- print ( message)
28
27
responses. append ( message)
29
28
switch message {
30
29
case . readyForQuery: return true
@@ -36,6 +35,16 @@ final class PostgreSQLClient {
36
35
}
37
36
}
38
37
38
+ /// Sends a simple PostgreSQL query command, collecting the parsed results.
39
+ func query( _ string: String ) -> Future < [ [ String : PostgreSQLData ] ] > {
40
+ var rows : [ [ String : PostgreSQLData ] ] = [ ]
41
+ return query ( string) { row in
42
+ rows. append ( row)
43
+ } . map ( to: [ [ String : PostgreSQLData ] ] . self) {
44
+ return rows
45
+ }
46
+ }
47
+
39
48
/// Sends a simple PostgreSQL query command, returning the parsed results to
40
49
/// the supplied closure.
41
50
func query( _ string: String , onRow: @escaping ( [ String : PostgreSQLData ] ) -> ( ) ) -> Future < Void > {
@@ -58,16 +67,21 @@ final class PostgreSQLClient {
58
67
}
59
68
}
60
69
61
- /// Sends a simple PostgreSQL query command, collecting the parsed results.
62
- func query( _ string: String ) -> Future < [ [ String : PostgreSQLData ] ] > {
70
+ /// Sends a parameterized PostgreSQL query command, collecting the parsed results.
71
+ func parameterizedQuery(
72
+ _ string: String ,
73
+ _ parameters: [ PostgreSQLData ] = [ ]
74
+ ) throws -> Future < [ [ String : PostgreSQLData ] ] > {
63
75
var rows : [ [ String : PostgreSQLData ] ] = [ ]
64
- return query ( string) { row in
76
+ return try parameterizedQuery ( string, parameters ) { row in
65
77
rows. append ( row)
66
78
} . map ( to: [ [ String : PostgreSQLData ] ] . self) {
67
79
return rows
68
80
}
69
81
}
70
82
83
+ /// Sends a parameterized PostgreSQL query command, returning the parsed results to
84
+ /// the supplied closure.
71
85
func parameterizedQuery(
72
86
_ string: String ,
73
87
_ parameters: [ PostgreSQLData ] = [ ] ,
@@ -85,15 +99,15 @@ final class PostgreSQLClient {
85
99
parameters: parameters. map { try . serialize( data: $0) } ,
86
100
resultFormatCodes: [ . binary]
87
101
)
102
+ let describe = PostgreSQLDescribeRequest ( type: . portal, name: " " )
88
103
let execute = PostgreSQLExecuteRequest (
89
104
portalName: " " ,
90
105
maxRows: 0
91
106
)
92
107
var currentRow : PostgreSQLRowDescription ?
93
108
return queueStream. enqueue ( [
94
- . parse( parse) , . bind( bind) , . execute( execute) , . sync
109
+ . parse( parse) , . bind( bind) , . describe ( describe ) , . execute( execute) , . sync
95
110
] ) { message in
96
- print ( message)
97
111
switch message {
98
112
case . errorResponse( let e) : throw e
99
113
case . parseComplete: return false
@@ -157,7 +171,7 @@ public final class AsymmetricQueueStream<I, O>: Stream, ConnectionContext {
157
171
for o in output {
158
172
self . queuedOutput. insert ( o, at: 0 )
159
173
}
160
- upstream!. request ( count: UInt ( output . count ) )
174
+ upstream!. request ( count: 1 )
161
175
update ( )
162
176
return input. promise. future
163
177
}
0 commit comments