Skip to content

Commit 21d8bad

Browse files
committed
add tests
1 parent 1720920 commit 21d8bad

File tree

4 files changed

+75
-7
lines changed

4 files changed

+75
-7
lines changed

lib/protocol/packets/RowDataPacket.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
var Types = require('../constants/types');
2-
var Charsets = require('../constants/charsets');
3-
var Field = require('./Field');
4-
var IEEE_754_BINARY_64_PRECISION = Math.pow(2, 53);
1+
var Types = require('../constants/types');
2+
var Charsets = require('../constants/charsets');
3+
var Field = require('./Field');
54

65
module.exports = RowDataPacket;
76
function RowDataPacket() {
@@ -100,8 +99,7 @@ function typeCast(field, parser, timeZone, supportBigNumbers, bigNumberStrings,
10099
numberString = parser.parseLengthCodedString();
101100
return (numberString === null || (field.zeroFill && numberString[0] == "0"))
102101
? numberString
103-
: ((supportBigNumbers && (bigNumberStrings || (Number(numberString) > IEEE_754_BINARY_64_PRECISION)))
104-
? numberString
102+
: ((supportBigNumbers && (bigNumberStrings || (Number(numberString) > Number.MAX_SAFE_INTEGER || Number(numberString) < Number.MIN_SAFE_INTEGER))) ? numberString
105103
: Number(numberString));
106104
case Types.BIT:
107105
return parser.parseLengthCodedBuffer();

test/common.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,8 @@ function mergeTestConfig(config) {
149149
host : process.env.MYSQL_HOST,
150150
port : process.env.MYSQL_PORT,
151151
user : process.env.MYSQL_USER,
152-
password : process.env.MYSQL_PASSWORD
152+
password : process.env.MYSQL_PASSWORD,
153+
supportBigNumbers: true,
153154
}, config);
154155

155156
return config;
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
var assert = require('assert');
2+
var common = require('../../common');
3+
4+
var table = 'bigint_test';
5+
6+
common.getTestConnection(function (err, connection) {
7+
assert.ifError(err);
8+
9+
common.useTestDb(connection);
10+
11+
connection.query([
12+
'CREATE TEMPORARY TABLE ?? (',
13+
'`id` int(11) unsigned NOT NULL AUTO_INCREMENT,',
14+
'`big` bigint,',
15+
'PRIMARY KEY (`id`)',
16+
') ENGINE=InnoDB DEFAULT CHARSET=utf8'
17+
].join('\n'), [table], assert.ifError);
18+
19+
connection.query('INSERT INTO ?? SET ?', [table, {big: '9223372036854775807'}]);
20+
connection.query('INSERT INTO ?? SET ?', [table, {big: '-9223372036854775807'}]);
21+
connection.query('INSERT INTO ?? SET ?', [table, {big: '1111111111111111111'}]);
22+
connection.query('INSERT INTO ?? SET ?', [table, {big: '-1111111111111111111'}]);
23+
connection.query('INSERT INTO ?? SET ?', [table, {big: '9007199254740993'}]);
24+
connection.query('INSERT INTO ?? SET ?', [table, {big: '-9007199254740993'}]);
25+
26+
connection.query('SELECT * FROM ??', [table], function (err, rows) {
27+
assert.ifError(err);
28+
assert.equal(rows.length, 6);
29+
assert.deepStrictEqual(rows[0].big, '9223372036854775807');
30+
assert.deepStrictEqual(rows[1].big, '-9223372036854775807');
31+
assert.deepStrictEqual(rows[2].big, '1111111111111111111');
32+
assert.deepStrictEqual(rows[3].big, '-1111111111111111111');
33+
assert.deepStrictEqual(rows[4].big, '9007199254740993');
34+
assert.deepStrictEqual(rows[5].big, '-9007199254740993');
35+
connection.end(assert.ifError);
36+
});
37+
});

test0.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
var mysql = require('mysql');
2+
var express = require('express')
3+
, http = require('http')
4+
, app = express()
5+
, server = http.createServer(app);
6+
7+
var db_config = {
8+
connectionLimit : 10,
9+
host : 'localhost',
10+
user : 'root',
11+
password : 'root!',
12+
database : 'kdtestdb',
13+
supportBigNumbers: true,
14+
}
15+
16+
var pool = mysql.createPool(db_config);
17+
18+
app.get('/*', function (req, res) {
19+
pool.query('SELECT * FROM test;', function(err, rows, fields) {
20+
if (err){
21+
console.log("error");
22+
throw err
23+
} else {
24+
console.log(rows);
25+
res.send(rows);
26+
};
27+
});
28+
});
29+
30+
var listener = app.listen(8080, function() {
31+
console.log('Express server listening on port ' + listener.address().port);
32+
});

0 commit comments

Comments
 (0)