Skip to content

Commit f6c40b9

Browse files
swarthybrianc
authored andcommitted
parse int8[] (brianc#1152)
* parse int8[] * missing semicolon * test * test fixed * test fixed * test fixed. again.
1 parent 2c636c7 commit f6c40b9

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

lib/defaults.js

+7-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,13 @@ var defaults = module.exports = {
6262
parseInputDatesAsUTC: false
6363
};
6464

65+
var pgTypes = require('pg-types');
66+
// save default parsers
67+
var parseBigInteger = pgTypes.getTypeParser(20, 'text');
68+
var parseBigIntegerArray = pgTypes.getTypeParser(1016, 'text');
69+
6570
//parse int8 so you can get your count values as actual numbers
6671
module.exports.__defineSetter__("parseInt8", function(val) {
67-
require('pg-types').setTypeParser(20, 'text', val ? parseInt : function(val) { return val; });
72+
pgTypes.setTypeParser(20, 'text', val ? pgTypes.getTypeParser(23, 'text') : parseBigInteger);
73+
pgTypes.setTypeParser(1016, 'text', val ? pgTypes.getTypeParser(1007, 'text') : parseBigIntegerArray);
6874
});

test/integration/client/parse-int-8-tests.js

+10-3
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,18 @@ test('ability to turn on and off parser', function() {
66
pg.connect(helper.config, assert.success(function(client, done) {
77
pg.defaults.parseInt8 = true;
88
client.query('CREATE TEMP TABLE asdf(id SERIAL PRIMARY KEY)');
9-
client.query('SELECT COUNT(*) as "count" FROM asdf', assert.success(function(res) {
9+
client.query('SELECT COUNT(*) as "count", \'{1,2,3}\'::bigint[] as array FROM asdf', assert.success(function(res) {
10+
assert.strictEqual(0, res.rows[0].count);
11+
assert.strictEqual(1, res.rows[0].array[0]);
12+
assert.strictEqual(2, res.rows[0].array[1]);
13+
assert.strictEqual(3, res.rows[0].array[2]);
1014
pg.defaults.parseInt8 = false;
11-
client.query('SELECT COUNT(*) as "count" FROM asdf', assert.success(function(res) {
15+
client.query('SELECT COUNT(*) as "count", \'{1,2,3}\'::bigint[] as array FROM asdf', assert.success(function(res) {
1216
done();
13-
assert.strictEqual("0", res.rows[0].count);
17+
assert.strictEqual('0', res.rows[0].count);
18+
assert.strictEqual('1', res.rows[0].array[0]);
19+
assert.strictEqual('2', res.rows[0].array[1]);
20+
assert.strictEqual('3', res.rows[0].array[2]);
1421
pg.end();
1522
}));
1623
}));

0 commit comments

Comments
 (0)