Skip to content

Commit

Permalink
Merge pull request #172 from linearray/fixbytea
Browse files Browse the repository at this point in the history
#161: Fixed bytea decode and added 'hex' for pg >= 9.0.
  • Loading branch information
Brian C committed Aug 18, 2012
2 parents 400d410 + 430f107 commit 66b569c
Showing 1 changed file with 26 additions and 3 deletions.
29 changes: 26 additions & 3 deletions lib/textParsers.js
Expand Up @@ -119,9 +119,32 @@ var parseInterval = function(val) {
};

var parseByteA = function(val) {
return new Buffer(val.replace(/\\([0-7]{3})/g, function (full_match, code) {
return String.fromCharCode(parseInt(code, 8));
}).replace(/\\\\/g, "\\"), "binary");
if(/^\\x/.test(val)){
// new 'hex' style response (pg >9.0)
return new Buffer(val.substr(2), 'hex');
}else{
out = ""
i = 0
while(i < val.length){
if(val[i] != "\\"){
out += val[i]
++i
}else{
if(val.substr(i+1,3).match(/[0-7]{3}/)){
out += String.fromCharCode(parseInt(val.substr(i+1,3),8))
i += 4
}else{
backslashes = 1
while(i+backslashes < val.length && val[i+backslashes] == "\\")
backslashes++
for(k=0; k<Math.floor(backslashes/2); ++k)
out += "\\"
i += Math.floor(backslashes / 2) * 2
}
}
}
return new Buffer(out,"binary");
}
}

var maxLen = Number.MAX_VALUE.toString().length
Expand Down

0 comments on commit 66b569c

Please sign in to comment.