Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit dbb07ed

Browse filesBrowse files
blakeembreydougwilson
authored andcommitted
Support non-enumerable properties in object argument to connection.query
closes #2253 closes #2254
1 parent ca84d0a commit dbb07ed
Copy full SHA for dbb07ed

File tree

Expand file treeCollapse file tree

4 files changed

+64
-7
lines changed
Filter options
Expand file treeCollapse file tree

4 files changed

+64
-7
lines changed

‎Changes.md

Copy file name to clipboardExpand all lines: Changes.md
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ you spot any mistakes.
1212
* Fix early detection of bad callback to `connection.query`
1313
* Support Node.js 12.x #2211
1414
* Support Node.js 13.x
15+
* Support non-enumerable properties in object argument to `connection.query` #2253
1516
* Update `bignumber.js` to 9.0.0
1617
* Update `readable-stream` to 2.3.7
1718

‎lib/Connection.js

Copy file name to clipboardExpand all lines: lib/Connection.js
+5-7Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,22 +33,20 @@ Connection.createQuery = function createQuery(sql, values, callback) {
3333
if (typeof sql === 'function') {
3434
cb = sql;
3535
} else if (typeof sql === 'object') {
36-
for (var prop in sql) {
37-
options[prop] = sql[prop];
38-
}
36+
options = Object.create(sql);
3937

4038
if (typeof values === 'function') {
4139
cb = values;
4240
} else if (values !== undefined) {
43-
options.values = values;
41+
Object.defineProperty(options, 'values', { value: values });
4442
}
4543
} else {
46-
options.sql = sql;
47-
options.values = values;
44+
options.sql = sql;
4845

4946
if (typeof values === 'function') {
5047
cb = values;
51-
options.values = undefined;
48+
} else if (values !== undefined) {
49+
options.values = values;
5250
}
5351
}
5452

+29Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
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+
var sqlQuery = Object.create(null, {
7+
sql: {
8+
enumerable : false,
9+
value : 'SELECT ?',
10+
writable : false
11+
},
12+
values: {
13+
enumerable : false,
14+
value : [42],
15+
writable : false
16+
}
17+
});
18+
19+
server.listen(common.fakeServerPort, function (err) {
20+
assert.ifError(err);
21+
22+
connection.query(sqlQuery, [99], function (err, rows) {
23+
assert.ifError(err);
24+
assert.strictEqual(rows.length, 1);
25+
assert.strictEqual(rows[0]['99'], 99);
26+
connection.destroy();
27+
server.destroy();
28+
});
29+
});
+29Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
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+
var sqlQuery = Object.create(null, {
7+
sql: {
8+
enumerable : false,
9+
value : 'SELECT ?',
10+
writable : false
11+
},
12+
values: {
13+
enumerable : false,
14+
value : [42],
15+
writable : false
16+
}
17+
});
18+
19+
server.listen(common.fakeServerPort, function (err) {
20+
assert.ifError(err);
21+
22+
connection.query(sqlQuery, function (err, rows) {
23+
assert.ifError(err);
24+
assert.strictEqual(rows.length, 1);
25+
assert.strictEqual(rows[0]['42'], 42);
26+
connection.destroy();
27+
server.destroy();
28+
});
29+
});

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.