Skip to content

Commit 4031e2d

Browse files
committed
Support for setting rowsAsArray per query.
1 parent b7999b0 commit 4031e2d

File tree

3 files changed

+17
-2
lines changed

3 files changed

+17
-2
lines changed

lib/protocol/Parser.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ function Parser(options) {
2121
this._nextPacketNumber = 0;
2222
this._encoding = 'utf-8';
2323
this._paused = false;
24-
this._rowsAsArray = options.config && options.config.rowsAsArray;
24+
this._rowsAsArray = options.config && options.config.rowsAsArray;
2525
}
2626

2727
Parser.prototype.write = function write(chunk) {
@@ -411,8 +411,12 @@ Parser.prototype.packetLength = function packetLength() {
411411
return this._packetHeader.length + this._longPacketBuffers.size;
412412
};
413413

414+
Parser.prototype.setArrayRowMode = function(isArrayRowMode) {
415+
this._isArrayRowMode = typeof isArrayRowMode === 'undefined' ? this._rowsAsArray : isArrayRowMode;
416+
};
417+
414418
Parser.prototype.isArrayRowMode = function() {
415-
return this._rowsAsArray;
419+
return this._isArrayRowMode;
416420
};
417421

418422
Parser.prototype._combineNextBuffers = function _combineNextBuffers(bytes) {

lib/protocol/sequences/Query.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ function Query(options, callback) {
1717
? true
1818
: options.typeCast;
1919
this.nestTables = options.nestTables || false;
20+
this.isArrayRowMode = options.rowsAsArray;
2021

2122
this._resultSet = null;
2223
this._results = [];
@@ -138,6 +139,8 @@ Query.prototype._handleFinalResultPacket = function(packet) {
138139
};
139140

140141
Query.prototype['RowDataPacket'] = function(packet, parser, connection) {
142+
parser.setArrayRowMode(this.isArrayRowMode);
143+
141144
packet.parse(parser, this._resultSet.fieldPackets, this.typeCast, this.nestTables, connection);
142145

143146
var row = packet.isArray() ? packet.getArrayValue() : packet;

test/integration/connection/test-query-rows-as-array.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,13 @@ common.getTestConnection({ rowsAsArray: true }, function (err, connection) {
1414
assert.deepEqual(rows, [[1]]);
1515
});
1616

17+
connection.query({
18+
sql: 'SELECT ?',
19+
rowsAsArray: false
20+
}, [ 1 ], function (err, rows) {
21+
assert.ifError(err);
22+
assert.deepEqual(rows, [{1: 1}]);
23+
});
24+
1725
connection.end(assert.ifError);
1826
});

0 commit comments

Comments
 (0)