@@ -73,8 +73,22 @@ function Connection(options = {}) {
73
73
} )
74
74
}
75
75
76
- function oncomplete ( ) {
77
- backend . query . cursor && socket . write ( frontend . Close ( ) )
76
+ function oncomplete ( result ) {
77
+ if ( backend . query . cursor ) {
78
+ if ( result . length ) {
79
+ // emit final chunk to cursor handler
80
+ new Promise ( r => r ( backend . query . cursor (
81
+ backend . query . cursor . rows === 1 ? result [ 0 ] : result
82
+ ) ) ) . then ( ( ) => {
83
+ socket . write ( frontend . Close ( ) )
84
+ } ) . catch ( err => {
85
+ rejectQuery ( backend . query , err )
86
+ socket . write ( frontend . Close ( ) )
87
+ } )
88
+ } else {
89
+ socket . write ( frontend . Close ( ) )
90
+ }
91
+ }
78
92
}
79
93
80
94
function onparse ( ) {
@@ -207,14 +221,18 @@ function Connection(options = {}) {
207
221
if ( query . origin ) {
208
222
err . stack += query . origin . replace ( / .* \n / , '\n' )
209
223
}
210
- Object . defineProperty ( err , 'query' , {
211
- value : query . str ,
212
- enumerable : ! ! options . debug
213
- } )
214
- Object . defineProperty ( err , 'parameters' , {
215
- value : query . args ,
216
- enumerable : ! ! options . debug
217
- } )
224
+ if ( ! err . query ) {
225
+ Object . defineProperty ( err , 'query' , {
226
+ value : query . str ,
227
+ enumerable : ! ! options . debug
228
+ } )
229
+ }
230
+ if ( ! err . parameters ) {
231
+ Object . defineProperty ( err , 'parameters' , {
232
+ value : query . args ,
233
+ enumerable : ! ! options . debug
234
+ } )
235
+ }
218
236
query . reject ( err )
219
237
}
220
238
0 commit comments