Skip to content

Commit

Permalink
don't ignore null binary row field, insted add it as javascript 'null'
Browse files Browse the repository at this point in the history
  • Loading branch information
sidorares committed Jun 21, 2010
1 parent 54c2044 commit ab1664b
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 7 deletions.
24 changes: 18 additions & 6 deletions mysql/commands.js
Expand Up @@ -157,6 +157,14 @@ function cmd(handlers)
{
this.connection.write_packet(packet,pnum);
}

this.store_column = function(r,f,v)
{
if (this.connection.row_as_hash)
r[f.name] = v;
else
r.push(v);
}
}

function auth(db, user, password)
Expand Down Expand Up @@ -235,13 +243,14 @@ function query(sql)
{
if (r.isEOFpacket())
return 'done';
var row = [];

var row = this.connection.row_as_hash ? {} : [];
var field_index = 0;
while (!r.eof())
{
var field = this.fields[field_index];
var value = r.lcstring();
row.push(string2type(value, field.type));
var value = string2type(r.lcstring(), field.type); // todo: move to serialiser unpackString
this.store_column(row, field, value)
field_index++;
}
this.emit('row', row, this.fields);
Expand Down Expand Up @@ -393,13 +402,16 @@ function execute(sql, parameters)
bitmap_byte = r.num(1);
}
}
var row = [];
var row = this.connection.row_as_hash ? {} : [];
for (var f=0; f < this.ps.field_count; ++f)
{
var field = this.ps.fields[f];
if (!null_bit_map[f])
{
var field = this.ps.fields[f];
row.push(r.unpackBinary(field.type, field.flags & field_flags.UNSIGNED));
var value = r.unpackBinary(field.type, field.flags & field_flags.UNSIGNED);
this.store_column(row, field, value);
} else {
this.store_column(row, field, null);
}
}
this.emit('row', row);
Expand Down
2 changes: 1 addition & 1 deletion test_execute.js
Expand Up @@ -5,5 +5,5 @@ var db = require("mysql/client").createTCPClient();

db.auth("test", "testuser", "testpass");
db.prepare(process.argv[2]);
db.execute(process.argv[2]).addListener('binrow', function(r) { sys.puts("binrow received: " + sys.inspect(r)); } );
db.execute(process.argv[2]).addListener('row', function(r) { sys.puts("binrow received: " + sys.inspect(r)); } );
db.close();
1 change: 1 addition & 0 deletions test_stmt_parameters.js
Expand Up @@ -7,6 +7,7 @@ db.auth("test", "testuser", "testpass");
//var sql = "select null,null,2,null,1,null,null";
var sql = process.argv[2];
db.prepare(sql);
db.row_as_hash = true;
db.execute(sql, process.argv.slice(3))
.addListener('field', function(f) { sys.puts( "field: " + sys.inspect(f)); })
.addListener('row', function(r) { sys.puts("row: " + sys.inspect(r)); } );
Expand Down

0 comments on commit ab1664b

Please sign in to comment.