Switches oid to uint32
This commit is contained in:
+1
-1
@@ -53,7 +53,7 @@ func (s *startupMessage) Bytes() (buf []byte) {
|
|||||||
return buf
|
return buf
|
||||||
}
|
}
|
||||||
|
|
||||||
type Oid int32
|
type Oid uint32
|
||||||
|
|
||||||
type FieldDescription struct {
|
type FieldDescription struct {
|
||||||
Name string
|
Name string
|
||||||
|
|||||||
@@ -137,6 +137,34 @@ func (r *msgReader) readInt32() int32 {
|
|||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *msgReader) readUint32() uint32 {
|
||||||
|
if r.err != nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
r.msgBytesRemaining -= 4
|
||||||
|
if r.msgBytesRemaining < 0 {
|
||||||
|
r.fatal(errors.New("read past end of message"))
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
b, err := r.reader.Peek(4)
|
||||||
|
if err != nil {
|
||||||
|
r.fatal(err)
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
n := uint32(binary.BigEndian.Uint32(b))
|
||||||
|
|
||||||
|
r.reader.Discard(4)
|
||||||
|
|
||||||
|
if r.shouldLog(LogLevelTrace) {
|
||||||
|
r.log(LogLevelTrace, "msgReader.readUint32", "value", n, "msgBytesRemaining", r.msgBytesRemaining)
|
||||||
|
}
|
||||||
|
|
||||||
|
return n
|
||||||
|
}
|
||||||
|
|
||||||
func (r *msgReader) readInt64() int64 {
|
func (r *msgReader) readInt64() int64 {
|
||||||
if r.err != nil {
|
if r.err != nil {
|
||||||
return 0
|
return 0
|
||||||
|
|||||||
+15
-1
@@ -74,6 +74,20 @@ func (r *ValueReader) ReadInt32() int32 {
|
|||||||
return r.mr.readInt32()
|
return r.mr.readInt32()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *ValueReader) ReadUint32() uint32 {
|
||||||
|
if r.err != nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
r.valueBytesRemaining -= 4
|
||||||
|
if r.valueBytesRemaining < 0 {
|
||||||
|
r.Fatal(errors.New("read past end of value"))
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
return r.mr.readUint32()
|
||||||
|
}
|
||||||
|
|
||||||
func (r *ValueReader) ReadInt64() int64 {
|
func (r *ValueReader) ReadInt64() int64 {
|
||||||
if r.err != nil {
|
if r.err != nil {
|
||||||
return 0
|
return 0
|
||||||
@@ -89,7 +103,7 @@ func (r *ValueReader) ReadInt64() int64 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (r *ValueReader) ReadOid() Oid {
|
func (r *ValueReader) ReadOid() Oid {
|
||||||
return Oid(r.ReadInt32())
|
return Oid(r.ReadUint32())
|
||||||
}
|
}
|
||||||
|
|
||||||
// ReadString reads count bytes and returns as string
|
// ReadString reads count bytes and returns as string
|
||||||
|
|||||||
@@ -551,6 +551,39 @@ func TestInetCidrTranscodeWithJustIP(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestOid(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
conn := mustConnect(t, *defaultConnConfig)
|
||||||
|
defer closeConn(t, conn)
|
||||||
|
|
||||||
|
tests := []struct {
|
||||||
|
sql string
|
||||||
|
value pgx.Oid
|
||||||
|
}{
|
||||||
|
{"select $1::oid", 0},
|
||||||
|
{"select $1::oid", 1},
|
||||||
|
{"select $1::oid", 4294967295},
|
||||||
|
}
|
||||||
|
|
||||||
|
for i, tt := range tests {
|
||||||
|
expected := tt.value
|
||||||
|
var actual pgx.Oid
|
||||||
|
|
||||||
|
err := conn.QueryRow(tt.sql, expected).Scan(&actual)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("%d. Unexpected failure: %v (sql -> %v, value -> %v)", i, err, tt.sql, expected)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if actual != expected {
|
||||||
|
t.Errorf("%d. Expected %v, got %v (sql -> %v)", i, expected, actual, tt.sql)
|
||||||
|
}
|
||||||
|
|
||||||
|
ensureConnValid(t, conn)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestNullX(t *testing.T) {
|
func TestNullX(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user