@@ -83,9 +83,6 @@ export class Parser {
8383 private bufferOffset : number = 0
8484 private reader = new BufferReader ( )
8585 private mode : Mode
86- // which columns of the rows to come are in the binary format, from the last row description:
87- // a binary value is bytes, and decoding it as text would lose every byte utf8 cannot carry
88- private binaryColumns : boolean [ ] | null = null
8986
9087 constructor ( opts ?: StreamOptions ) {
9188 if ( opts ?. mode === 'binary' ) {
@@ -191,7 +188,7 @@ export class Parser {
191188 message = emptyQuery
192189 break
193190 case MessageCodes . DataRow :
194- message = parseDataRowMessage ( reader , this . binaryColumns )
191+ message = parseDataRowMessage ( reader )
195192 break
196193 case MessageCodes . CommandComplete :
197194 message = parseCommandCompleteMessage ( reader )
@@ -219,7 +216,6 @@ export class Parser {
219216 break
220217 case MessageCodes . RowDescriptionMessage :
221218 message = parseRowDescriptionMessage ( reader )
222- this . binaryColumns = binaryColumnsOf ( message as RowDescriptionMessage )
223219 break
224220 case MessageCodes . ParameterDescriptionMessage :
225221 message = parseParameterDescriptionMessage ( reader )
@@ -280,12 +276,6 @@ const parseNotificationMessage = (reader: BufferReader) => {
280276 return new NotificationResponseMessage ( LATEINIT_LENGTH , processId , channel , payload )
281277}
282278
283- // null when every column is text, which is nearly always, so the row parser has one check to make
284- const binaryColumnsOf = ( message : RowDescriptionMessage ) : boolean [ ] | null => {
285- const formats = message . fields . map ( ( field ) => field . format === 'binary' )
286- return formats . includes ( true ) ? formats : null
287- }
288-
289279const parseRowDescriptionMessage = ( reader : BufferReader ) => {
290280 const fieldCount = reader . int16 ( )
291281 const message = new RowDescriptionMessage ( LATEINIT_LENGTH , fieldCount )
@@ -316,13 +306,13 @@ const parseParameterDescriptionMessage = (reader: BufferReader) => {
316306 return message
317307}
318308
319- const parseDataRowMessage = ( reader : BufferReader , binaryColumns : boolean [ ] | null ) => {
309+ const parseDataRowMessage = ( reader : BufferReader ) => {
320310 const fieldCount = reader . int16 ( )
321311 const fields : any [ ] = new Array ( fieldCount )
322312 for ( let i = 0 ; i < fieldCount ; i ++ ) {
323313 const len = reader . int32 ( )
324314 // a -1 for length means the value of the field is null
325- fields [ i ] = len === - 1 ? null : binaryColumns && binaryColumns [ i ] ? reader . bytes ( len ) : reader . string ( len )
315+ fields [ i ] = len === - 1 ? null : reader . string ( len )
326316 }
327317 return new DataRowMessage ( LATEINIT_LENGTH , fields )
328318}
0 commit comments