File tree 3 files changed +36
-2
lines changed
3 files changed +36
-2
lines changed Original file line number Diff line number Diff line change @@ -31,6 +31,12 @@ export class BufferReader {
31
31
return result
32
32
}
33
33
34
+ public uint32 ( ) : number {
35
+ const result = this . buffer . readUInt32BE ( this . offset )
36
+ this . offset += 4
37
+ return result
38
+ }
39
+
34
40
public string ( length : number ) : string {
35
41
const result = this . buffer . toString ( this . encoding , this . offset , this . offset + length )
36
42
this . offset += length
Original file line number Diff line number Diff line change @@ -39,6 +39,17 @@ var twoRowBuf = buffers.rowDescription([
39
39
} ,
40
40
] )
41
41
42
+ var rowWithBigOids = {
43
+ name : 'bigoid' ,
44
+ tableID : 3000000001 ,
45
+ attributeNumber : 2 ,
46
+ dataTypeID : 3000000003 ,
47
+ dataTypeSize : 4 ,
48
+ typeModifier : 5 ,
49
+ formatCode : 0 ,
50
+ }
51
+ var bigOidDescBuff = buffers . rowDescription ( [ rowWithBigOids ] )
52
+
42
53
var emptyRowFieldBuf = new BufferList ( ) . addInt16 ( 0 ) . join ( true , 'D' )
43
54
44
55
var emptyRowFieldBuf = buffers . dataRow ( [ ] )
@@ -132,6 +143,22 @@ var expectedTwoRowMessage = {
132
143
} ,
133
144
] ,
134
145
}
146
+ var expectedBigOidMessage = {
147
+ name : 'rowDescription' ,
148
+ length : 31 ,
149
+ fieldCount : 1 ,
150
+ fields : [
151
+ {
152
+ name : 'bigoid' ,
153
+ tableID : 3000000001 ,
154
+ columnID : 2 ,
155
+ dataTypeID : 3000000003 ,
156
+ dataTypeSize : 4 ,
157
+ dataTypeModifier : 5 ,
158
+ format : 'text' ,
159
+ } ,
160
+ ] ,
161
+ }
135
162
136
163
var emptyParameterDescriptionBuffer = new BufferList ( )
137
164
. addInt16 ( 0 ) // number of parameters
@@ -261,6 +288,7 @@ describe('PgPacketStream', function () {
261
288
testForMessage ( emptyRowDescriptionBuffer , expectedEmptyRowDescriptionMessage )
262
289
testForMessage ( oneRowDescBuff , expectedOneRowMessage )
263
290
testForMessage ( twoRowBuf , expectedTwoRowMessage )
291
+ testForMessage ( bigOidDescBuff , expectedBigOidMessage )
264
292
} )
265
293
266
294
describe ( 'parameterDescription messages' , function ( ) {
Original file line number Diff line number Diff line change @@ -258,9 +258,9 @@ export class Parser {
258
258
259
259
private parseField ( ) : Field {
260
260
const name = this . reader . cstring ( )
261
- const tableID = this . reader . int32 ( )
261
+ const tableID = this . reader . uint32 ( )
262
262
const columnID = this . reader . int16 ( )
263
- const dataTypeID = this . reader . int32 ( )
263
+ const dataTypeID = this . reader . uint32 ( )
264
264
const dataTypeSize = this . reader . int16 ( )
265
265
const dataTypeModifier = this . reader . int32 ( )
266
266
const mode = this . reader . int16 ( ) === 0 ? 'text' : 'binary'
You can’t perform that action at this time.
0 commit comments