Comparing version 0.10.3 to 0.10.4
@@ -36,3 +36,3 @@ var common = require('../test/common'); | ||
function benchmarkSelects(n, cb) { | ||
var numSelects = 1000; | ||
var numSelects = 100000; | ||
var start = process.hrtime(); | ||
@@ -39,0 +39,0 @@ benchmarkSelect(numSelects, function(rowsPerQuery) { |
@@ -15,3 +15,2 @@ var assert = require('assert'); | ||
db.query(sql).on('end', function(err, res) { | ||
//db.execute(sql).on('end', function(err, res) { | ||
left--; | ||
@@ -18,0 +17,0 @@ if (left % 1000 === 0) |
@@ -55,6 +55,6 @@ var mysql = require('../index.js'); | ||
decimals: 0 | ||
}], ['12345'], 10000); | ||
}], ['12345'], 1); | ||
var server = mysql.createServer(); | ||
server.listen('/tmp/mybench4.sock'); | ||
server.listen('/tmp/mybench3.sock'); | ||
server.on('connection', function(conn) { | ||
@@ -61,0 +61,0 @@ conn.serverHandshake({ |
@@ -6,2 +6,7 @@ Backlog: | ||
0.10.4 | ||
- node-mysql compatibility: remove 'number of results in response' | ||
callback argument (Brian White) #45 c9cb926360da5e4028f7d2f83f4b4e94897cd8b8 | ||
- 'resultIndex' parameter for non-multiple results query 8879bdde397b6cd730d234383fa322becd1134de | ||
0.10.3 | ||
@@ -8,0 +13,0 @@ - various ssl fixes and refactoring (ssl was broken for some time) 213d375f7263cb6f5e724fdac3ea156ccee4bbd4 |
var mysql = require('../test/common').createConnection({multipleStatements: true}); | ||
var assert = require('assert'); | ||
mysql.query('CREATE TEMPORARY TABLE no_rows (test int)'); | ||
mysql.query('CREATE TEMPORARY TABLE some_rows (test int)'); | ||
mysql.query('INSERT INTO some_rows values(0)'); | ||
mysql.query('INSERT INTO some_rows values(42)'); | ||
mysql.query('INSERT INTO some_rows values(314149)'); | ||
var clone = function(obj) { return JSON.parse(JSON.stringify(obj)); }; | ||
var rs1 = { | ||
affectedRows: 0, | ||
fieldCount: 0, | ||
insertId: 0, | ||
serverStatus: 10, | ||
warningStatus: 0 | ||
}; | ||
var rs2 = clone(rs1); | ||
rs2.serverStatus = 2; | ||
var twoInsertResult = [[rs1, rs2], [undefined, undefined], 2]; | ||
var select1 = [{"1":"1"}]; | ||
var select2 = [{"2":"2"}]; | ||
var fields1 = [{ | ||
catalog: "def", | ||
characterSet: 63, | ||
columnLength: 1, | ||
columnType: 8, | ||
decimals: 0, | ||
flags: 129, | ||
name: "1", | ||
orgName: "", | ||
orgTable: "", | ||
schema: "", | ||
table: "" | ||
}]; | ||
var nr_fields = [{ | ||
catalog: "def", | ||
characterSet: 63, | ||
columnLength: 11, | ||
columnType: 3, | ||
decimals: 0, | ||
flags: 0, | ||
name: "test", | ||
orgName: "test", | ||
orgTable: "no_rows", | ||
schema: "test", | ||
table: "no_rows" | ||
}]; | ||
var sr_fields = clone(nr_fields); | ||
sr_fields[0].orgTable = "some_rows"; | ||
sr_fields[0].table = "some_rows"; | ||
var select3 = [{"test":0},{"test":42},{"test":314149}]; | ||
var fields2 = clone(fields1); | ||
fields2[0].name = "2"; | ||
var tests = [ | ||
["SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT; SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS;", twoInsertResult], | ||
["/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;", twoInsertResult], // issue #26 | ||
["set @a = 1", [rs2, undefined, 1]], // one insert result | ||
["set @a = 1; set @b = 2", twoInsertResult], | ||
["select 1; select 2", [[select1,select2],[fields1,fields2], 2]], | ||
["set @a = 1; select 1", [[rs1, select1], [undefined, fields1], 2]], | ||
["select 1; set @a = 1", [[select1, rs2], [fields1, undefined], 2]], | ||
["select * from no_rows", [[], nr_fields, 1]], // select 0 rows" | ||
["set @a = 1; select * from no_rows", [[rs1, []], [undefined, nr_fields], 2]], // insert + select 0 rows | ||
["select * from no_rows; set @a = 1", [[[], rs2], [nr_fields, undefined], 2]], // select 0 rows + insert | ||
["set @a = 1; select * from some_rows", [[rs1, select3],[undefined,sr_fields],2]], // insert + select 3 rows | ||
["select * from some_rows; set @a = 1", [[select3,rs2],[sr_fields,undefined],2]] // select 3 rows + insert | ||
]; | ||
// TODO: tests with error in the query with different index | ||
function do_test(testIndex) { | ||
var entry = tests[testIndex]; | ||
var sql = entry[0]; | ||
var expectation = entry[1]; | ||
mysql.query(sql, function(err, _rows, _columns, _numResults) { | ||
if (err) return; //process.exit(1); | ||
assert.deepEqual(expectation, [_rows, _columns, _numResults]); | ||
//assert.deepEqual(expectation[0], _rows); | ||
//assert.deepEqual(expectation[1], _columns); | ||
//assert.deepEqual(expectation[2], _numResults); | ||
var q = mysql.query(sql); | ||
var resIndex = 0; | ||
var rowIndex = 0; | ||
function checkRow(row, index) { | ||
if (_numResults == 1) { | ||
assert.equal(index, 0); | ||
if (row.constructor.name == 'ResultSetHeader') | ||
assert.deepEqual(_rows, row); | ||
else | ||
assert.deepEqual(_rows[rowIndex], row); | ||
} else { | ||
if (resIndex != index) { | ||
rowIndex = 0; | ||
resIndex = index; | ||
} | ||
if (row.constructor.name == 'ResultSetHeader') | ||
assert.deepEqual(_rows[index], row); | ||
else | ||
assert.deepEqual(_rows[index][rowIndex], row); | ||
} | ||
rowIndex++; | ||
} | ||
function checkFields(fields, index) { | ||
if (_numResults == 1) { | ||
assert.equal(index, 0); | ||
assert.deepEqual(_columns, fields); | ||
} | ||
else | ||
assert.deepEqual(_columns[index], fields); | ||
} | ||
q.on('result', checkRow); | ||
q.on('fields', checkFields); | ||
q.on('end', function() { | ||
if (testIndex + 1 < tests.length) | ||
do_test(testIndex + 1); | ||
else { | ||
mysql.end(); | ||
} | ||
}); | ||
}); | ||
} | ||
do_test(0); | ||
mysql.query("INSERT INTO insert_test VALUES(1234578,'test'); INSERT INTO insert_test VALUES(1234579,'test')", function(err, rows, fields) { | ||
console.log(err, rows, fields); | ||
}); |
@@ -31,3 +31,3 @@ var Command = require('./command'); | ||
authPluginData2: this.handshake.authPluginData2, | ||
compress: connection.config.compressi | ||
compress: connection.config.compress | ||
}); | ||
@@ -34,0 +34,0 @@ connection.writePacket(handshakeResponse.toPacket()); |
@@ -30,5 +30,5 @@ var Command = require('./command'); | ||
if (this._resultIndex === 0) { | ||
this.onResult(null, this._rows[0], this._fields[0], this._resultIndex+1); | ||
this.onResult(null, this._rows[0], this._fields[0]); | ||
} else { | ||
this.onResult(null, this._rows, this._fields, this._resultIndex+1); | ||
this.onResult(null, this._rows, this._fields); | ||
} | ||
@@ -35,0 +35,0 @@ } |
@@ -41,3 +41,2 @@ var ClientConstants = require('../constants/client'); | ||
{ | ||
this.ssl = false; | ||
this.user = handshake.user || ''; | ||
@@ -44,0 +43,0 @@ this.database = handshake.database || ''; |
@@ -1,5 +0,2 @@ | ||
var packetTypes = "handshake handshake_response query resultset_header column_definition"; | ||
packetTypes += " text_row binary_row prepare_statement prepared_statement_header execute ssl_request"; | ||
packetTypes.split(' ').forEach(function(name) { | ||
"handshake handshake_response query resultset_header column_definition text_row binary_row prepare_statement prepared_statement_header execute".split(' ').forEach(function(name) { | ||
var ctor = require('./' + name); | ||
@@ -6,0 +3,0 @@ module.exports[ctor.name] = ctor; |
@@ -22,2 +22,3 @@ var Packet = require('../packets/packet'); | ||
column.forEach(function(val) { | ||
if (val === null || typeof(val) == 'undefined') return ++length; | ||
var str = val.toString(10); | ||
@@ -31,3 +32,5 @@ length += Packet.lengthCodedNumberLength(str); | ||
column.forEach(function(val) { | ||
packet.writeLengthCodedString(val.toString(10)); | ||
if (val === null) return packet.writeNull(); | ||
if (typeof val == 'undefined') return packet.writeInt8(0); | ||
packet.writeLengthCodedString(val.toString(10)); | ||
}); | ||
@@ -34,0 +37,0 @@ return packet; |
{ | ||
"name": "mysql2", | ||
"version": "0.10.3", | ||
"version": "0.10.4", | ||
"description": "fast mysql driver. Implements core protocol, prepared statements, ssl and compression in native JS", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -8,3 +8,4 @@ #node-mysql2 | ||
[![NPM](http://nodei.co/npm/mysql2.png)](http://nodei.co/npm/mysql2/) | ||
[![NPM](https://nodei.co/npm/mysql2.png?downloads=true&stars=true)](https://nodei.co/npm/mysql2/) | ||
[![NPM](https://nodei.co/npm-dl/mysql2.png?months=6)](https://nodei.co/npm/mysql2/) | ||
@@ -171,3 +172,3 @@ ## Features | ||
- [Mysqlite.js](https://github.com/sidorares/mysqlite.js) - mysql server with JS-only (emscripten compiled) sqlite backend. | ||
- [sql-engine](https://github.com/eugeneware/sql-engine) - mysql server with leveldb backend. | ||
- [sql-engine](https://github.com/eugeneware/sql-engine) - mysql server with leveldb backend. | ||
@@ -181,3 +182,3 @@ ## See also: | ||
- [mysql-co](https://github.com/sidorares/mysql-co) - wrappers to use mysql2 with generators and [co library](https://github.com/visionmedia/co) | ||
## Contributing | ||
@@ -184,0 +185,0 @@ |
@@ -9,7 +9,2 @@ var mysql = require('../../common').createConnection({multipleStatements: true}); | ||
mysql.query('DROP PROCEDURE IF EXISTS p; CREATE PROCEDURE p(IN i INT) BEGIN SELECT i+1; SELECT * FROM some_rows; SELECT i+2; END;'); | ||
mysql.execute('CALL p(1)', function(err, r, f, num) { | ||
debugger; | ||
}); | ||
var clone = function(obj) { return JSON.parse(JSON.stringify(obj)); }; | ||
@@ -65,2 +60,3 @@ | ||
var tests = [ | ||
["select * from some_rows", [select3,sr_fields,1]], // select 3 rows | ||
["SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT; SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS;", twoInsertResult], | ||
@@ -87,3 +83,17 @@ ["/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;", twoInsertResult], // issue #26 | ||
var expectation = entry[1]; | ||
mysql.query(sql, function(err, _rows, _columns, _numResults) { | ||
mysql.query(sql, function(err, _rows, _columns) { | ||
var _numResults = 0; | ||
if (_rows.constructor.name == 'ResultSetHeader') | ||
_numResults = 1; | ||
else if (_rows.length === 0) { | ||
// empty select | ||
_numResults = 1; | ||
} | ||
else if (_rows.length > 0) { | ||
if (_rows.constructor.name == 'Array' && _rows[0].constructor.name == 'TextRow') | ||
_numResults = 1; | ||
if (_rows.constructor.name == 'Array' && | ||
(_rows[0].constructor.name == 'Array' || _rows[0].constructor.name =='ResultSetHeader')) | ||
_numResults = _rows.length | ||
} | ||
if (err) { | ||
@@ -118,4 +128,4 @@ console.log(err); | ||
if (_numResults == 1) { | ||
assert.equal(index, 0); | ||
assert.deepEqual(_columns, fields); | ||
assert.equal(index, 0); | ||
assert.deepEqual(_columns, fields); | ||
} | ||
@@ -122,0 +132,0 @@ else |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
198
216153
104
5065