不要怂,就是干,撸起袖子干!

Commit 1f20a846 by Sascha Depold

latest nodejs-mysql-native version

1 parent 5498e7ee
......@@ -16,9 +16,20 @@
exports.createTCPClient = function(host, port)
{
var host = host ? host : "locahost";
var host = host ? host : "localhost";
var port = port ? port : 3306;
var connection = net.createConnection(3306, "localhost");
var connection = net.createConnection(port, host);
connection.pscache = {};
connection.setEncoding("binary");
connection.setTimeout(0);
return new socketClient(connection);
}
exports.createUNIXClient = function(path)
{
var path = path ? path : "/var/run/mysqld/mysqld.sock";
var connection = net.createConnection(path);
connection.pscache = {};
connection.setEncoding("binary");
connection.setTimeout(0);
......@@ -121,7 +132,7 @@ function dump(d)
}
// proxy request to socket eventemitter
this.addListener = function()
this.on = this.addListener = function()
{
this.connection.addListener.apply(this.connection, arguments);
}
......
......@@ -174,8 +174,6 @@ function auth(db, user, password)
{
if (!user)
user='';
if (!password)
password='';
var c = new cmd(
{
......@@ -193,7 +191,7 @@ function auth(db, user, password)
r.bytes(12);
salt += r.bytes(12);
var token = scramble(password, salt);
var token = password!=="" ? scramble(password, salt) : "";
var reply = new writer();
var client_flags = flags.CLIENT_BASIC_FLAGS;
reply.add(client_flags);
......
......@@ -36,7 +36,6 @@ exports.flags.CLIENT_BASIC_FLAGS = flags.CLIENT_LONG_PASSWORD |
flags.CLIENT_FOUND_ROWS |
flags.CLIENT_LONG_FLAG |
flags.CLIENT_CONNECT_WITH_DB |
flags.CLIENT_NO_SCHEMA |
flags.CLIENT_ODBC |
flags.CLIENT_LOCAL_FILES |
flags.CLIENT_IGNORE_SPACE |
......
var client = require('./client');
var pool = require('./pool');
exports.createClient = client.createClient;
exports.createTCPClient = client.createTCPClient;
exports.createUNIXClient = client.createUNIXClient;
exports.pool = pool.pool;
......@@ -97,6 +97,14 @@ function reader(data)
}
reader.prototype.dump = function()
{
for (var i=this.pos; i < this.data.length; ++i)
{
sys.puts(this.data.charCodeAt(i));
}
}
// libmysql sets all fields to zero when binary packet has zero length
function zeroTime()
{
......@@ -171,6 +179,27 @@ reader.prototype.unpackBinaryDate = function()
return dt;
}
function parseIEEE754Double(data)
{
var fraction = 0.0;
fraction += data.charCodeAt(2) / ( 16 * 256 * 256 * 256 * 256 * 256 * 256);
fraction += data.charCodeAt(3) / ( 16 * 256 * 256 * 256 * 256 * 256 );
fraction += data.charCodeAt(4) / ( 16 * 256 * 256 * 256 * 256 );
fraction += data.charCodeAt(5) / ( 16 * 256 * 256 * 256);
fraction += data.charCodeAt(6) / ( 16 * 256 * 256 );
fraction += data.charCodeAt(7) / ( 16 * 256 );
fraction += (data.charCodeAt(8) & 0x0f) / 16.0;
var signbit = data.charCodeAt(9) & 128;
var exponent = ((data.charCodeAt(8) & 0xf0) >> 4) + ((data.charCodeAt(9) & 127) << 4);
var factor = Math.pow(2,exponent-1023);
var mantissa = 1.0 + fraction;
var sign = signbit > 0 ? -1 : 1;
return sign*factor*mantissa;
}
// deserialise mysql binary field
reader.prototype.unpackBinary = function(type, unsigned)
{
......@@ -194,6 +223,9 @@ reader.prototype.unpackBinary = function(type, unsigned)
case constants.types.MYSQL_TYPE_NEWDECIMAL:
result = parseFloat(this.lcstring());
break;
case constants.types.MYSQL_TYPE_DOUBLE:
result = parseIEEE754Double(this.data);
break;
/*
MYSQL_TYPE_TIMESTAMP: 7,
MYSQL_TYPE_LONGLONG: 8,
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!