Skip to content

Commit ac3102e

Browse files
committed
Add support for pg-native multi-row result
1 parent 28b330c commit ac3102e

File tree

3 files changed

+22
-15
lines changed

3 files changed

+22
-15
lines changed

lib/native/query.js

+14-10
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ NativeQuery.prototype.submit = function (client) {
9191
this.native = client.native
9292
client.native.arrayMode = this._arrayMode
9393

94-
var after = function (err, rows) {
94+
var after = function (err, rows, results) {
9595
client.native.arrayMode = false
9696
setImmediate(function () {
9797
self.emit('_done')
@@ -102,22 +102,26 @@ NativeQuery.prototype.submit = function (client) {
102102
return self.handleError(err)
103103
}
104104

105-
var result = new NativeResult()
106-
result.addCommandComplete(self.native.pq)
107-
result.rows = rows
108-
109105
// emit row events for each row in the result
110106
if (self._emitRowEvents) {
111-
rows.forEach(function (row) {
112-
self.emit('row', row, result)
113-
})
107+
if (results.length > 1) {
108+
rows.forEach((rowOfRows, i) => {
109+
rowOfRows.forEach(row => {
110+
self.emit('row', row, results[i])
111+
})
112+
})
113+
} else {
114+
rows.forEach(function (row) {
115+
self.emit('row', row, results)
116+
})
117+
}
114118
}
115119

116120
// handle successful result
117121
self.state = 'end'
118-
self.emit('end', result)
122+
self.emit('end', results)
119123
if (self.callback) {
120-
self.callback(null, result)
124+
self.callback(null, results)
121125
}
122126
}
123127

test/integration/client/row-description-on-results-tests.js

+2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ var conInfo = helper.config
77

88
var checkResult = function (result) {
99
assert(result.fields)
10+
console.log('YOU ARE HERE')
11+
console.log('result!!', result)
1012
assert.equal(result.fields.length, 3)
1113
var fields = result.fields
1214
assert.equal(fields[0].name, 'now')

test/integration/client/simple-query-tests.js

+6-5
Original file line numberDiff line numberDiff line change
@@ -49,16 +49,17 @@ test('prepared statements do not mutate params', function () {
4949

5050
client.on('drain', client.end.bind(client))
5151

52+
const rows = []
5253
query.on('row', function (row, result) {
5354
assert.ok(result)
54-
result.addRow(row)
55+
rows.push(row)
5556
})
5657

5758
query.on('end', function (result) {
58-
assert.lengthIs(result.rows, 26, 'result returned wrong number of rows')
59-
assert.lengthIs(result.rows, result.rowCount)
60-
assert.equal(result.rows[0].name, 'Aaron')
61-
assert.equal(result.rows[25].name, 'Zanzabar')
59+
assert.lengthIs(rows, 26, 'result returned wrong number of rows')
60+
assert.lengthIs(rows, result.rowCount)
61+
assert.equal(rows[0].name, 'Aaron')
62+
assert.equal(rows[25].name, 'Zanzabar')
6263
})
6364
})
6465

0 commit comments

Comments
 (0)