@@ -3,6 +3,7 @@ package pgx
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/binary"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
"strconv"
|
||||
)
|
||||
@@ -25,6 +26,12 @@ func init() {
|
||||
DecodeText: decodeBoolFromText,
|
||||
EncodeTo: encodeBool}
|
||||
|
||||
// bytea
|
||||
valueTranscoders[oid(17)] = &valueTranscoder{
|
||||
DecodeText: decodeByteaFromText,
|
||||
EncodeTo: encodeBytea,
|
||||
EncodeFormat: 1}
|
||||
|
||||
// int8
|
||||
valueTranscoders[oid(20)] = &valueTranscoder{
|
||||
DecodeText: decodeInt8FromText,
|
||||
@@ -170,3 +177,18 @@ func encodeText(buf *bytes.Buffer, value interface{}) {
|
||||
binary.Write(buf, binary.BigEndian, int32(len(s)))
|
||||
buf.WriteString(s)
|
||||
}
|
||||
|
||||
func decodeByteaFromText(mr *MessageReader, size int32) interface{} {
|
||||
s := mr.ReadByteString(size)
|
||||
b, err := hex.DecodeString(s[2:])
|
||||
if err != nil {
|
||||
panic("Can't decode byte array")
|
||||
}
|
||||
return b
|
||||
}
|
||||
|
||||
func encodeBytea(buf *bytes.Buffer, value interface{}) {
|
||||
b := value.([]byte)
|
||||
binary.Write(buf, binary.BigEndian, int32(len(b)))
|
||||
buf.Write(b)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user