Skip to content

Commit 5f10b4a

Browse files
authored
Merge pull request #400 from plusmancn/add_changed_rows
feat: issue#288
2 parents d30c40a + 51638be commit 5f10b4a

File tree

2 files changed

+56
-0
lines changed

2 files changed

+56
-0
lines changed

lib/packets/resultset_header.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,15 @@ function ResultSetHeader (packet, bigNumberStrings, encoding)
1818
this.infileName = packet.readString(undefined, encoding);
1919
}
2020

21+
// issue#288: Add changedRow if exists, reference to https://github.com/sidorares/node-mysql2/issues/288
22+
if (encoding) {
23+
var message = packet.readString(undefined, encoding);
24+
var m = message.match(/\schanged:\s*(\d+)/i);
25+
if (m !== null) {
26+
this.changedRows = parseInt(m[1], 10);
27+
}
28+
}
29+
2130
// snippet from mysql-native:
2231
// res.affected_rows = this.lcnum();
2332
// res.insert_id = this.lcnum();
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/**
2+
* <[email protected]> created at 2016.09.17 15:24:34
3+
*
4+
* issue#288: https://github.com/sidorares/node-mysql2/issues/288
5+
*/
6+
var common = require('../../common');
7+
var connection = common.createConnection();
8+
var assert = require('assert');
9+
10+
var result1 = undefined;
11+
var result2 = undefined;
12+
13+
// connection.
14+
connection.query([
15+
'CREATE TEMPORARY TABLE `changed_rows` (',
16+
'`id` int(11) unsigned NOT NULL AUTO_INCREMENT,',
17+
'`value` int(5) NOT NULL,',
18+
'PRIMARY KEY (`id`)',
19+
') ENGINE=InnoDB DEFAULT CHARSET=utf8'
20+
].join('\n'));
21+
connection.query('insert into changed_rows(value) values(1)');
22+
connection.query('insert into changed_rows(value) values(1)');
23+
connection.query('insert into changed_rows(value) values(2)');
24+
connection.query('insert into changed_rows(value) values(3)');
25+
26+
connection.execute('update changed_rows set value=1', [], function (err, _result) {
27+
if (err) {
28+
throw err;
29+
}
30+
31+
result1 = _result;
32+
connection.execute('update changed_rows set value=1', [], function (err, _result) {
33+
if (err) {
34+
throw err;
35+
}
36+
37+
result2 = _result;
38+
connection.end();
39+
});
40+
});
41+
42+
process.on('exit', function () {
43+
assert.equal(result1.affectedRows, 4);
44+
assert.equal(result1.changedRows, 2);
45+
assert.equal(result2.affectedRows, 4);
46+
assert.equal(result2.changedRows, 0);
47+
});

0 commit comments

Comments
 (0)