diff --git a/src/binding.cc b/src/binding.cc index 7be64869..2eeb511e 100644 --- a/src/binding.cc +++ b/src/binding.cc @@ -226,8 +226,7 @@ protected: int fieldCount = PQnfields(result); for(int fieldNumber = 0; fieldNumber < fieldCount; fieldNumber++) { char* fieldName = PQfname(result, fieldNumber); - char* fieldValue = PQgetvalue(result, rowNumber, fieldNumber); - row->Set(String::New(fieldName), String::New(fieldValue)); + row->Set(String::New(fieldName), WrapFieldValue(result, rowNumber, fieldNumber)); } //not sure about what to dealloc or scope#Close here @@ -258,6 +257,18 @@ protected: } } + Handle WrapFieldValue(PGresult* result, int rowNumber, int fieldNumber) + { + int fieldType = PQftype(result, fieldNumber); + char* fieldValue = PQgetvalue(result, rowNumber, fieldNumber); + switch(fieldType) { + case 23: + return Integer::New(atoi(fieldValue)); + default: + return String::New(fieldValue); + } + } + void End() { StopRead(); diff --git a/test/integration/client/simple-query-tests.js b/test/integration/client/simple-query-tests.js index 1c057ea9..a0459094 100644 --- a/test/integration/client/simple-query-tests.js +++ b/test/integration/client/simple-query-tests.js @@ -36,7 +36,6 @@ test("simple query interface", function() { }); test("multiple simple queries", function() { - return false; var client = helper.client(); client.query("create temp table bang(id serial, name varchar(5));insert into bang(name) VALUES('boom');") client.query("insert into bang(name) VALUES ('yes');"); @@ -51,7 +50,6 @@ test("multiple simple queries", function() { }); test("multiple select statements", function() { - return false; var client = helper.client(); client.query("create temp table boom(age integer); insert into boom(age) values(1); insert into boom(age) values(2); insert into boom(age) values(3)"); client.query("create temp table bang(name varchar(5)); insert into bang(name) values('zoom');");