Skip to content

Commit cfff0b9

Browse files
author
HZ111 / Dev2
committed
Move all logic for prebuilding objects to Result
1 parent 2172d4e commit cfff0b9

File tree

2 files changed

+14
-17
lines changed

2 files changed

+14
-17
lines changed

packages/pg/lib/query.js

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ class Query extends EventEmitter {
3131
this.isPreparedStatement = false
3232
this._canceledDueToError = false
3333
this._promise = null
34-
this._prebuiltEmptyResultObject = null
3534
}
3635

3736
requiresPreparation() {
@@ -65,7 +64,6 @@ class Query extends EventEmitter {
6564
}
6665
this._result = new Result(this._rowMode, this.types)
6766
this._results.push(this._result)
68-
this._prebuiltEmptyResultObject = null
6967
}
7068
}
7169

@@ -85,12 +83,8 @@ class Query extends EventEmitter {
8583
return
8684
}
8785

88-
if (!this._prebuiltEmptyResultObject) {
89-
this._createPrebuiltEmptyResultObject()
90-
}
91-
9286
try {
93-
row = this._result.parseRow(msg.fields, { ... this._prebuiltEmptyResultObject })
87+
row = this._result.parseRow(msg.fields)
9488
} catch (err) {
9589
this._canceledDueToError = err
9690
return
@@ -242,13 +236,6 @@ class Query extends EventEmitter {
242236
handleCopyData(msg, connection) {
243237
// noop
244238
}
245-
_createPrebuiltEmptyResultObject() {
246-
var row = {};
247-
for (var i = 0; i < this._result.fields.length; i++) {
248-
row[this._result.fields[i].name] = null
249-
}
250-
this._prebuiltEmptyResultObject = row
251-
}
252239
}
253240

254241
module.exports = Query

packages/pg/lib/result.js

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ class Result {
2121
if (this.rowAsArray) {
2222
this.parseRow = this._parseRowAsArray
2323
}
24+
this._prebuiltEmptyResultObject = null
2425
}
2526

2627
// adds a command complete message
@@ -59,14 +60,16 @@ class Result {
5960
return row
6061
}
6162

62-
parseRow(rowData, row = {}) {
63+
parseRow(rowData) {
64+
if (!this._prebuiltEmptyResultObject) {
65+
this._createPrebuiltEmptyResultObject()
66+
}
67+
var row = { ... this._prebuiltEmptyResultObject }
6368
for (var i = 0, len = rowData.length; i < len; i++) {
6469
var rawValue = rowData[i]
6570
var field = this.fields[i].name
6671
if (rawValue !== null) {
6772
row[field] = this._parsers[i](rawValue)
68-
} else {
69-
row[field] = null
7073
}
7174
}
7275
return row
@@ -94,6 +97,13 @@ class Result {
9497
}
9598
}
9699
}
100+
_createPrebuiltEmptyResultObject() {
101+
var row = {};
102+
for (var i = 0; i < this.fields.length; i++) {
103+
row[this.fields[i].name] = null
104+
}
105+
this._prebuiltEmptyResultObject = row
106+
}
97107
}
98108

99109
module.exports = Result

0 commit comments

Comments
 (0)