mirror of https://github.com/jackc/pgx.git
103 lines
2.6 KiB
Go
103 lines
2.6 KiB
Go
package pgtype
|
|
|
|
import (
|
|
"errors"
|
|
"io"
|
|
)
|
|
|
|
// PostgreSQL oids for common types
|
|
const (
|
|
BoolOID = 16
|
|
ByteaOID = 17
|
|
CharOID = 18
|
|
NameOID = 19
|
|
Int8OID = 20
|
|
Int2OID = 21
|
|
Int4OID = 23
|
|
TextOID = 25
|
|
OIDOID = 26
|
|
TidOID = 27
|
|
XIDOID = 28
|
|
CIDOID = 29
|
|
JSONOID = 114
|
|
CidrOID = 650
|
|
CidrArrayOID = 651
|
|
Float4OID = 700
|
|
Float8OID = 701
|
|
UnknownOID = 705
|
|
InetOID = 869
|
|
BoolArrayOID = 1000
|
|
Int2ArrayOID = 1005
|
|
Int4ArrayOID = 1007
|
|
TextArrayOID = 1009
|
|
ByteaArrayOID = 1001
|
|
VarcharArrayOID = 1015
|
|
Int8ArrayOID = 1016
|
|
Float4ArrayOID = 1021
|
|
Float8ArrayOID = 1022
|
|
ACLItemOID = 1033
|
|
ACLItemArrayOID = 1034
|
|
InetArrayOID = 1041
|
|
VarcharOID = 1043
|
|
DateOID = 1082
|
|
TimestampOID = 1114
|
|
TimestampArrayOID = 1115
|
|
DateArrayOID = 1182
|
|
TimestamptzOID = 1184
|
|
TimestamptzArrayOID = 1185
|
|
RecordOID = 2249
|
|
UUIDOID = 2950
|
|
JSONBOID = 3802
|
|
)
|
|
|
|
type Status byte
|
|
|
|
const (
|
|
Undefined Status = iota
|
|
Null
|
|
Present
|
|
)
|
|
|
|
type InfinityModifier int8
|
|
|
|
const (
|
|
Infinity InfinityModifier = 1
|
|
None InfinityModifier = 0
|
|
NegativeInfinity InfinityModifier = -Infinity
|
|
)
|
|
|
|
type Value interface {
|
|
ConvertFrom(src interface{}) error
|
|
AssignTo(dst interface{}) error
|
|
}
|
|
|
|
type BinaryDecoder interface {
|
|
DecodeBinary(src []byte) error
|
|
}
|
|
|
|
type TextDecoder interface {
|
|
DecodeText(src []byte) error
|
|
}
|
|
|
|
// BinaryEncoder is implemented by types that can encode themselves into the
|
|
// PostgreSQL binary wire format.
|
|
type BinaryEncoder interface {
|
|
// EncodeBinary should encode the binary format of self to w. If self is the
|
|
// SQL value NULL then write nothing and return (true, nil). The caller of
|
|
// EncodeBinary is responsible for writing the correct NULL value or the
|
|
// length of the data written.
|
|
EncodeBinary(w io.Writer) (null bool, err error)
|
|
}
|
|
|
|
// TextEncoder is implemented by types that can encode themselves into the
|
|
// PostgreSQL text wire format.
|
|
type TextEncoder interface {
|
|
// EncodeText should encode the text format of self to w. If self is the SQL
|
|
// value NULL then write nothing and return (true, nil). The caller of
|
|
// EncodeText is responsible for writing the correct NULL value or the length
|
|
// of the data written.
|
|
EncodeText(w io.Writer) (null bool, err error)
|
|
}
|
|
|
|
var errUndefined = errors.New("cannot encode status undefined")
|