2
0

Use constants for OIDs

This commit is contained in:
Jack Christensen
2014-06-28 08:26:52 -05:00
parent b6ac3ef2b0
commit 288e2a2c51
+32 -15
View File
@@ -11,6 +11,23 @@ import (
"unsafe" "unsafe"
) )
const (
BoolOid = 16
ByteaOid = 17
Int8Oid = 20
Int2Oid = 21
Int4Oid = 23
TextOid = 25
Float4Oid = 700
Float8Oid = 701
Int2ArrayOid = 1005
Int4ArrayOid = 1007
Int8ArrayOid = 1016
VarcharOid = 1043
DateOid = 1082
TimestampTzOid = 1184
)
// ValueTranscoder stores all the data necessary to encode and decode values from // ValueTranscoder stores all the data necessary to encode and decode values from
// a PostgreSQL server // a PostgreSQL server
type ValueTranscoder struct { type ValueTranscoder struct {
@@ -37,90 +54,90 @@ func init() {
ValueTranscoders = make(map[Oid]*ValueTranscoder) ValueTranscoders = make(map[Oid]*ValueTranscoder)
// bool // bool
ValueTranscoders[Oid(16)] = &ValueTranscoder{ ValueTranscoders[BoolOid] = &ValueTranscoder{
DecodeText: decodeBoolFromText, DecodeText: decodeBoolFromText,
DecodeBinary: decodeBoolFromBinary, DecodeBinary: decodeBoolFromBinary,
EncodeTo: encodeBool, EncodeTo: encodeBool,
EncodeFormat: 1} EncodeFormat: 1}
// bytea // bytea
ValueTranscoders[Oid(17)] = &ValueTranscoder{ ValueTranscoders[ByteaOid] = &ValueTranscoder{
DecodeText: decodeByteaFromText, DecodeText: decodeByteaFromText,
EncodeTo: encodeBytea, EncodeTo: encodeBytea,
EncodeFormat: 1} EncodeFormat: 1}
// int8 // int8
ValueTranscoders[Oid(20)] = &ValueTranscoder{ ValueTranscoders[Int8Oid] = &ValueTranscoder{
DecodeText: decodeInt8FromText, DecodeText: decodeInt8FromText,
DecodeBinary: decodeInt8FromBinary, DecodeBinary: decodeInt8FromBinary,
EncodeTo: encodeInt8, EncodeTo: encodeInt8,
EncodeFormat: 1} EncodeFormat: 1}
// int2 // int2
ValueTranscoders[Oid(21)] = &ValueTranscoder{ ValueTranscoders[Int2Oid] = &ValueTranscoder{
DecodeText: decodeInt2FromText, DecodeText: decodeInt2FromText,
DecodeBinary: decodeInt2FromBinary, DecodeBinary: decodeInt2FromBinary,
EncodeTo: encodeInt2, EncodeTo: encodeInt2,
EncodeFormat: 1} EncodeFormat: 1}
// int4 // int4
ValueTranscoders[Oid(23)] = &ValueTranscoder{ ValueTranscoders[Int4Oid] = &ValueTranscoder{
DecodeText: decodeInt4FromText, DecodeText: decodeInt4FromText,
DecodeBinary: decodeInt4FromBinary, DecodeBinary: decodeInt4FromBinary,
EncodeTo: encodeInt4, EncodeTo: encodeInt4,
EncodeFormat: 1} EncodeFormat: 1}
// text // text
ValueTranscoders[Oid(25)] = &ValueTranscoder{ ValueTranscoders[TextOid] = &ValueTranscoder{
DecodeText: decodeTextFromText, DecodeText: decodeTextFromText,
EncodeTo: encodeText} EncodeTo: encodeText}
// float4 // float4
ValueTranscoders[Oid(700)] = &ValueTranscoder{ ValueTranscoders[Float4Oid] = &ValueTranscoder{
DecodeText: decodeFloat4FromText, DecodeText: decodeFloat4FromText,
DecodeBinary: decodeFloat4FromBinary, DecodeBinary: decodeFloat4FromBinary,
EncodeTo: encodeFloat4, EncodeTo: encodeFloat4,
EncodeFormat: 1} EncodeFormat: 1}
// float8 // float8
ValueTranscoders[Oid(701)] = &ValueTranscoder{ ValueTranscoders[Float8Oid] = &ValueTranscoder{
DecodeText: decodeFloat8FromText, DecodeText: decodeFloat8FromText,
DecodeBinary: decodeFloat8FromBinary, DecodeBinary: decodeFloat8FromBinary,
EncodeTo: encodeFloat8, EncodeTo: encodeFloat8,
EncodeFormat: 1} EncodeFormat: 1}
// int2[] // int2[]
ValueTranscoders[Oid(1005)] = &ValueTranscoder{ ValueTranscoders[Int2ArrayOid] = &ValueTranscoder{
DecodeText: decodeInt2ArrayFromText, DecodeText: decodeInt2ArrayFromText,
EncodeTo: encodeInt2Array} EncodeTo: encodeInt2Array}
// int4[] // int4[]
ValueTranscoders[Oid(1007)] = &ValueTranscoder{ ValueTranscoders[Int4ArrayOid] = &ValueTranscoder{
DecodeText: decodeInt4ArrayFromText, DecodeText: decodeInt4ArrayFromText,
EncodeTo: encodeInt4Array} EncodeTo: encodeInt4Array}
// int8[] // int8[]
ValueTranscoders[Oid(1016)] = &ValueTranscoder{ ValueTranscoders[Int8ArrayOid] = &ValueTranscoder{
DecodeText: decodeInt8ArrayFromText, DecodeText: decodeInt8ArrayFromText,
EncodeTo: encodeInt8Array} EncodeTo: encodeInt8Array}
// varchar -- same as text // varchar -- same as text
ValueTranscoders[Oid(1043)] = ValueTranscoders[Oid(25)] ValueTranscoders[VarcharOid] = ValueTranscoders[Oid(25)]
// date // date
ValueTranscoders[Oid(1082)] = &ValueTranscoder{ ValueTranscoders[DateOid] = &ValueTranscoder{
DecodeText: decodeDateFromText, DecodeText: decodeDateFromText,
DecodeBinary: decodeDateFromBinary, DecodeBinary: decodeDateFromBinary,
EncodeTo: encodeDate} EncodeTo: encodeDate}
// timestamptz // timestamptz
ValueTranscoders[Oid(1184)] = &ValueTranscoder{ ValueTranscoders[TimestampTzOid] = &ValueTranscoder{
DecodeText: decodeTimestampTzFromText, DecodeText: decodeTimestampTzFromText,
DecodeBinary: decodeTimestampTzFromBinary, DecodeBinary: decodeTimestampTzFromBinary,
EncodeTo: encodeTimestampTz} EncodeTo: encodeTimestampTz}
// use text transcoder for anything we don't understand // use text transcoder for anything we don't understand
defaultTranscoder = ValueTranscoders[Oid(25)] defaultTranscoder = ValueTranscoders[TextOid]
} }
var arrayEl *regexp.Regexp = regexp.MustCompile(`[{,](?:"((?:[^"\\]|\\.)*)"|(NULL)|([^,}]+))`) var arrayEl *regexp.Regexp = regexp.MustCompile(`[{,](?:"((?:[^"\\]|\\.)*)"|(NULL)|([^,}]+))`)