Skip to content

Commit

Permalink
parse int8[] (#1152)
Browse files Browse the repository at this point in the history
* parse int8[]

* missing semicolon

* test

* test fixed

* test fixed

* test fixed. again.
  • Loading branch information
swarthy authored and brianc committed Dec 16, 2016
1 parent 2c636c7 commit f6c40b9
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 4 deletions.
8 changes: 7 additions & 1 deletion lib/defaults.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,13 @@ var defaults = module.exports = {
parseInputDatesAsUTC: false
};

var pgTypes = require('pg-types');
// save default parsers
var parseBigInteger = pgTypes.getTypeParser(20, 'text');
var parseBigIntegerArray = pgTypes.getTypeParser(1016, 'text');

//parse int8 so you can get your count values as actual numbers
module.exports.__defineSetter__("parseInt8", function(val) {
require('pg-types').setTypeParser(20, 'text', val ? parseInt : function(val) { return val; });
pgTypes.setTypeParser(20, 'text', val ? pgTypes.getTypeParser(23, 'text') : parseBigInteger);
pgTypes.setTypeParser(1016, 'text', val ? pgTypes.getTypeParser(1007, 'text') : parseBigIntegerArray);
});
13 changes: 10 additions & 3 deletions test/integration/client/parse-int-8-tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,18 @@ test('ability to turn on and off parser', function() {
pg.connect(helper.config, assert.success(function(client, done) {
pg.defaults.parseInt8 = true;
client.query('CREATE TEMP TABLE asdf(id SERIAL PRIMARY KEY)');
client.query('SELECT COUNT(*) as "count" FROM asdf', assert.success(function(res) {
client.query('SELECT COUNT(*) as "count", \'{1,2,3}\'::bigint[] as array FROM asdf', assert.success(function(res) {
assert.strictEqual(0, res.rows[0].count);
assert.strictEqual(1, res.rows[0].array[0]);
assert.strictEqual(2, res.rows[0].array[1]);
assert.strictEqual(3, res.rows[0].array[2]);
pg.defaults.parseInt8 = false;
client.query('SELECT COUNT(*) as "count" FROM asdf', assert.success(function(res) {
client.query('SELECT COUNT(*) as "count", \'{1,2,3}\'::bigint[] as array FROM asdf', assert.success(function(res) {
done();
assert.strictEqual("0", res.rows[0].count);
assert.strictEqual('0', res.rows[0].count);
assert.strictEqual('1', res.rows[0].array[0]);
assert.strictEqual('2', res.rows[0].array[1]);
assert.strictEqual('3', res.rows[0].array[2]);
pg.end();
}));
}));
Expand Down

0 comments on commit f6c40b9

Please sign in to comment.