mirror of https://github.com/jackc/pgx.git
Make Oid public
parent
1d1d836207
commit
df0a537f59
|
@ -46,8 +46,8 @@ func createNarrowTestData(b *testing.B, conn *Connection) {
|
||||||
narrowTestDataLoaded = true
|
narrowTestDataLoaded = true
|
||||||
}
|
}
|
||||||
|
|
||||||
func removeBinaryEncoders() (encoders map[oid]func(*MessageReader, int32) interface{}) {
|
func removeBinaryEncoders() (encoders map[Oid]func(*MessageReader, int32) interface{}) {
|
||||||
encoders = make(map[oid]func(*MessageReader, int32) interface{})
|
encoders = make(map[Oid]func(*MessageReader, int32) interface{})
|
||||||
for k, v := range valueTranscoders {
|
for k, v := range valueTranscoders {
|
||||||
encoders[k] = v.DecodeBinary
|
encoders[k] = v.DecodeBinary
|
||||||
valueTranscoders[k].DecodeBinary = nil
|
valueTranscoders[k].DecodeBinary = nil
|
||||||
|
@ -55,7 +55,7 @@ func removeBinaryEncoders() (encoders map[oid]func(*MessageReader, int32) interf
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func restoreBinaryEncoders(encoders map[oid]func(*MessageReader, int32) interface{}) {
|
func restoreBinaryEncoders(encoders map[Oid]func(*MessageReader, int32) interface{}) {
|
||||||
for k, v := range encoders {
|
for k, v := range encoders {
|
||||||
valueTranscoders[k].DecodeBinary = v
|
valueTranscoders[k].DecodeBinary = v
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,7 +41,7 @@ type Connection struct {
|
||||||
type preparedStatement struct {
|
type preparedStatement struct {
|
||||||
Name string
|
Name string
|
||||||
FieldDescriptions []FieldDescription
|
FieldDescriptions []FieldDescription
|
||||||
ParameterOids []oid
|
ParameterOids []Oid
|
||||||
}
|
}
|
||||||
|
|
||||||
// NotSingleRowError is returned when exactly 1 row is expected, but 0 or more than
|
// NotSingleRowError is returned when exactly 1 row is expected, but 0 or more than
|
||||||
|
@ -638,9 +638,9 @@ func (c *Connection) rxRowDescription(r *MessageReader) (fields []FieldDescripti
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Connection) rxParameterDescription(r *MessageReader) (parameters []oid) {
|
func (c *Connection) rxParameterDescription(r *MessageReader) (parameters []Oid) {
|
||||||
parameterCount := r.ReadInt16()
|
parameterCount := r.ReadInt16()
|
||||||
parameters = make([]oid, 0, parameterCount)
|
parameters = make([]Oid, 0, parameterCount)
|
||||||
for i := int16(0); i < parameterCount; i++ {
|
for i := int16(0); i < parameterCount; i++ {
|
||||||
parameters = append(parameters, r.ReadOid())
|
parameters = append(parameters, r.ReadOid())
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,8 +33,8 @@ func (r *MessageReader) ReadInt64() int64 {
|
||||||
return int64(binary.BigEndian.Uint64(r.buf.Next(8)))
|
return int64(binary.BigEndian.Uint64(r.buf.Next(8)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *MessageReader) ReadOid() oid {
|
func (r *MessageReader) ReadOid() Oid {
|
||||||
return oid(binary.BigEndian.Uint32(r.buf.Next(4)))
|
return Oid(binary.BigEndian.Uint32(r.buf.Next(4)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *MessageReader) ReadString() string {
|
func (r *MessageReader) ReadString() string {
|
||||||
|
|
|
@ -44,13 +44,13 @@ func (self *startupMessage) Bytes() (buf []byte) {
|
||||||
return buf
|
return buf
|
||||||
}
|
}
|
||||||
|
|
||||||
type oid int32
|
type Oid int32
|
||||||
|
|
||||||
type FieldDescription struct {
|
type FieldDescription struct {
|
||||||
Name string
|
Name string
|
||||||
Table oid
|
Table Oid
|
||||||
AttributeNumber int16
|
AttributeNumber int16
|
||||||
DataType oid
|
DataType Oid
|
||||||
DataTypeSize int16
|
DataTypeSize int16
|
||||||
Modifier int32
|
Modifier int32
|
||||||
FormatCode int16
|
FormatCode int16
|
||||||
|
|
|
@ -14,70 +14,70 @@ type valueTranscoder struct {
|
||||||
EncodeFormat int16
|
EncodeFormat int16
|
||||||
}
|
}
|
||||||
|
|
||||||
var valueTranscoders map[oid]*valueTranscoder
|
var valueTranscoders map[Oid]*valueTranscoder
|
||||||
var defaultTranscoder *valueTranscoder
|
var defaultTranscoder *valueTranscoder
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
valueTranscoders = make(map[oid]*valueTranscoder)
|
valueTranscoders = make(map[Oid]*valueTranscoder)
|
||||||
|
|
||||||
// bool
|
// bool
|
||||||
valueTranscoders[oid(16)] = &valueTranscoder{
|
valueTranscoders[Oid(16)] = &valueTranscoder{
|
||||||
DecodeText: decodeBoolFromText,
|
DecodeText: decodeBoolFromText,
|
||||||
DecodeBinary: decodeBoolFromBinary,
|
DecodeBinary: decodeBoolFromBinary,
|
||||||
EncodeTo: encodeBool,
|
EncodeTo: encodeBool,
|
||||||
EncodeFormat: 1}
|
EncodeFormat: 1}
|
||||||
|
|
||||||
// bytea
|
// bytea
|
||||||
valueTranscoders[oid(17)] = &valueTranscoder{
|
valueTranscoders[Oid(17)] = &valueTranscoder{
|
||||||
DecodeText: decodeByteaFromText,
|
DecodeText: decodeByteaFromText,
|
||||||
EncodeTo: encodeBytea,
|
EncodeTo: encodeBytea,
|
||||||
EncodeFormat: 1}
|
EncodeFormat: 1}
|
||||||
|
|
||||||
// int8
|
// int8
|
||||||
valueTranscoders[oid(20)] = &valueTranscoder{
|
valueTranscoders[Oid(20)] = &valueTranscoder{
|
||||||
DecodeText: decodeInt8FromText,
|
DecodeText: decodeInt8FromText,
|
||||||
DecodeBinary: decodeInt8FromBinary,
|
DecodeBinary: decodeInt8FromBinary,
|
||||||
EncodeTo: encodeInt8,
|
EncodeTo: encodeInt8,
|
||||||
EncodeFormat: 1}
|
EncodeFormat: 1}
|
||||||
|
|
||||||
// int2
|
// int2
|
||||||
valueTranscoders[oid(21)] = &valueTranscoder{
|
valueTranscoders[Oid(21)] = &valueTranscoder{
|
||||||
DecodeText: decodeInt2FromText,
|
DecodeText: decodeInt2FromText,
|
||||||
DecodeBinary: decodeInt2FromBinary,
|
DecodeBinary: decodeInt2FromBinary,
|
||||||
EncodeTo: encodeInt2,
|
EncodeTo: encodeInt2,
|
||||||
EncodeFormat: 1}
|
EncodeFormat: 1}
|
||||||
|
|
||||||
// int4
|
// int4
|
||||||
valueTranscoders[oid(23)] = &valueTranscoder{
|
valueTranscoders[Oid(23)] = &valueTranscoder{
|
||||||
DecodeText: decodeInt4FromText,
|
DecodeText: decodeInt4FromText,
|
||||||
DecodeBinary: decodeInt4FromBinary,
|
DecodeBinary: decodeInt4FromBinary,
|
||||||
EncodeTo: encodeInt4,
|
EncodeTo: encodeInt4,
|
||||||
EncodeFormat: 1}
|
EncodeFormat: 1}
|
||||||
|
|
||||||
// text
|
// text
|
||||||
valueTranscoders[oid(25)] = &valueTranscoder{
|
valueTranscoders[Oid(25)] = &valueTranscoder{
|
||||||
DecodeText: decodeTextFromText,
|
DecodeText: decodeTextFromText,
|
||||||
EncodeTo: encodeText}
|
EncodeTo: encodeText}
|
||||||
|
|
||||||
// float4
|
// float4
|
||||||
valueTranscoders[oid(700)] = &valueTranscoder{
|
valueTranscoders[Oid(700)] = &valueTranscoder{
|
||||||
DecodeText: decodeFloat4FromText,
|
DecodeText: decodeFloat4FromText,
|
||||||
DecodeBinary: decodeFloat4FromBinary,
|
DecodeBinary: decodeFloat4FromBinary,
|
||||||
EncodeTo: encodeFloat4,
|
EncodeTo: encodeFloat4,
|
||||||
EncodeFormat: 1}
|
EncodeFormat: 1}
|
||||||
|
|
||||||
// float8
|
// float8
|
||||||
valueTranscoders[oid(701)] = &valueTranscoder{
|
valueTranscoders[Oid(701)] = &valueTranscoder{
|
||||||
DecodeText: decodeFloat8FromText,
|
DecodeText: decodeFloat8FromText,
|
||||||
DecodeBinary: decodeFloat8FromBinary,
|
DecodeBinary: decodeFloat8FromBinary,
|
||||||
EncodeTo: encodeFloat8,
|
EncodeTo: encodeFloat8,
|
||||||
EncodeFormat: 1}
|
EncodeFormat: 1}
|
||||||
|
|
||||||
// varchar -- same as text
|
// varchar -- same as text
|
||||||
valueTranscoders[oid(1043)] = valueTranscoders[oid(25)]
|
valueTranscoders[Oid(1043)] = valueTranscoders[Oid(25)]
|
||||||
|
|
||||||
// use text transcoder for anything we don't understand
|
// use text transcoder for anything we don't understand
|
||||||
defaultTranscoder = valueTranscoders[oid(25)]
|
defaultTranscoder = valueTranscoders[Oid(25)]
|
||||||
}
|
}
|
||||||
|
|
||||||
func decodeBoolFromText(mr *MessageReader, size int32) interface{} {
|
func decodeBoolFromText(mr *MessageReader, size int32) interface{} {
|
||||||
|
|
Loading…
Reference in New Issue