Skip to content

Commit ff8fb61

Browse files
committed
Merge pull request #501 from lalitkapoor/GH-452
improve support for int arrays and float arrays
2 parents be37756 + f1c0aba commit ff8fb61

File tree

2 files changed

+61
-1
lines changed

2 files changed

+61
-1
lines changed

Diff for: lib/types/textParsers.js

+16-1
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,24 @@ var parseIntegerArray = function(val) {
8989
return p.parse();
9090
};
9191

92+
var parseBigIntegerArray = function(val) {
93+
if(!val) { return null; }
94+
var p = arrayParser.create(val, function(entry){
95+
if(entry !== null) {
96+
entry = parseBigInteger(entry).trim();
97+
}
98+
return entry;
99+
});
100+
101+
return p.parse();
102+
};
103+
92104
var parseFloatArray = function(val) {
93105
if(!val) { return null; }
94106
var p = arrayParser.create(val, function(entry) {
107+
if(entry !== null) {
108+
entry = parseFloat(entry);
109+
}
95110
return entry;
96111
});
97112

@@ -202,7 +217,7 @@ var init = function(register) {
202217
register(1184, parseDate); // timestamp
203218
register(1005, parseIntegerArray); // _int2
204219
register(1007, parseIntegerArray); // _int4
205-
register(1016, parseIntegerArray); // _int8
220+
register(1016, parseBigIntegerArray); // _int8
206221
register(1021, parseFloatArray); // _float4
207222
register(1022, parseFloatArray); // _float8
208223
register(1231, parseFloatArray); // _numeric

Diff for: test/unit/client/typed-query-results-tests.js

+45
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,51 @@ test('typed results', function() {
197197
expected :function(val){
198198
assert.deepEqual(val, [1.2,3.4]);
199199
}
200+
},{
201+
name : 'array/int2',
202+
format : 'text',
203+
dataTypeID: 1005,
204+
actual: '{-32768, -32767, 32766, 32767}',
205+
expected :function(val){
206+
assert.deepEqual(val, [-32768, -32767, 32766, 32767]);
207+
}
208+
},{
209+
name : 'array/int4',
210+
format : 'text',
211+
dataTypeID: 1007,
212+
actual: '{-2147483648, -2147483647, 2147483646, 2147483647}',
213+
expected :function(val){
214+
assert.deepEqual(val, [-2147483648, -2147483647, 2147483646, 2147483647]);
215+
}
216+
},{
217+
name : 'array/int8',
218+
format : 'text',
219+
dataTypeID: 1016,
220+
actual: '{-9223372036854775808, -9223372036854775807, 9223372036854775806, 9223372036854775807}',
221+
expected :function(val){
222+
assert.deepEqual(val, [
223+
'-9223372036854775808',
224+
'-9223372036854775807',
225+
'9223372036854775806',
226+
'9223372036854775807'
227+
]);
228+
}
229+
},{
230+
name : 'array/float4',
231+
format : 'text',
232+
dataTypeID: 1021,
233+
actual: '{1.2, 3.4}',
234+
expected :function(val){
235+
assert.deepEqual(val, [1.2, 3.4]);
236+
}
237+
},{
238+
name : 'array/float8',
239+
format : 'text',
240+
dataTypeID: 1022,
241+
actual: '{-12345678.1234567, 12345678.12345678}',
242+
expected :function(val){
243+
assert.deepEqual(val, [-12345678.1234567, 12345678.12345678]);
244+
}
200245
},
201246

202247
{

0 commit comments

Comments
 (0)