File tree Expand file tree Collapse file tree 3 files changed +12
-7
lines changed Expand file tree Collapse file tree 3 files changed +12
-7
lines changed Original file line number Diff line number Diff line change @@ -301,7 +301,7 @@ describe('PgPacketStream', function () {
301301 testForMessage ( oneFieldBuf , {
302302 name : 'dataRow' ,
303303 fieldCount : 1 ,
304- fields : [ Buffer . from ( 'test' ) ] ,
304+ fields : [ 'test' ] ,
305305 } )
306306 } )
307307 } )
@@ -524,7 +524,7 @@ describe('PgPacketStream', function () {
524524 name : 'dataRow' ,
525525 fieldCount : 1 ,
526526 length : 11 ,
527- fields : [ Buffer . from ( '!' ) ] ,
527+ fields : [ '!' ] ,
528528 } )
529529 assert . equal ( messages [ 0 ] . fields [ 0 ] , '!' )
530530 assert . deepEqual ( messages [ 1 ] , {
Original file line number Diff line number Diff line change @@ -80,6 +80,7 @@ export class Parser {
8080 private bufferOffset : number = 0
8181 private reader = new BufferReader ( )
8282 private mode : Mode
83+ private fieldDescriptions : Field [ ] = [ ]
8384
8485 constructor ( opts ?: StreamOptions ) {
8586 if ( opts ?. mode === 'binary' ) {
@@ -253,6 +254,7 @@ export class Parser {
253254 for ( let i = 0 ; i < fieldCount ; i ++ ) {
254255 message . fields [ i ] = this . parseField ( )
255256 }
257+ this . fieldDescriptions = message . fields
256258 return message
257259 }
258260
@@ -284,7 +286,12 @@ export class Parser {
284286 for ( let i = 0 ; i < fieldCount ; i ++ ) {
285287 const len = this . reader . int32 ( )
286288 // a -1 for length means the value of the field is null
287- fields [ i ] = len === - 1 ? null : this . reader . bytes ( len )
289+ if ( len === - 1 ) {
290+ fields [ i ] = null
291+ } else {
292+ const format = this . fieldDescriptions [ i ] ?. format
293+ fields [ i ] = format === 'binary' ? this . reader . bytes ( len ) : this . reader . string ( len )
294+ }
288295 }
289296 return new DataRowMessage ( length , fields )
290297 }
Original file line number Diff line number Diff line change @@ -52,8 +52,7 @@ class Result {
5252 for ( let i = 0 , len = rowData . length ; i < len ; i ++ ) {
5353 const rawValue = rowData [ i ]
5454 if ( rawValue !== null ) {
55- const v = this . fields [ i ] . format !== 'binary' ? rawValue . toString ( 'utf8' ) : rawValue
56- row [ i ] = this . _parsers [ i ] ( v )
55+ row [ i ] = this . _parsers [ i ] ( rawValue )
5756 } else {
5857 row [ i ] = null
5958 }
@@ -67,8 +66,7 @@ class Result {
6766 const rawValue = rowData [ i ]
6867 const field = this . fields [ i ] . name
6968 if ( rawValue !== null ) {
70- const v = this . fields [ i ] . format !== 'binary' ? rawValue . toString ( 'utf8' ) : rawValue
71- row [ field ] = this . _parsers [ i ] ( v )
69+ row [ field ] = this . _parsers [ i ] ( rawValue )
7270 } else {
7371 row [ field ] = null
7472 }
You can’t perform that action at this time.
0 commit comments