deprecate float parsing - closes #296
This commit is contained in:
parent
6415450634
commit
f30158f7c4
@ -1,3 +1,5 @@
|
|||||||
|
var deprecate = require('deprecate');
|
||||||
|
|
||||||
var parseBits = function(data, bits, offset, invert, callback) {
|
var parseBits = function(data, bits, offset, invert, callback) {
|
||||||
offset = offset || 0;
|
offset = offset || 0;
|
||||||
invert = invert || false;
|
invert = invert || false;
|
||||||
@ -45,6 +47,12 @@ var parseBits = function(data, bits, offset, invert, callback) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
var parseFloatFromBits = function(data, precisionBits, exponentBits) {
|
var parseFloatFromBits = function(data, precisionBits, exponentBits) {
|
||||||
|
deprecate('parsing and returning floats from PostgreSQL server is deprecated',
|
||||||
|
'JavaScript has a hard time with floats and there is precision loss which can cause',
|
||||||
|
'unexpected, hard to trace, potentially bad bugs in your program',
|
||||||
|
'for more information see the following:',
|
||||||
|
'https://github.com/brianc/node-postgres/pull/271',
|
||||||
|
'in node-postgres v1.0.0 all floats & decimals will be returned as strings');
|
||||||
var bias = Math.pow(2, exponentBits - 1) - 1;
|
var bias = Math.pow(2, exponentBits - 1) - 1;
|
||||||
var sign = parseBits(data, 1);
|
var sign = parseBits(data, 1);
|
||||||
var exponent = parseBits(data, exponentBits, 1);
|
var exponent = parseBits(data, exponentBits, 1);
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
var deprecate = require('deprecate');
|
||||||
|
|
||||||
var arrayParser = require(__dirname + "/arrayParser.js");
|
var arrayParser = require(__dirname + "/arrayParser.js");
|
||||||
|
|
||||||
//parses PostgreSQL server formatted date strings into javascript date objects
|
//parses PostgreSQL server formatted date strings into javascript date objects
|
||||||
@ -76,6 +78,12 @@ var parseIntegerArray = function(val) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
var parseFloatArray = function(val) {
|
var parseFloatArray = function(val) {
|
||||||
|
deprecate('parsing and returning floats from PostgreSQL server is deprecated',
|
||||||
|
'JavaScript has a hard time with floats and there is precision loss which can cause',
|
||||||
|
'unexpected, hard to trace, potentially bad bugs in your program',
|
||||||
|
'for more information see the following:',
|
||||||
|
'https://github.com/brianc/node-postgres/pull/271',
|
||||||
|
'in node-postgres v1.0.0 all floats & decimals will be returned as strings');
|
||||||
if(!val) { return null; }
|
if(!val) { return null; }
|
||||||
var p = arrayParser.create(val, function(entry){
|
var p = arrayParser.create(val, function(entry){
|
||||||
if(entry !== null) {
|
if(entry !== null) {
|
||||||
@ -162,24 +170,27 @@ var parseInteger = function(val) {
|
|||||||
return parseInt(val, 10);
|
return parseInt(val, 10);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var parseFloatAndWarn = function(val) {
|
||||||
|
deprecate('parsing and returning floats from PostgreSQL server is deprecated',
|
||||||
|
'JavaScript has a hard time with floats and there is precision loss which can cause',
|
||||||
|
'unexpected, hard to trace, potentially bad bugs in your program',
|
||||||
|
'for more information see the following:',
|
||||||
|
'https://github.com/brianc/node-postgres/pull/271',
|
||||||
|
'in node-postgres v1.0.0 all floats & decimals will be returned as strings');
|
||||||
|
return parseFloat(val);
|
||||||
|
};
|
||||||
|
|
||||||
var init = function(register) {
|
var init = function(register) {
|
||||||
register(20, parseInteger);
|
register(20, parseInteger);
|
||||||
register(21, parseInteger);
|
register(21, parseInteger);
|
||||||
register(23, parseInteger);
|
register(23, parseInteger);
|
||||||
register(26, parseInteger);
|
register(26, parseInteger);
|
||||||
//TODO remove for v1.0
|
//TODO remove for v1.0
|
||||||
register(1700, function(val){
|
register(1700, parseFloatAndWarn);
|
||||||
if(val.length > maxLen) {
|
|
||||||
console.warn(
|
|
||||||
'WARNING: value %s is longer than max supported numeric value in ' +
|
|
||||||
'javascript. Possible data loss', val);
|
|
||||||
}
|
|
||||||
return parseFloat(val);
|
|
||||||
});
|
|
||||||
//TODO remove for v1.0
|
//TODO remove for v1.0
|
||||||
register(700, parseFloat);
|
register(700, parseFloatAndWarn);
|
||||||
//TODO remove for v1.0
|
//TODO remove for v1.0
|
||||||
register(701, parseFloat);
|
register(701, parseFloatAndWarn);
|
||||||
register(16, parseBool);
|
register(16, parseBool);
|
||||||
register(1082, parseDate); // date
|
register(1082, parseDate); // date
|
||||||
register(1114, parseDate); // timestamp without timezone
|
register(1114, parseDate); // timestamp without timezone
|
||||||
|
@ -7,6 +7,8 @@ var BufferList = require(__dirname+'/buffer-list')
|
|||||||
|
|
||||||
var Connection = require(__dirname + '/../lib/connection');
|
var Connection = require(__dirname + '/../lib/connection');
|
||||||
|
|
||||||
|
require(__dirname + '/../lib').defaults.hideDeprecationWarnings = true;
|
||||||
|
|
||||||
Client = require(__dirname + '/../lib').Client;
|
Client = require(__dirname + '/../lib').Client;
|
||||||
|
|
||||||
process.on('uncaughtException', function(d) {
|
process.on('uncaughtException', function(d) {
|
||||||
|
Loading…
Reference in New Issue
Block a user