Skip to content

Commit 9cf7153

Browse files
committed
Make only column names enumerable in RowDataPacket
closes #549 fixes #895
1 parent 00afe4d commit 9cf7153

File tree

3 files changed

+47
-4
lines changed

3 files changed

+47
-4
lines changed

Changes.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ you spot any mistakes.
88

99
* Add `enqueue` event to protocol and connection #381
1010
* Blacklist unsupported connection flags #881
11+
* Make only column names enumerable in `RowDataPacket` #549 #895
1112

1213
## v2.4.3 (2014-08-25)
1314

lib/protocol/packets/RowDataPacket.js

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,19 @@ module.exports = RowDataPacket;
77
function RowDataPacket() {
88
}
99

10-
RowDataPacket.prototype.parse = function(parser, fieldPackets, typeCast, nestTables, connection) {
10+
Object.defineProperty(RowDataPacket.prototype, 'parse', {
11+
configurable: true,
12+
enumerable: false,
13+
value: parse
14+
});
15+
16+
Object.defineProperty(RowDataPacket.prototype, '_typeCast', {
17+
configurable: true,
18+
enumerable: false,
19+
value: typeCast
20+
});
21+
22+
function parse(parser, fieldPackets, typeCast, nestTables, connection) {
1123
var self = this;
1224
var next = function () {
1325
return self._typeCast(fieldPacket, parser, connection.config.timezone, connection.config.supportBigNumbers, connection.config.bigNumberStrings, connection.config.dateStrings);
@@ -36,9 +48,9 @@ RowDataPacket.prototype.parse = function(parser, fieldPackets, typeCast, nestTab
3648
this[fieldPacket.name] = value;
3749
}
3850
}
39-
};
51+
}
4052

41-
RowDataPacket.prototype._typeCast = function(field, parser, timeZone, supportBigNumbers, bigNumberStrings, dateStrings) {
53+
function typeCast(field, parser, timeZone, supportBigNumbers, bigNumberStrings, dateStrings) {
4254
var numberString;
4355

4456
switch (field.type) {
@@ -105,4 +117,4 @@ RowDataPacket.prototype._typeCast = function(field, parser, timeZone, supportBig
105117
default:
106118
return parser.parseLengthCodedString();
107119
}
108-
};
120+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
var assert = require('assert');
2+
var common = require('../../common');
3+
var connection = common.createConnection({port: common.fakeServerPort});
4+
5+
var server = common.createFakeServer();
6+
7+
server.listen(common.fakeServerPort, function (err) {
8+
assert.ifError(err);
9+
10+
connection.query('SELECT CURRENT_USER()', function (err, rows) {
11+
assert.ifError(err);
12+
assert.equal(rows.length, 1);
13+
14+
var row = rows[0];
15+
var keys = Object.keys(row).sort();
16+
17+
assert.equal(keys.length, 1);
18+
assert.deepEqual(keys, ['CURRENT_USER()']);
19+
20+
var forin = [];
21+
for (var column in row) {
22+
forin.push(column);
23+
}
24+
25+
assert.deepEqual(forin, keys);
26+
27+
connection.destroy();
28+
server.destroy();
29+
});
30+
});

0 commit comments

Comments
 (0)