pgtype

package module
v1.7.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 16, 2021 License: MIT Imports: 19 Imported by: 2

README

CI

pgtype

pgtype implements Go types for over 70 PostgreSQL types. pgtype is the type system underlying the https://github.com/jackc/pgx PostgreSQL driver. These types support the binary format for enhanced performance with pgx. They also support the database/sql Scan and Value interfaces and can be used with https://github.com/lib/pq.

Documentation

Overview

Example (Composite)
conn, err := pgx.Connect(context.Background(), os.Getenv("PGX_TEST_DATABASE"))
if err != nil {
	fmt.Println(err)
	return
}

defer conn.Close(context.Background())
_, err = conn.Exec(context.Background(), `drop type if exists mytype;`)
if err != nil {
	fmt.Println(err)
	return
}

_, err = conn.Exec(context.Background(), `create type mytype as (
  a int4,
  b text
);`)
if err != nil {
	fmt.Println(err)
	return
}
defer conn.Exec(context.Background(), "drop type mytype")

var oid uint32
err = conn.QueryRow(context.Background(), `select 'mytype'::regtype::oid`).Scan(&oid)
if err != nil {
	fmt.Println(err)
	return
}

ct, err := pgtype.NewCompositeType("mytype", []pgtype.CompositeTypeField{
	{"a", pgtype.Int4OID},
	{"b", pgtype.TextOID},
}, conn.ConnInfo())
if err != nil {
	fmt.Println(err)
	return
}
conn.ConnInfo().RegisterDataType(pgtype.DataType{Value: ct, Name: ct.TypeName(), OID: oid})

var a int
var b *string

err = conn.QueryRow(context.Background(), "select $1::mytype", []interface{}{2, "bar"}).Scan([]interface{}{&a, &b})
if err != nil {
	fmt.Println(err)
	return
}

fmt.Printf("First: a=%d b=%s\n", a, *b)

err = conn.QueryRow(context.Background(), "select (1, NULL)::mytype").Scan([]interface{}{&a, &b})
if err != nil {
	fmt.Println(err)
	return
}

fmt.Printf("Second: a=%d b=%v\n", a, b)

scanTarget := []interface{}{&a, &b}
err = conn.QueryRow(context.Background(), "select NULL::mytype").Scan(&scanTarget)
E(err)

fmt.Printf("Third: isNull=%v\n", scanTarget == nil)
Output:

First: a=2 b=bar
Second: a=1 b=<nil>
Third: isNull=true
Example (CustomCompositeTypes)

ExampleCustomCompositeTypes demonstrates how support for custom types mappable to SQL composites can be added.

package main

import (
	"context"
	"errors"
	"fmt"
	"os"

	"github.com/matthewpi/pgtype"
	"github.com/matthewpi/pgx/v4"
)

type MyType struct {
	a int32   // NULL will cause decoding error
	b *string // there can be NULL in this position in SQL
}

func (dst *MyType) DecodeBinary(ci *pgtype.ConnInfo, src []byte) error {
	if src == nil {
		return errors.New("NULL values can't be decoded. Scan into a &*MyType to handle NULLs")
	}

	if err := (pgtype.CompositeFields{&dst.a, &dst.b}).DecodeBinary(ci, src); err != nil {
		return err
	}

	return nil
}

func (src MyType) EncodeBinary(ci *pgtype.ConnInfo, buf []byte) (newBuf []byte, err error) {
	a := pgtype.Int4{src.a, pgtype.Present}
	var b pgtype.Text
	if src.b != nil {
		b = pgtype.Text{*src.b, pgtype.Present}
	} else {
		b = pgtype.Text{Status: pgtype.Null}
	}

	return (pgtype.CompositeFields{&a, &b}).EncodeBinary(ci, buf)
}

func ptrS(s string) *string {
	return &s
}

func E(err error) {
	if err != nil {
		panic(err)
	}
}

// ExampleCustomCompositeTypes demonstrates how support for custom types mappable to SQL
// composites can be added.
func main() {
	conn, err := pgx.Connect(context.Background(), os.Getenv("PGX_TEST_DATABASE"))
	E(err)

	defer conn.Close(context.Background())
	_, err = conn.Exec(context.Background(), `drop type if exists mytype;

create type mytype as (
  a int4,
  b text
);`)
	E(err)
	defer conn.Exec(context.Background(), "drop type mytype")

	var result *MyType

	// Demonstrates both passing and reading back composite values
	err = conn.QueryRow(context.Background(), "select $1::mytype",
		pgx.QueryResultFormats{pgx.BinaryFormatCode}, MyType{1, ptrS("foo")}).
		Scan(&result)
	E(err)

	fmt.Printf("First row: a=%d b=%s\n", result.a, *result.b)

	// Because we scan into &*MyType, NULLs are handled generically by assigning nil to result
	err = conn.QueryRow(context.Background(), "select NULL::mytype", pgx.QueryResultFormats{pgx.BinaryFormatCode}).Scan(&result)
	E(err)

	fmt.Printf("Second row: %v\n", result)

}
Output:

First row: a=1 b=foo
Second row: <nil>

Index

Examples

Constants

View Source
const (
	BoolOID             = 16
	ByteaOID            = 17
	QCharOID            = 18
	NameOID             = 19
	Int8OID             = 20
	Int2OID             = 21
	Int4OID             = 23
	TextOID             = 25
	OIDOID              = 26
	TIDOID              = 27
	XIDOID              = 28
	CIDOID              = 29
	JSONOID             = 114
	PointOID            = 600
	LsegOID             = 601
	PathOID             = 602
	BoxOID              = 603
	PolygonOID          = 604
	LineOID             = 628
	CIDROID             = 650
	CIDRArrayOID        = 651
	Float4OID           = 700
	Float8OID           = 701
	CircleOID           = 718
	UnknownOID          = 705
	MacaddrOID          = 829
	InetOID             = 869
	BoolArrayOID        = 1000
	Int2ArrayOID        = 1005
	Int4ArrayOID        = 1007
	TextArrayOID        = 1009
	ByteaArrayOID       = 1001
	BPCharArrayOID      = 1014
	VarcharArrayOID     = 1015
	Int8ArrayOID        = 1016
	Float4ArrayOID      = 1021
	Float8ArrayOID      = 1022
	ACLItemOID          = 1033
	ACLItemArrayOID     = 1034
	InetArrayOID        = 1041
	BPCharOID           = 1042
	VarcharOID          = 1043
	DateOID             = 1082
	TimeOID             = 1083
	TimestampOID        = 1114
	TimestampArrayOID   = 1115
	DateArrayOID        = 1182
	TimestamptzOID      = 1184
	TimestamptzArrayOID = 1185
	IntervalOID         = 1186
	NumericArrayOID     = 1231
	BitOID              = 1560
	VarbitOID           = 1562
	NumericOID          = 1700
	RecordOID           = 2249
	UUIDOID             = 2950
	UUIDArrayOID        = 2951
	JSONBOID            = 3802
	JSONBArrayOID       = 3807
	DaterangeOID        = 3912
	Int4rangeOID        = 3904
	NumrangeOID         = 3906
	TsrangeOID          = 3908
	TsrangeArrayOID     = 3909
	TstzrangeOID        = 3910
	TstzrangeArrayOID   = 3911
	Int8rangeOID        = 3926
)

PostgreSQL oids for common types

View Source
const (
	TextFormatCode   = 0
	BinaryFormatCode = 1
)

PostgreSQL format codes

View Source
const (
	Inclusive = BoundType('i')
	Exclusive = BoundType('e')
	Unbounded = BoundType('U')
	Empty     = BoundType('E')
)

Variables

This section is empty.

Functions

func DatabaseSQLValue

func DatabaseSQLValue(ci *ConnInfo, src Value) (interface{}, error)

func EncodeTextArrayDimensions

func EncodeTextArrayDimensions(buf []byte, dimensions []ArrayDimension) []byte

func EncodeValueText

func EncodeValueText(src TextEncoder) (interface{}, error)

func GetAssignToDstType

func GetAssignToDstType(dst interface{}) (interface{}, bool)

GetAssignToDstType attempts to convert dst to something AssignTo can assign to. If dst is a pointer to pointer it allocates a value and returns the dereferences pointer. If dst is a named type such as *Foo where Foo is type Foo int16, it converts dst to *int16.

GetAssignToDstType returns the converted dst and a bool representing if any change was made.

func NullAssignTo

func NullAssignTo(dst interface{}) error

func QuoteArrayElementIfNeeded

func QuoteArrayElementIfNeeded(src string) string

Types

type ACLItem

type ACLItem struct {
	String string
	Status Status
}

ACLItem is used for PostgreSQL's aclitem data type. A sample aclitem might look like this:

postgres=arwdDxt/postgres

Note, however, that because the user/role name part of an aclitem is an identifier, it follows all the usual formatting rules for SQL identifiers: if it contains spaces and other special characters, it should appear in double-quotes:

postgres=arwdDxt/"role with spaces"

func (*ACLItem) AssignTo

func (src *ACLItem) AssignTo(dst interface{}) error

func (*ACLItem) DecodeText

func (dst *ACLItem) DecodeText(ci *ConnInfo, src []byte) error

func (ACLItem) EncodeText

func (src ACLItem) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (ACLItem) Get

func (dst ACLItem) Get() interface{}

func (*ACLItem) Scan

func (dst *ACLItem) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*ACLItem) Set

func (dst *ACLItem) Set(src interface{}) error

func (ACLItem) Value

func (src ACLItem) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type ACLItemArray

type ACLItemArray struct {
	Elements   []ACLItem
	Dimensions []ArrayDimension
	Status     Status
}

func (*ACLItemArray) AssignTo

func (src *ACLItemArray) AssignTo(dst interface{}) error

func (*ACLItemArray) DecodeText

func (dst *ACLItemArray) DecodeText(ci *ConnInfo, src []byte) error

func (ACLItemArray) EncodeText

func (src ACLItemArray) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (ACLItemArray) Get

func (dst ACLItemArray) Get() interface{}

func (*ACLItemArray) Scan

func (dst *ACLItemArray) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*ACLItemArray) Set

func (dst *ACLItemArray) Set(src interface{}) error

func (ACLItemArray) Value

func (src ACLItemArray) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type ArrayDimension

type ArrayDimension struct {
	Length     int32
	LowerBound int32
}

type ArrayHeader

type ArrayHeader struct {
	ContainsNull bool
	ElementOID   int32
	Dimensions   []ArrayDimension
}

func (*ArrayHeader) DecodeBinary

func (dst *ArrayHeader) DecodeBinary(ci *ConnInfo, src []byte) (int, error)

func (ArrayHeader) EncodeBinary

func (src ArrayHeader) EncodeBinary(ci *ConnInfo, buf []byte) []byte

type ArrayType

type ArrayType struct {
	// contains filtered or unexported fields
}

ArrayType represents an array type. While it implements Value, this is only in service of its type conversion duties when registered as a data type in a ConnType. It should not be used directly as a Value. ArrayType is a convenience type for types that do not have an concrete array type.

func NewArrayType

func NewArrayType(typeName string, elementOID uint32, newElement func() ValueTranscoder) *ArrayType

func (*ArrayType) AssignTo

func (src *ArrayType) AssignTo(dst interface{}) error

func (*ArrayType) DecodeBinary

func (dst *ArrayType) DecodeBinary(ci *ConnInfo, src []byte) error

func (*ArrayType) DecodeText

func (dst *ArrayType) DecodeText(ci *ConnInfo, src []byte) error

func (ArrayType) EncodeBinary

func (src ArrayType) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (ArrayType) EncodeText

func (src ArrayType) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (ArrayType) Get

func (dst ArrayType) Get() interface{}

func (*ArrayType) NewTypeValue

func (at *ArrayType) NewTypeValue() Value

func (*ArrayType) Scan

func (dst *ArrayType) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*ArrayType) Set

func (dst *ArrayType) Set(src interface{}) error

func (*ArrayType) TypeName

func (at *ArrayType) TypeName() string

func (ArrayType) Value

func (src ArrayType) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type BPChar

type BPChar Text

BPChar is fixed-length, blank padded char type character(n), char(n)

func (*BPChar) AssignTo

func (src *BPChar) AssignTo(dst interface{}) error

AssignTo assigns from src to dst.

func (*BPChar) DecodeBinary

func (dst *BPChar) DecodeBinary(ci *ConnInfo, src []byte) error

func (*BPChar) DecodeText

func (dst *BPChar) DecodeText(ci *ConnInfo, src []byte) error

func (BPChar) EncodeBinary

func (src BPChar) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (BPChar) EncodeText

func (src BPChar) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (BPChar) Get

func (dst BPChar) Get() interface{}

Get returns underlying value

func (BPChar) MarshalJSON

func (src BPChar) MarshalJSON() ([]byte, error)

func (BPChar) PreferredParamFormat

func (BPChar) PreferredParamFormat() int16

func (BPChar) PreferredResultFormat

func (BPChar) PreferredResultFormat() int16

func (*BPChar) Scan

func (dst *BPChar) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*BPChar) Set

func (dst *BPChar) Set(src interface{}) error

Set converts from src to dst.

func (*BPChar) UnmarshalJSON

func (dst *BPChar) UnmarshalJSON(b []byte) error

func (BPChar) Value

func (src BPChar) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type BPCharArray

type BPCharArray struct {
	Elements   []BPChar
	Dimensions []ArrayDimension
	Status     Status
}

func (*BPCharArray) AssignTo

func (src *BPCharArray) AssignTo(dst interface{}) error

func (*BPCharArray) DecodeBinary

func (dst *BPCharArray) DecodeBinary(ci *ConnInfo, src []byte) error

func (*BPCharArray) DecodeText

func (dst *BPCharArray) DecodeText(ci *ConnInfo, src []byte) error

func (BPCharArray) EncodeBinary

func (src BPCharArray) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (BPCharArray) EncodeText

func (src BPCharArray) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (BPCharArray) Get

func (dst BPCharArray) Get() interface{}

func (*BPCharArray) Scan

func (dst *BPCharArray) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*BPCharArray) Set

func (dst *BPCharArray) Set(src interface{}) error

func (BPCharArray) Value

func (src BPCharArray) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type BinaryDecoder

type BinaryDecoder interface {
	// DecodeBinary decodes src into BinaryDecoder. If src is nil then the
	// original SQL value is NULL. BinaryDecoder takes ownership of src. The
	// caller MUST not use it again.
	DecodeBinary(ci *ConnInfo, src []byte) error
}

type BinaryEncoder

type BinaryEncoder interface {
	// EncodeBinary should append the binary format of self to buf. If self is the
	// SQL value NULL then append nothing and return (nil, nil). The caller of
	// EncodeBinary is responsible for writing the correct NULL value or the
	// length of the data written.
	EncodeBinary(ci *ConnInfo, buf []byte) (newBuf []byte, err error)
}

BinaryEncoder is implemented by types that can encode themselves into the PostgreSQL binary wire format.

type Bit

type Bit Varbit

func (*Bit) AssignTo

func (src *Bit) AssignTo(dst interface{}) error

func (*Bit) DecodeBinary

func (dst *Bit) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Bit) DecodeText

func (dst *Bit) DecodeText(ci *ConnInfo, src []byte) error

func (Bit) EncodeBinary

func (src Bit) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Bit) EncodeText

func (src Bit) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Bit) Get

func (dst Bit) Get() interface{}

func (*Bit) Scan

func (dst *Bit) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Bit) Set

func (dst *Bit) Set(src interface{}) error

func (Bit) Value

func (src Bit) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Bool

type Bool struct {
	Bool   bool
	Status Status
}

func (*Bool) AssignTo

func (src *Bool) AssignTo(dst interface{}) error

func (*Bool) DecodeBinary

func (dst *Bool) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Bool) DecodeText

func (dst *Bool) DecodeText(ci *ConnInfo, src []byte) error

func (Bool) EncodeBinary

func (src Bool) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Bool) EncodeText

func (src Bool) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Bool) Get

func (dst Bool) Get() interface{}

func (Bool) MarshalJSON

func (src Bool) MarshalJSON() ([]byte, error)

func (*Bool) Scan

func (dst *Bool) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Bool) Set

func (dst *Bool) Set(src interface{}) error

func (*Bool) UnmarshalJSON

func (dst *Bool) UnmarshalJSON(b []byte) error

func (Bool) Value

func (src Bool) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type BoolArray

type BoolArray struct {
	Elements   []Bool
	Dimensions []ArrayDimension
	Status     Status
}

func (*BoolArray) AssignTo

func (src *BoolArray) AssignTo(dst interface{}) error

func (*BoolArray) DecodeBinary

func (dst *BoolArray) DecodeBinary(ci *ConnInfo, src []byte) error

func (*BoolArray) DecodeText

func (dst *BoolArray) DecodeText(ci *ConnInfo, src []byte) error

func (BoolArray) EncodeBinary

func (src BoolArray) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (BoolArray) EncodeText

func (src BoolArray) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (BoolArray) Get

func (dst BoolArray) Get() interface{}

func (*BoolArray) Scan

func (dst *BoolArray) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*BoolArray) Set

func (dst *BoolArray) Set(src interface{}) error

func (BoolArray) Value

func (src BoolArray) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type BoundType

type BoundType byte

func (BoundType) String

func (bt BoundType) String() string

type Box

type Box struct {
	P      [2]Vec2
	Status Status
}

func (*Box) AssignTo

func (src *Box) AssignTo(dst interface{}) error

func (*Box) DecodeBinary

func (dst *Box) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Box) DecodeText

func (dst *Box) DecodeText(ci *ConnInfo, src []byte) error

func (Box) EncodeBinary

func (src Box) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Box) EncodeText

func (src Box) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Box) Get

func (dst Box) Get() interface{}

func (*Box) Scan

func (dst *Box) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Box) Set

func (dst *Box) Set(src interface{}) error

func (Box) Value

func (src Box) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Bytea

type Bytea struct {
	Bytes  []byte
	Status Status
}

func (*Bytea) AssignTo

func (src *Bytea) AssignTo(dst interface{}) error

func (*Bytea) DecodeBinary

func (dst *Bytea) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Bytea) DecodeText

func (dst *Bytea) DecodeText(ci *ConnInfo, src []byte) error

DecodeText only supports the hex format. This has been the default since PostgreSQL 9.0.

func (Bytea) EncodeBinary

func (src Bytea) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Bytea) EncodeText

func (src Bytea) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Bytea) Get

func (dst Bytea) Get() interface{}

func (*Bytea) Scan

func (dst *Bytea) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Bytea) Set

func (dst *Bytea) Set(src interface{}) error

func (Bytea) Value

func (src Bytea) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type ByteaArray

type ByteaArray struct {
	Elements   []Bytea
	Dimensions []ArrayDimension
	Status     Status
}

func (*ByteaArray) AssignTo

func (src *ByteaArray) AssignTo(dst interface{}) error

func (*ByteaArray) DecodeBinary

func (dst *ByteaArray) DecodeBinary(ci *ConnInfo, src []byte) error

func (*ByteaArray) DecodeText

func (dst *ByteaArray) DecodeText(ci *ConnInfo, src []byte) error

func (ByteaArray) EncodeBinary

func (src ByteaArray) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (ByteaArray) EncodeText

func (src ByteaArray) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (ByteaArray) Get

func (dst ByteaArray) Get() interface{}

func (*ByteaArray) Scan

func (dst *ByteaArray) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*ByteaArray) Set

func (dst *ByteaArray) Set(src interface{}) error

func (ByteaArray) Value

func (src ByteaArray) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type CID

type CID pguint32

CID is PostgreSQL's Command Identifier type.

When one does

select cmin, cmax, * from some_table;

it is the data type of the cmin and cmax hidden system columns.

It is currently implemented as an unsigned four byte integer. Its definition can be found in src/include/c.h as CommandId in the PostgreSQL sources.

func (*CID) AssignTo

func (src *CID) AssignTo(dst interface{}) error

AssignTo assigns from src to dst. Note that as CID is not a general number type AssignTo does not do automatic type conversion as other number types do.

func (*CID) DecodeBinary

func (dst *CID) DecodeBinary(ci *ConnInfo, src []byte) error

func (*CID) DecodeText

func (dst *CID) DecodeText(ci *ConnInfo, src []byte) error

func (CID) EncodeBinary

func (src CID) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (CID) EncodeText

func (src CID) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (CID) Get

func (dst CID) Get() interface{}

func (*CID) Scan

func (dst *CID) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*CID) Set

func (dst *CID) Set(src interface{}) error

Set converts from src to dst. Note that as CID is not a general number type Set does not do automatic type conversion as other number types do.

func (CID) Value

func (src CID) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type CIDR

type CIDR Inet

func (*CIDR) AssignTo

func (src *CIDR) AssignTo(dst interface{}) error

func (*CIDR) DecodeBinary

func (dst *CIDR) DecodeBinary(ci *ConnInfo, src []byte) error

func (*CIDR) DecodeText

func (dst *CIDR) DecodeText(ci *ConnInfo, src []byte) error

func (CIDR) EncodeBinary

func (src CIDR) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (CIDR) EncodeText

func (src CIDR) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (CIDR) Get

func (dst CIDR) Get() interface{}

func (*CIDR) Set

func (dst *CIDR) Set(src interface{}) error

type CIDRArray

type CIDRArray struct {
	Elements   []CIDR
	Dimensions []ArrayDimension
	Status     Status
}

func (*CIDRArray) AssignTo

func (src *CIDRArray) AssignTo(dst interface{}) error

func (*CIDRArray) DecodeBinary

func (dst *CIDRArray) DecodeBinary(ci *ConnInfo, src []byte) error

func (*CIDRArray) DecodeText

func (dst *CIDRArray) DecodeText(ci *ConnInfo, src []byte) error

func (CIDRArray) EncodeBinary

func (src CIDRArray) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (CIDRArray) EncodeText

func (src CIDRArray) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (CIDRArray) Get

func (dst CIDRArray) Get() interface{}

func (*CIDRArray) Scan

func (dst *CIDRArray) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*CIDRArray) Set

func (dst *CIDRArray) Set(src interface{}) error

func (CIDRArray) Value

func (src CIDRArray) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Circle

type Circle struct {
	P      Vec2
	R      float64
	Status Status
}

func (*Circle) AssignTo

func (src *Circle) AssignTo(dst interface{}) error

func (*Circle) DecodeBinary

func (dst *Circle) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Circle) DecodeText

func (dst *Circle) DecodeText(ci *ConnInfo, src []byte) error

func (Circle) EncodeBinary

func (src Circle) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Circle) EncodeText

func (src Circle) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Circle) Get

func (dst Circle) Get() interface{}

func (*Circle) Scan

func (dst *Circle) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Circle) Set

func (dst *Circle) Set(src interface{}) error

func (Circle) Value

func (src Circle) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type CompositeBinaryBuilder

type CompositeBinaryBuilder struct {
	// contains filtered or unexported fields
}

func NewCompositeBinaryBuilder

func NewCompositeBinaryBuilder(ci *ConnInfo, buf []byte) *CompositeBinaryBuilder

func (*CompositeBinaryBuilder) AppendEncoder

func (b *CompositeBinaryBuilder) AppendEncoder(oid uint32, field BinaryEncoder)

func (*CompositeBinaryBuilder) AppendValue

func (b *CompositeBinaryBuilder) AppendValue(oid uint32, field interface{})

func (*CompositeBinaryBuilder) Finish

func (b *CompositeBinaryBuilder) Finish() ([]byte, error)

type CompositeBinaryScanner

type CompositeBinaryScanner struct {
	// contains filtered or unexported fields
}

func NewCompositeBinaryScanner

func NewCompositeBinaryScanner(ci *ConnInfo, src []byte) *CompositeBinaryScanner

NewCompositeBinaryScanner a scanner over a binary encoded composite balue.

func (*CompositeBinaryScanner) Bytes

func (cfs *CompositeBinaryScanner) Bytes() []byte

Bytes returns the bytes of the field most recently read by Scan().

func (*CompositeBinaryScanner) Err

func (cfs *CompositeBinaryScanner) Err() error

Err returns any error encountered by the scanner.

func (*CompositeBinaryScanner) FieldCount

func (cfs *CompositeBinaryScanner) FieldCount() int

func (*CompositeBinaryScanner) Next

func (cfs *CompositeBinaryScanner) Next() bool

Next advances the scanner to the next field. It returns false after the last field is read or an error occurs. After Next returns false, the Err method can be called to check if any errors occurred.

func (*CompositeBinaryScanner) OID

func (cfs *CompositeBinaryScanner) OID() uint32

OID returns the OID of the field most recently read by Scan().

func (*CompositeBinaryScanner) ScanDecoder

func (cfs *CompositeBinaryScanner) ScanDecoder(d BinaryDecoder)

ScanDecoder calls Next and decodes the result with d.

func (*CompositeBinaryScanner) ScanValue

func (cfs *CompositeBinaryScanner) ScanValue(d interface{})

ScanDecoder calls Next and scans the result into d.

type CompositeFields

type CompositeFields []interface{}

CompositeFields scans the fields of a composite type into the elements of the CompositeFields value. To scan a nullable value use a *CompositeFields. It will be set to nil in case of null.

CompositeFields implements EncodeBinary and EncodeText. However, functionality is limited due to CompositeFields not knowing the PostgreSQL schema of the composite type. Prefer using a registered CompositeType.

func (CompositeFields) DecodeBinary

func (cf CompositeFields) DecodeBinary(ci *ConnInfo, src []byte) error

func (CompositeFields) DecodeText

func (cf CompositeFields) DecodeText(ci *ConnInfo, src []byte) error

func (CompositeFields) EncodeBinary

func (cf CompositeFields) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

EncodeBinary encodes composite fields into the binary format. Unlike CompositeType the schema of the destination is unknown. Prefer registering a CompositeType to using CompositeFields to encode directly. Because the binary composite format requires the OID of each field to be specified the only types that will work are those known to ConnInfo.

In particular:

* Nil cannot be used because there is no way to determine what type it. * Integer types must be exact matches. e.g. A Go int32 into a PostgreSQL bigint will fail. * No dereferencing will be done. e.g. *Text must be used instead of Text.

func (CompositeFields) EncodeText

func (cf CompositeFields) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

EncodeText encodes composite fields into the text format. Prefer registering a CompositeType to using CompositeFields to encode directly.

type CompositeTextBuilder

type CompositeTextBuilder struct {
	// contains filtered or unexported fields
}

func NewCompositeTextBuilder

func NewCompositeTextBuilder(ci *ConnInfo, buf []byte) *CompositeTextBuilder

func (*CompositeTextBuilder) AppendEncoder

func (b *CompositeTextBuilder) AppendEncoder(field TextEncoder)

func (*CompositeTextBuilder) AppendValue

func (b *CompositeTextBuilder) AppendValue(field interface{})

func (*CompositeTextBuilder) Finish

func (b *CompositeTextBuilder) Finish() ([]byte, error)

type CompositeTextScanner

type CompositeTextScanner struct {
	// contains filtered or unexported fields
}

func NewCompositeTextScanner

func NewCompositeTextScanner(ci *ConnInfo, src []byte) *CompositeTextScanner

NewCompositeTextScanner a scanner over a text encoded composite value.

func (*CompositeTextScanner) Bytes

func (cfs *CompositeTextScanner) Bytes() []byte

Bytes returns the bytes of the field most recently read by Scan().

func (*CompositeTextScanner) Err

func (cfs *CompositeTextScanner) Err() error

Err returns any error encountered by the scanner.

func (*CompositeTextScanner) Next

func (cfs *CompositeTextScanner) Next() bool

Next advances the scanner to the next field. It returns false after the last field is read or an error occurs. After Next returns false, the Err method can be called to check if any errors occurred.

func (*CompositeTextScanner) ScanDecoder

func (cfs *CompositeTextScanner) ScanDecoder(d TextDecoder)

ScanDecoder calls Next and decodes the result with d.

func (*CompositeTextScanner) ScanValue

func (cfs *CompositeTextScanner) ScanValue(d interface{})

ScanDecoder calls Next and scans the result into d.

type CompositeType

type CompositeType struct {
	// contains filtered or unexported fields
}

func NewCompositeType

func NewCompositeType(typeName string, fields []CompositeTypeField, ci *ConnInfo) (*CompositeType, error)

NewCompositeType creates a CompositeType from fields and ci. ci is used to find the ValueTranscoders used for fields. All field OIDs must be previously registered in ci.

func NewCompositeTypeValues

func NewCompositeTypeValues(typeName string, fields []CompositeTypeField, values []ValueTranscoder) (*CompositeType, error)

NewCompositeTypeValues creates a CompositeType from fields and values. fields and values must have the same length. Prefer NewCompositeType unless overriding the transcoding of fields is required.

func (CompositeType) AssignTo

func (src CompositeType) AssignTo(dst interface{}) error

AssignTo should never be called on composite value directly

func (*CompositeType) DecodeBinary

func (dst *CompositeType) DecodeBinary(ci *ConnInfo, buf []byte) error

DecodeBinary implements BinaryDecoder interface. Opposite to Record, fields in a composite act as a "schema" and decoding fails if SQL value can't be assigned due to type mismatch

func (*CompositeType) DecodeText

func (dst *CompositeType) DecodeText(ci *ConnInfo, buf []byte) error

func (CompositeType) EncodeBinary

func (src CompositeType) EncodeBinary(ci *ConnInfo, buf []byte) (newBuf []byte, err error)

func (CompositeType) EncodeText

func (src CompositeType) EncodeText(ci *ConnInfo, buf []byte) (newBuf []byte, err error)

func (*CompositeType) Fields

func (ct *CompositeType) Fields() []CompositeTypeField

func (CompositeType) Get

func (src CompositeType) Get() interface{}

func (*CompositeType) NewTypeValue

func (ct *CompositeType) NewTypeValue() Value

func (*CompositeType) Set

func (dst *CompositeType) Set(src interface{}) error

func (*CompositeType) TypeName

func (ct *CompositeType) TypeName() string

type CompositeTypeField

type CompositeTypeField struct {
	Name string
	OID  uint32
}

type ConnInfo

type ConnInfo struct {
	// contains filtered or unexported fields
}

func NewConnInfo

func NewConnInfo() *ConnInfo

func (*ConnInfo) DataTypeForName

func (ci *ConnInfo) DataTypeForName(name string) (*DataType, bool)

func (*ConnInfo) DataTypeForOID

func (ci *ConnInfo) DataTypeForOID(oid uint32) (*DataType, bool)

func (*ConnInfo) DataTypeForValue

func (ci *ConnInfo) DataTypeForValue(v interface{}) (*DataType, bool)

DataTypeForValue finds a data type suitable for v. Use RegisterDataType to register types that can encode and decode themselves. Use RegisterDefaultPgType to register that can be handled by a registered data type.

func (*ConnInfo) DeepCopy

func (ci *ConnInfo) DeepCopy() *ConnInfo

DeepCopy makes a deep copy of the ConnInfo.

func (*ConnInfo) InitializeDataTypes

func (ci *ConnInfo) InitializeDataTypes(nameOIDs map[string]uint32)

func (*ConnInfo) ParamFormatCodeForOID

func (ci *ConnInfo) ParamFormatCodeForOID(oid uint32) int16

func (*ConnInfo) PlanScan

func (ci *ConnInfo) PlanScan(oid uint32, formatCode int16, dst interface{}) ScanPlan

PlanScan prepares a plan to scan a value into dst.

func (*ConnInfo) RegisterDataType

func (ci *ConnInfo) RegisterDataType(t DataType)

func (*ConnInfo) RegisterDefaultPgType

func (ci *ConnInfo) RegisterDefaultPgType(value interface{}, name string)

RegisterDefaultPgType registers a mapping of a Go type to a PostgreSQL type name. Typically the data type to be encoded or decoded is determined by the PostgreSQL OID. But if the OID of a value to be encoded or decoded is unknown, this additional mapping will be used by DataTypeForValue to determine a suitable data type.

func (*ConnInfo) ResultFormatCodeForOID

func (ci *ConnInfo) ResultFormatCodeForOID(oid uint32) int16

func (*ConnInfo) Scan

func (ci *ConnInfo) Scan(oid uint32, formatCode int16, src []byte, dst interface{}) error

type DataType

type DataType struct {
	Value Value

	Name string
	OID  uint32
	// contains filtered or unexported fields
}

type Date

type Date struct {
	Time             time.Time
	Status           Status
	InfinityModifier InfinityModifier
}

func (*Date) AssignTo

func (src *Date) AssignTo(dst interface{}) error

func (*Date) DecodeBinary

func (dst *Date) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Date) DecodeText

func (dst *Date) DecodeText(ci *ConnInfo, src []byte) error

func (Date) EncodeBinary

func (src Date) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Date) EncodeText

func (src Date) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Date) Get

func (dst Date) Get() interface{}

func (Date) MarshalJSON

func (src Date) MarshalJSON() ([]byte, error)

func (*Date) Scan

func (dst *Date) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Date) Set

func (dst *Date) Set(src interface{}) error

func (*Date) UnmarshalJSON

func (dst *Date) UnmarshalJSON(b []byte) error

func (Date) Value

func (src Date) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type DateArray

type DateArray struct {
	Elements   []Date
	Dimensions []ArrayDimension
	Status     Status
}

func (*DateArray) AssignTo

func (src *DateArray) AssignTo(dst interface{}) error

func (*DateArray) DecodeBinary

func (dst *DateArray) DecodeBinary(ci *ConnInfo, src []byte) error

func (*DateArray) DecodeText

func (dst *DateArray) DecodeText(ci *ConnInfo, src []byte) error

func (DateArray) EncodeBinary

func (src DateArray) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (DateArray) EncodeText

func (src DateArray) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (DateArray) Get

func (dst DateArray) Get() interface{}

func (*DateArray) Scan

func (dst *DateArray) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*DateArray) Set

func (dst *DateArray) Set(src interface{}) error

func (DateArray) Value

func (src DateArray) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Daterange

type Daterange struct {
	Lower     Date
	Upper     Date
	LowerType BoundType
	UpperType BoundType
	Status    Status
}

func (*Daterange) AssignTo

func (src *Daterange) AssignTo(dst interface{}) error

func (*Daterange) DecodeBinary

func (dst *Daterange) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Daterange) DecodeText

func (dst *Daterange) DecodeText(ci *ConnInfo, src []byte) error

func (Daterange) EncodeBinary

func (src Daterange) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Daterange) EncodeText

func (src Daterange) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Daterange) Get

func (dst Daterange) Get() interface{}

func (*Daterange) Scan

func (dst *Daterange) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Daterange) Set

func (dst *Daterange) Set(src interface{}) error

func (Daterange) Value

func (src Daterange) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type EnumArray

type EnumArray struct {
	Elements   []GenericText
	Dimensions []ArrayDimension
	Status     Status
}

func (*EnumArray) AssignTo

func (src *EnumArray) AssignTo(dst interface{}) error

func (*EnumArray) DecodeText

func (dst *EnumArray) DecodeText(ci *ConnInfo, src []byte) error

func (EnumArray) EncodeText

func (src EnumArray) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (EnumArray) Get

func (dst EnumArray) Get() interface{}

func (*EnumArray) Scan

func (dst *EnumArray) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*EnumArray) Set

func (dst *EnumArray) Set(src interface{}) error

func (EnumArray) Value

func (src EnumArray) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type EnumType

type EnumType struct {
	// contains filtered or unexported fields
}

EnumType represents a enum type. While it implements Value, this is only in service of its type conversion duties when registered as a data type in a ConnType. It should not be used directly as a Value.

func NewEnumType

func NewEnumType(typeName string, members []string) *EnumType

NewEnumType initializes a new EnumType. It retains a read-only reference to members. members must not be changed.

func (*EnumType) AssignTo

func (src *EnumType) AssignTo(dst interface{}) error

func (*EnumType) DecodeBinary

func (dst *EnumType) DecodeBinary(ci *ConnInfo, src []byte) error

func (*EnumType) DecodeText

func (dst *EnumType) DecodeText(ci *ConnInfo, src []byte) error

func (EnumType) EncodeBinary

func (src EnumType) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (EnumType) EncodeText

func (src EnumType) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (EnumType) Get

func (dst EnumType) Get() interface{}

func (*EnumType) Members

func (et *EnumType) Members() []string

func (*EnumType) NewTypeValue

func (et *EnumType) NewTypeValue() Value

func (EnumType) PreferredParamFormat

func (EnumType) PreferredParamFormat() int16

func (EnumType) PreferredResultFormat

func (EnumType) PreferredResultFormat() int16

func (*EnumType) Set

func (dst *EnumType) Set(src interface{}) error

Set assigns src to dst. Set purposely does not check that src is a member. This allows continued error free operation in the event the PostgreSQL enum type is modified during a connection.

func (*EnumType) TypeName

func (et *EnumType) TypeName() string

type Float4

type Float4 struct {
	Float  float32
	Status Status
}

func (*Float4) AssignTo

func (src *Float4) AssignTo(dst interface{}) error

func (*Float4) DecodeBinary

func (dst *Float4) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Float4) DecodeText

func (dst *Float4) DecodeText(ci *ConnInfo, src []byte) error

func (Float4) EncodeBinary

func (src Float4) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Float4) EncodeText

func (src Float4) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Float4) Get

func (dst Float4) Get() interface{}

func (*Float4) Scan

func (dst *Float4) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Float4) Set

func (dst *Float4) Set(src interface{}) error

func (Float4) Value

func (src Float4) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Float4Array

type Float4Array struct {
	Elements   []Float4
	Dimensions []ArrayDimension
	Status     Status
}

func (*Float4Array) AssignTo

func (src *Float4Array) AssignTo(dst interface{}) error

func (*Float4Array) DecodeBinary

func (dst *Float4Array) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Float4Array) DecodeText

func (dst *Float4Array) DecodeText(ci *ConnInfo, src []byte) error

func (Float4Array) EncodeBinary

func (src Float4Array) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Float4Array) EncodeText

func (src Float4Array) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Float4Array) Get

func (dst Float4Array) Get() interface{}

func (*Float4Array) Scan

func (dst *Float4Array) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Float4Array) Set

func (dst *Float4Array) Set(src interface{}) error

func (Float4Array) Value

func (src Float4Array) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Float8

type Float8 struct {
	Float  float64
	Status Status
}

func (*Float8) AssignTo

func (src *Float8) AssignTo(dst interface{}) error

func (*Float8) DecodeBinary

func (dst *Float8) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Float8) DecodeText

func (dst *Float8) DecodeText(ci *ConnInfo, src []byte) error

func (Float8) EncodeBinary

func (src Float8) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Float8) EncodeText

func (src Float8) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Float8) Get

func (dst Float8) Get() interface{}

func (*Float8) Scan

func (dst *Float8) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Float8) Set

func (dst *Float8) Set(src interface{}) error

func (Float8) Value

func (src Float8) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Float8Array

type Float8Array struct {
	Elements   []Float8
	Dimensions []ArrayDimension
	Status     Status
}

func (*Float8Array) AssignTo

func (src *Float8Array) AssignTo(dst interface{}) error

func (*Float8Array) DecodeBinary

func (dst *Float8Array) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Float8Array) DecodeText

func (dst *Float8Array) DecodeText(ci *ConnInfo, src []byte) error

func (Float8Array) EncodeBinary

func (src Float8Array) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Float8Array) EncodeText

func (src Float8Array) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Float8Array) Get

func (dst Float8Array) Get() interface{}

func (*Float8Array) Scan

func (dst *Float8Array) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Float8Array) Set

func (dst *Float8Array) Set(src interface{}) error

func (Float8Array) Value

func (src Float8Array) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type GenericBinary

type GenericBinary Bytea

GenericBinary is a placeholder for binary format values that no other type exists to handle.

func (*GenericBinary) AssignTo

func (src *GenericBinary) AssignTo(dst interface{}) error

func (*GenericBinary) DecodeBinary

func (dst *GenericBinary) DecodeBinary(ci *ConnInfo, src []byte) error

func (GenericBinary) EncodeBinary

func (src GenericBinary) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (GenericBinary) Get

func (dst GenericBinary) Get() interface{}

func (*GenericBinary) Scan

func (dst *GenericBinary) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*GenericBinary) Set

func (dst *GenericBinary) Set(src interface{}) error

func (GenericBinary) Value

func (src GenericBinary) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type GenericText

type GenericText Text

GenericText is a placeholder for text format values that no other type exists to handle.

func (*GenericText) AssignTo

func (src *GenericText) AssignTo(dst interface{}) error

func (*GenericText) DecodeText

func (dst *GenericText) DecodeText(ci *ConnInfo, src []byte) error

func (GenericText) EncodeText

func (src GenericText) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (GenericText) Get

func (dst GenericText) Get() interface{}

func (*GenericText) Scan

func (dst *GenericText) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*GenericText) Set

func (dst *GenericText) Set(src interface{}) error

func (GenericText) Value

func (src GenericText) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Hstore

type Hstore struct {
	Map    map[string]Text
	Status Status
}

Hstore represents an hstore column that can be null or have null values associated with its keys.

func (*Hstore) AssignTo

func (src *Hstore) AssignTo(dst interface{}) error

func (*Hstore) DecodeBinary

func (dst *Hstore) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Hstore) DecodeText

func (dst *Hstore) DecodeText(ci *ConnInfo, src []byte) error

func (Hstore) EncodeBinary

func (src Hstore) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Hstore) EncodeText

func (src Hstore) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Hstore) Get

func (dst Hstore) Get() interface{}

func (*Hstore) Scan

func (dst *Hstore) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Hstore) Set

func (dst *Hstore) Set(src interface{}) error

func (Hstore) Value

func (src Hstore) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type HstoreArray

type HstoreArray struct {
	Elements   []Hstore
	Dimensions []ArrayDimension
	Status     Status
}

func (*HstoreArray) AssignTo

func (src *HstoreArray) AssignTo(dst interface{}) error

func (*HstoreArray) DecodeBinary

func (dst *HstoreArray) DecodeBinary(ci *ConnInfo, src []byte) error

func (*HstoreArray) DecodeText

func (dst *HstoreArray) DecodeText(ci *ConnInfo, src []byte) error

func (HstoreArray) EncodeBinary

func (src HstoreArray) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (HstoreArray) EncodeText

func (src HstoreArray) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (HstoreArray) Get

func (dst HstoreArray) Get() interface{}

func (*HstoreArray) Scan

func (dst *HstoreArray) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*HstoreArray) Set

func (dst *HstoreArray) Set(src interface{}) error

func (HstoreArray) Value

func (src HstoreArray) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Inet

type Inet struct {
	IPNet  *net.IPNet
	Status Status
}

Inet represents both inet and cidr PostgreSQL types.

func (*Inet) AssignTo

func (src *Inet) AssignTo(dst interface{}) error

func (*Inet) DecodeBinary

func (dst *Inet) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Inet) DecodeText

func (dst *Inet) DecodeText(ci *ConnInfo, src []byte) error

func (Inet) EncodeBinary

func (src Inet) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

EncodeBinary encodes src into w.

func (Inet) EncodeText

func (src Inet) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Inet) Get

func (dst Inet) Get() interface{}

func (*Inet) Scan

func (dst *Inet) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Inet) Set

func (dst *Inet) Set(src interface{}) error

func (Inet) Value

func (src Inet) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type InetArray

type InetArray struct {
	Elements   []Inet
	Dimensions []ArrayDimension
	Status     Status
}

func (*InetArray) AssignTo

func (src *InetArray) AssignTo(dst interface{}) error

func (*InetArray) DecodeBinary

func (dst *InetArray) DecodeBinary(ci *ConnInfo, src []byte) error

func (*InetArray) DecodeText

func (dst *InetArray) DecodeText(ci *ConnInfo, src []byte) error

func (InetArray) EncodeBinary

func (src InetArray) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (InetArray) EncodeText

func (src InetArray) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (InetArray) Get

func (dst InetArray) Get() interface{}

func (*InetArray) Scan

func (dst *InetArray) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*InetArray) Set

func (dst *InetArray) Set(src interface{}) error

func (InetArray) Value

func (src InetArray) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type InfinityModifier

type InfinityModifier int8
const (
	Infinity         InfinityModifier = 1
	None             InfinityModifier = 0
	NegativeInfinity InfinityModifier = -Infinity
)

func (InfinityModifier) String

func (im InfinityModifier) String() string

type Int2

type Int2 struct {
	Int    int16
	Status Status
}

func (*Int2) AssignTo

func (src *Int2) AssignTo(dst interface{}) error

func (*Int2) DecodeBinary

func (dst *Int2) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Int2) DecodeText

func (dst *Int2) DecodeText(ci *ConnInfo, src []byte) error

func (Int2) EncodeBinary

func (src Int2) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Int2) EncodeText

func (src Int2) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Int2) Get

func (dst Int2) Get() interface{}

func (Int2) MarshalJSON

func (src Int2) MarshalJSON() ([]byte, error)

func (*Int2) Scan

func (dst *Int2) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Int2) Set

func (dst *Int2) Set(src interface{}) error

func (Int2) Value

func (src Int2) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Int2Array

type Int2Array struct {
	Elements   []Int2
	Dimensions []ArrayDimension
	Status     Status
}

func (*Int2Array) AssignTo

func (src *Int2Array) AssignTo(dst interface{}) error

func (*Int2Array) DecodeBinary

func (dst *Int2Array) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Int2Array) DecodeText

func (dst *Int2Array) DecodeText(ci *ConnInfo, src []byte) error

func (Int2Array) EncodeBinary

func (src Int2Array) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Int2Array) EncodeText

func (src Int2Array) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Int2Array) Get

func (dst Int2Array) Get() interface{}

func (*Int2Array) Scan

func (dst *Int2Array) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Int2Array) Set

func (dst *Int2Array) Set(src interface{}) error

func (Int2Array) Value

func (src Int2Array) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Int4

type Int4 struct {
	Int    int32
	Status Status
}

func (*Int4) AssignTo

func (src *Int4) AssignTo(dst interface{}) error

func (*Int4) DecodeBinary

func (dst *Int4) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Int4) DecodeText

func (dst *Int4) DecodeText(ci *ConnInfo, src []byte) error

func (Int4) EncodeBinary

func (src Int4) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Int4) EncodeText

func (src Int4) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Int4) Get

func (dst Int4) Get() interface{}

func (Int4) MarshalJSON

func (src Int4) MarshalJSON() ([]byte, error)

func (*Int4) Scan

func (dst *Int4) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Int4) Set

func (dst *Int4) Set(src interface{}) error

func (*Int4) UnmarshalJSON

func (dst *Int4) UnmarshalJSON(b []byte) error

func (Int4) Value

func (src Int4) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Int4Array

type Int4Array struct {
	Elements   []Int4
	Dimensions []ArrayDimension
	Status     Status
}

func (*Int4Array) AssignTo

func (src *Int4Array) AssignTo(dst interface{}) error

func (*Int4Array) DecodeBinary

func (dst *Int4Array) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Int4Array) DecodeText

func (dst *Int4Array) DecodeText(ci *ConnInfo, src []byte) error

func (Int4Array) EncodeBinary

func (src Int4Array) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Int4Array) EncodeText

func (src Int4Array) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Int4Array) Get

func (dst Int4Array) Get() interface{}

func (*Int4Array) Scan

func (dst *Int4Array) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Int4Array) Set

func (dst *Int4Array) Set(src interface{}) error

func (Int4Array) Value

func (src Int4Array) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Int4range

type Int4range struct {
	Lower     Int4
	Upper     Int4
	LowerType BoundType
	UpperType BoundType
	Status    Status
}

func (*Int4range) AssignTo

func (src *Int4range) AssignTo(dst interface{}) error

func (*Int4range) DecodeBinary

func (dst *Int4range) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Int4range) DecodeText

func (dst *Int4range) DecodeText(ci *ConnInfo, src []byte) error

func (Int4range) EncodeBinary

func (src Int4range) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Int4range) EncodeText

func (src Int4range) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Int4range) Get

func (dst Int4range) Get() interface{}

func (*Int4range) Scan

func (dst *Int4range) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Int4range) Set

func (dst *Int4range) Set(src interface{}) error

func (Int4range) Value

func (src Int4range) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Int8

type Int8 struct {
	Int    int64
	Status Status
}

func (*Int8) AssignTo

func (src *Int8) AssignTo(dst interface{}) error

func (*Int8) DecodeBinary

func (dst *Int8) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Int8) DecodeText

func (dst *Int8) DecodeText(ci *ConnInfo, src []byte) error

func (Int8) EncodeBinary

func (src Int8) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Int8) EncodeText

func (src Int8) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Int8) Get

func (dst Int8) Get() interface{}

func (Int8) MarshalJSON

func (src Int8) MarshalJSON() ([]byte, error)

func (*Int8) Scan

func (dst *Int8) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Int8) Set

func (dst *Int8) Set(src interface{}) error

func (*Int8) UnmarshalJSON

func (dst *Int8) UnmarshalJSON(b []byte) error

func (Int8) Value

func (src Int8) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Int8Array

type Int8Array struct {
	Elements   []Int8
	Dimensions []ArrayDimension
	Status     Status
}

func (*Int8Array) AssignTo

func (src *Int8Array) AssignTo(dst interface{}) error

func (*Int8Array) DecodeBinary

func (dst *Int8Array) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Int8Array) DecodeText

func (dst *Int8Array) DecodeText(ci *ConnInfo, src []byte) error

func (Int8Array) EncodeBinary

func (src Int8Array) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Int8Array) EncodeText

func (src Int8Array) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Int8Array) Get

func (dst Int8Array) Get() interface{}

func (*Int8Array) Scan

func (dst *Int8Array) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Int8Array) Set

func (dst *Int8Array) Set(src interface{}) error

func (Int8Array) Value

func (src Int8Array) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Int8range

type Int8range struct {
	Lower     Int8
	Upper     Int8
	LowerType BoundType
	UpperType BoundType
	Status    Status
}

func (*Int8range) AssignTo

func (src *Int8range) AssignTo(dst interface{}) error

func (*Int8range) DecodeBinary

func (dst *Int8range) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Int8range) DecodeText

func (dst *Int8range) DecodeText(ci *ConnInfo, src []byte) error

func (Int8range) EncodeBinary

func (src Int8range) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Int8range) EncodeText

func (src Int8range) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Int8range) Get

func (dst Int8range) Get() interface{}

func (*Int8range) Scan

func (dst *Int8range) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Int8range) Set

func (dst *Int8range) Set(src interface{}) error

func (Int8range) Value

func (src Int8range) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Interval

type Interval struct {
	Microseconds int64
	Days         int32
	Months       int32
	Status       Status
}

func (*Interval) AssignTo

func (src *Interval) AssignTo(dst interface{}) error

func (*Interval) DecodeBinary

func (dst *Interval) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Interval) DecodeText

func (dst *Interval) DecodeText(ci *ConnInfo, src []byte) error

func (Interval) EncodeBinary

func (src Interval) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

EncodeBinary encodes src into w.

func (Interval) EncodeText

func (src Interval) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Interval) Get

func (dst Interval) Get() interface{}

func (*Interval) Scan

func (dst *Interval) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Interval) Set

func (dst *Interval) Set(src interface{}) error

func (Interval) Value

func (src Interval) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type JSON

type JSON struct {
	Bytes  []byte
	Status Status
}

func (*JSON) AssignTo

func (src *JSON) AssignTo(dst interface{}) error

func (*JSON) DecodeBinary

func (dst *JSON) DecodeBinary(ci *ConnInfo, src []byte) error

func (*JSON) DecodeText

func (dst *JSON) DecodeText(ci *ConnInfo, src []byte) error

func (JSON) EncodeBinary

func (src JSON) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (JSON) EncodeText

func (src JSON) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (JSON) Get

func (dst JSON) Get() interface{}

func (JSON) MarshalJSON

func (src JSON) MarshalJSON() ([]byte, error)

func (JSON) PreferredParamFormat

func (JSON) PreferredParamFormat() int16

func (JSON) PreferredResultFormat

func (JSON) PreferredResultFormat() int16

func (*JSON) Scan

func (dst *JSON) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*JSON) Set

func (dst *JSON) Set(src interface{}) error

func (*JSON) UnmarshalJSON

func (dst *JSON) UnmarshalJSON(b []byte) error

func (JSON) Value

func (src JSON) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type JSONB

type JSONB JSON

func (*JSONB) AssignTo

func (src *JSONB) AssignTo(dst interface{}) error

func (*JSONB) DecodeBinary

func (dst *JSONB) DecodeBinary(ci *ConnInfo, src []byte) error

func (*JSONB) DecodeText

func (dst *JSONB) DecodeText(ci *ConnInfo, src []byte) error

func (JSONB) EncodeBinary

func (src JSONB) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (JSONB) EncodeText

func (src JSONB) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (JSONB) Get

func (dst JSONB) Get() interface{}

func (JSONB) MarshalJSON

func (src JSONB) MarshalJSON() ([]byte, error)

func (JSONB) PreferredParamFormat

func (JSONB) PreferredParamFormat() int16

func (JSONB) PreferredResultFormat

func (JSONB) PreferredResultFormat() int16

func (*JSONB) Scan

func (dst *JSONB) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*JSONB) Set

func (dst *JSONB) Set(src interface{}) error

func (*JSONB) UnmarshalJSON

func (dst *JSONB) UnmarshalJSON(b []byte) error

func (JSONB) Value

func (src JSONB) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type JSONBArray

type JSONBArray struct {
	Elements   []JSONB
	Dimensions []ArrayDimension
	Status     Status
}

func (*JSONBArray) AssignTo

func (src *JSONBArray) AssignTo(dst interface{}) error

func (*JSONBArray) DecodeBinary

func (dst *JSONBArray) DecodeBinary(ci *ConnInfo, src []byte) error

func (*JSONBArray) DecodeText

func (dst *JSONBArray) DecodeText(ci *ConnInfo, src []byte) error

func (JSONBArray) EncodeBinary

func (src JSONBArray) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (JSONBArray) EncodeText

func (src JSONBArray) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (JSONBArray) Get

func (dst JSONBArray) Get() interface{}

func (*JSONBArray) Scan

func (dst *JSONBArray) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*JSONBArray) Set

func (dst *JSONBArray) Set(src interface{}) error

func (JSONBArray) Value

func (src JSONBArray) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Line

type Line struct {
	A, B, C float64
	Status  Status
}

func (*Line) AssignTo

func (src *Line) AssignTo(dst interface{}) error

func (*Line) DecodeBinary

func (dst *Line) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Line) DecodeText

func (dst *Line) DecodeText(ci *ConnInfo, src []byte) error

func (Line) EncodeBinary

func (src Line) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Line) EncodeText

func (src Line) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Line) Get

func (dst Line) Get() interface{}

func (*Line) Scan

func (dst *Line) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Line) Set

func (dst *Line) Set(src interface{}) error

func (Line) Value

func (src Line) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Lseg

type Lseg struct {
	P      [2]Vec2
	Status Status
}

func (*Lseg) AssignTo

func (src *Lseg) AssignTo(dst interface{}) error

func (*Lseg) DecodeBinary

func (dst *Lseg) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Lseg) DecodeText

func (dst *Lseg) DecodeText(ci *ConnInfo, src []byte) error

func (Lseg) EncodeBinary

func (src Lseg) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Lseg) EncodeText

func (src Lseg) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Lseg) Get

func (dst Lseg) Get() interface{}

func (*Lseg) Scan

func (dst *Lseg) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Lseg) Set

func (dst *Lseg) Set(src interface{}) error

func (Lseg) Value

func (src Lseg) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Macaddr

type Macaddr struct {
	Addr   net.HardwareAddr
	Status Status
}

func (*Macaddr) AssignTo

func (src *Macaddr) AssignTo(dst interface{}) error

func (*Macaddr) DecodeBinary

func (dst *Macaddr) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Macaddr) DecodeText

func (dst *Macaddr) DecodeText(ci *ConnInfo, src []byte) error

func (Macaddr) EncodeBinary

func (src Macaddr) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

EncodeBinary encodes src into w.

func (Macaddr) EncodeText

func (src Macaddr) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Macaddr) Get

func (dst Macaddr) Get() interface{}

func (*Macaddr) Scan

func (dst *Macaddr) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Macaddr) Set

func (dst *Macaddr) Set(src interface{}) error

func (Macaddr) Value

func (src Macaddr) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type MacaddrArray

type MacaddrArray struct {
	Elements   []Macaddr
	Dimensions []ArrayDimension
	Status     Status
}

func (*MacaddrArray) AssignTo

func (src *MacaddrArray) AssignTo(dst interface{}) error

func (*MacaddrArray) DecodeBinary

func (dst *MacaddrArray) DecodeBinary(ci *ConnInfo, src []byte) error

func (*MacaddrArray) DecodeText

func (dst *MacaddrArray) DecodeText(ci *ConnInfo, src []byte) error

func (MacaddrArray) EncodeBinary

func (src MacaddrArray) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (MacaddrArray) EncodeText

func (src MacaddrArray) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (MacaddrArray) Get

func (dst MacaddrArray) Get() interface{}

func (*MacaddrArray) Scan

func (dst *MacaddrArray) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*MacaddrArray) Set

func (dst *MacaddrArray) Set(src interface{}) error

func (MacaddrArray) Value

func (src MacaddrArray) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Name

type Name Text

Name is a type used for PostgreSQL's special 63-byte name data type, used for identifiers like table names. The pg_class.relname column is a good example of where the name data type is used.

Note that the underlying Go data type of pgx.Name is string, so there is no way to enforce the 63-byte length. Inputting a longer name into PostgreSQL will result in silent truncation to 63 bytes.

Also, if you have custom-compiled PostgreSQL and set NAMEDATALEN to a different value, obviously that number of bytes applies, rather than the default 63.

func (*Name) AssignTo

func (src *Name) AssignTo(dst interface{}) error

func (*Name) DecodeBinary

func (dst *Name) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Name) DecodeText

func (dst *Name) DecodeText(ci *ConnInfo, src []byte) error

func (Name) EncodeBinary

func (src Name) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Name) EncodeText

func (src Name) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Name) Get

func (dst Name) Get() interface{}

func (*Name) Scan

func (dst *Name) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Name) Set

func (dst *Name) Set(src interface{}) error

func (Name) Value

func (src Name) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Numeric

type Numeric struct {
	Int    *big.Int
	Exp    int32
	Status Status
	NaN    bool
}

func (*Numeric) AssignTo

func (src *Numeric) AssignTo(dst interface{}) error

func (*Numeric) DecodeBinary

func (dst *Numeric) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Numeric) DecodeText

func (dst *Numeric) DecodeText(ci *ConnInfo, src []byte) error

func (Numeric) EncodeBinary

func (src Numeric) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Numeric) EncodeText

func (src Numeric) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Numeric) Get

func (dst Numeric) Get() interface{}

func (*Numeric) Scan

func (dst *Numeric) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Numeric) Set

func (dst *Numeric) Set(src interface{}) error

func (Numeric) Value

func (src Numeric) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type NumericArray

type NumericArray struct {
	Elements   []Numeric
	Dimensions []ArrayDimension
	Status     Status
}

func (*NumericArray) AssignTo

func (src *NumericArray) AssignTo(dst interface{}) error

func (*NumericArray) DecodeBinary

func (dst *NumericArray) DecodeBinary(ci *ConnInfo, src []byte) error

func (*NumericArray) DecodeText

func (dst *NumericArray) DecodeText(ci *ConnInfo, src []byte) error

func (NumericArray) EncodeBinary

func (src NumericArray) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (NumericArray) EncodeText

func (src NumericArray) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (NumericArray) Get

func (dst NumericArray) Get() interface{}

func (*NumericArray) Scan

func (dst *NumericArray) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*NumericArray) Set

func (dst *NumericArray) Set(src interface{}) error

func (NumericArray) Value

func (src NumericArray) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Numrange

type Numrange struct {
	Lower     Numeric
	Upper     Numeric
	LowerType BoundType
	UpperType BoundType
	Status    Status
}

func (*Numrange) AssignTo

func (src *Numrange) AssignTo(dst interface{}) error

func (*Numrange) DecodeBinary

func (dst *Numrange) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Numrange) DecodeText

func (dst *Numrange) DecodeText(ci *ConnInfo, src []byte) error

func (Numrange) EncodeBinary

func (src Numrange) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Numrange) EncodeText

func (src Numrange) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Numrange) Get

func (dst Numrange) Get() interface{}

func (*Numrange) Scan

func (dst *Numrange) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Numrange) Set

func (dst *Numrange) Set(src interface{}) error

func (Numrange) Value

func (src Numrange) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type OID

type OID uint32

OID (Object Identifier Type) is, according to https://www.postgresql.org/docs/current/static/datatype-oid.html, used internally by PostgreSQL as a primary key for various system tables. It is currently implemented as an unsigned four-byte integer. Its definition can be found in src/include/postgres_ext.h in the PostgreSQL sources. Because it is so frequently required to be in a NOT NULL condition OID cannot be NULL. To allow for NULL OIDs use OIDValue.

func (*OID) DecodeBinary

func (dst *OID) DecodeBinary(ci *ConnInfo, src []byte) error

func (*OID) DecodeText

func (dst *OID) DecodeText(ci *ConnInfo, src []byte) error

func (OID) EncodeBinary

func (src OID) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (OID) EncodeText

func (src OID) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (*OID) Scan

func (dst *OID) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (OID) Value

func (src OID) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type OIDValue

type OIDValue pguint32

OIDValue (Object Identifier Type) is, according to https://www.postgresql.org/docs/current/static/datatype-OIDValue.html, used internally by PostgreSQL as a primary key for various system tables. It is currently implemented as an unsigned four-byte integer. Its definition can be found in src/include/postgres_ext.h in the PostgreSQL sources.

func (*OIDValue) AssignTo

func (src *OIDValue) AssignTo(dst interface{}) error

AssignTo assigns from src to dst. Note that as OIDValue is not a general number type AssignTo does not do automatic type conversion as other number types do.

func (*OIDValue) DecodeBinary

func (dst *OIDValue) DecodeBinary(ci *ConnInfo, src []byte) error

func (*OIDValue) DecodeText

func (dst *OIDValue) DecodeText(ci *ConnInfo, src []byte) error

func (OIDValue) EncodeBinary

func (src OIDValue) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (OIDValue) EncodeText

func (src OIDValue) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (OIDValue) Get

func (dst OIDValue) Get() interface{}

func (*OIDValue) Scan

func (dst *OIDValue) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*OIDValue) Set

func (dst *OIDValue) Set(src interface{}) error

Set converts from src to dst. Note that as OIDValue is not a general number type Set does not do automatic type conversion as other number types do.

func (OIDValue) Value

func (src OIDValue) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type ParamFormatPreferrer

type ParamFormatPreferrer interface {
	PreferredParamFormat() int16
}

ParamFormatPreferrer allows a type to specify its preferred param format instead of it being inferred from whether it is also a BinaryEncoder.

type Path

type Path struct {
	P      []Vec2
	Closed bool
	Status Status
}

func (*Path) AssignTo

func (src *Path) AssignTo(dst interface{}) error

func (*Path) DecodeBinary

func (dst *Path) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Path) DecodeText

func (dst *Path) DecodeText(ci *ConnInfo, src []byte) error

func (Path) EncodeBinary

func (src Path) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Path) EncodeText

func (src Path) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Path) Get

func (dst Path) Get() interface{}

func (*Path) Scan

func (dst *Path) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Path) Set

func (dst *Path) Set(src interface{}) error

func (Path) Value

func (src Path) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Point

type Point struct {
	P      Vec2
	Status Status
}

func (*Point) AssignTo

func (src *Point) AssignTo(dst interface{}) error

func (*Point) DecodeBinary

func (dst *Point) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Point) DecodeText

func (dst *Point) DecodeText(ci *ConnInfo, src []byte) error

func (Point) EncodeBinary

func (src Point) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Point) EncodeText

func (src Point) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Point) Get

func (dst Point) Get() interface{}

func (Point) MarshalJSON

func (src Point) MarshalJSON() ([]byte, error)

func (*Point) Scan

func (dst *Point) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Point) Set

func (dst *Point) Set(src interface{}) error

func (*Point) UnmarshalJSON

func (dst *Point) UnmarshalJSON(point []byte) error

func (Point) Value

func (src Point) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Polygon

type Polygon struct {
	P      []Vec2
	Status Status
}

func (*Polygon) AssignTo

func (src *Polygon) AssignTo(dst interface{}) error

func (*Polygon) DecodeBinary

func (dst *Polygon) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Polygon) DecodeText

func (dst *Polygon) DecodeText(ci *ConnInfo, src []byte) error

func (Polygon) EncodeBinary

func (src Polygon) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Polygon) EncodeText

func (src Polygon) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Polygon) Get

func (dst Polygon) Get() interface{}

func (*Polygon) Scan

func (dst *Polygon) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Polygon) Set

func (dst *Polygon) Set(src interface{}) error

Set converts src to dest.

src can be nil, string, []float64, and []pgtype.Vec2.

If src is string the format must be ((x1,y1),(x2,y2),...,(xn,yn)). Important that there are no spaces in it.

func (Polygon) Value

func (src Polygon) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type QChar

type QChar struct {
	Int    int8
	Status Status
}

QChar is for PostgreSQL's special 8-bit-only "char" type more akin to the C language's char type, or Go's byte type. (Note that the name in PostgreSQL itself is "char", in double-quotes, and not char.) It gets used a lot in PostgreSQL's system tables to hold a single ASCII character value (eg pg_class.relkind). It is named Qchar for quoted char to disambiguate from SQL standard type char.

Not all possible values of QChar are representable in the text format. Therefore, QChar does not implement TextEncoder and TextDecoder. In addition, database/sql Scanner and database/sql/driver Value are not implemented.

func (*QChar) AssignTo

func (src *QChar) AssignTo(dst interface{}) error

func (*QChar) DecodeBinary

func (dst *QChar) DecodeBinary(ci *ConnInfo, src []byte) error

func (QChar) EncodeBinary

func (src QChar) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (QChar) Get

func (dst QChar) Get() interface{}

func (*QChar) Set

func (dst *QChar) Set(src interface{}) error

type Record

type Record struct {
	Fields []Value
	Status Status
}

Record is the generic PostgreSQL record type such as is created with the "row" function. Record only implements BinaryEncoder and Value. The text format output format from PostgreSQL does not include type information and is therefore impossible to decode. No encoders are implemented because PostgreSQL does not support input of generic records.

func (*Record) AssignTo

func (src *Record) AssignTo(dst interface{}) error

func (*Record) DecodeBinary

func (dst *Record) DecodeBinary(ci *ConnInfo, src []byte) error

func (Record) Get

func (dst Record) Get() interface{}

func (*Record) Set

func (dst *Record) Set(src interface{}) error

type ResultFormatPreferrer

type ResultFormatPreferrer interface {
	PreferredResultFormat() int16
}

ResultFormatPreferrer allows a type to specify its preferred result format instead of it being inferred from whether it is also a BinaryDecoder.

type ScanPlan

type ScanPlan interface {
	// Scan scans src into dst. If the dst type has changed in an incompatible way a ScanPlan should automatically
	// replan and scan.
	Scan(ci *ConnInfo, oid uint32, formatCode int16, src []byte, dst interface{}) error
}

ScanPlan is a precompiled plan to scan into a type of destination.

type Status

type Status byte
const (
	Undefined Status = iota
	Null
	Present
)

type TID

type TID struct {
	BlockNumber  uint32
	OffsetNumber uint16
	Status       Status
}

TID is PostgreSQL's Tuple Identifier type.

When one does

select ctid, * from some_table;

it is the data type of the ctid hidden system column.

It is currently implemented as a pair unsigned two byte integers. Its conversion functions can be found in src/backend/utils/adt/tid.c in the PostgreSQL sources.

func (*TID) AssignTo

func (src *TID) AssignTo(dst interface{}) error

func (*TID) DecodeBinary

func (dst *TID) DecodeBinary(ci *ConnInfo, src []byte) error

func (*TID) DecodeText

func (dst *TID) DecodeText(ci *ConnInfo, src []byte) error

func (TID) EncodeBinary

func (src TID) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (TID) EncodeText

func (src TID) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (TID) Get

func (dst TID) Get() interface{}

func (*TID) Scan

func (dst *TID) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*TID) Set

func (dst *TID) Set(src interface{}) error

func (TID) Value

func (src TID) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Text

type Text struct {
	String string
	Status Status
}

func (*Text) AssignTo

func (src *Text) AssignTo(dst interface{}) error

func (*Text) DecodeBinary

func (dst *Text) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Text) DecodeText

func (dst *Text) DecodeText(ci *ConnInfo, src []byte) error

func (Text) EncodeBinary

func (src Text) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Text) EncodeText

func (src Text) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Text) Get

func (dst Text) Get() interface{}

func (Text) MarshalJSON

func (src Text) MarshalJSON() ([]byte, error)

func (Text) PreferredParamFormat

func (Text) PreferredParamFormat() int16

func (Text) PreferredResultFormat

func (Text) PreferredResultFormat() int16

func (*Text) Scan

func (dst *Text) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Text) Set

func (dst *Text) Set(src interface{}) error

func (*Text) UnmarshalJSON

func (dst *Text) UnmarshalJSON(b []byte) error

func (Text) Value

func (src Text) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type TextArray

type TextArray struct {
	Elements   []Text
	Dimensions []ArrayDimension
	Status     Status
}

func (*TextArray) AssignTo

func (src *TextArray) AssignTo(dst interface{}) error

func (*TextArray) DecodeBinary

func (dst *TextArray) DecodeBinary(ci *ConnInfo, src []byte) error

func (*TextArray) DecodeText

func (dst *TextArray) DecodeText(ci *ConnInfo, src []byte) error

func (TextArray) EncodeBinary

func (src TextArray) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (TextArray) EncodeText

func (src TextArray) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (TextArray) Get

func (dst TextArray) Get() interface{}

func (*TextArray) Scan

func (dst *TextArray) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*TextArray) Set

func (dst *TextArray) Set(src interface{}) error

func (TextArray) Value

func (src TextArray) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type TextDecoder

type TextDecoder interface {
	// DecodeText decodes src into TextDecoder. If src is nil then the original
	// SQL value is NULL. TextDecoder takes ownership of src. The caller MUST not
	// use it again.
	DecodeText(ci *ConnInfo, src []byte) error
}

type TextEncoder

type TextEncoder interface {
	// EncodeText should append the text format of self to buf. If self is the
	// SQL value NULL then append nothing and return (nil, nil). The caller of
	// EncodeText is responsible for writing the correct NULL value or the
	// length of the data written.
	EncodeText(ci *ConnInfo, buf []byte) (newBuf []byte, err error)
}

TextEncoder is implemented by types that can encode themselves into the PostgreSQL text wire format.

type Time

type Time struct {
	Microseconds int64 // Number of microseconds since midnight
	Status       Status
}

Time represents the PostgreSQL time type. The PostgreSQL time is a time of day without time zone.

Time is represented as the number of microseconds since midnight in the same way that PostgreSQL does. Other time and date types in pgtype can use time.Time as the underlying representation. However, pgtype.Time type cannot due to needing to handle 24:00:00. time.Time converts that to 00:00:00 on the following day.

func (*Time) AssignTo

func (src *Time) AssignTo(dst interface{}) error

func (*Time) DecodeBinary

func (dst *Time) DecodeBinary(ci *ConnInfo, src []byte) error

DecodeBinary decodes from src into dst.

func (*Time) DecodeText

func (dst *Time) DecodeText(ci *ConnInfo, src []byte) error

DecodeText decodes from src into dst.

func (Time) EncodeBinary

func (src Time) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

EncodeBinary writes the binary encoding of src into w. If src.Time is not in the UTC time zone it returns an error.

func (Time) EncodeText

func (src Time) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

EncodeText writes the text encoding of src into w.

func (Time) Get

func (dst Time) Get() interface{}

func (*Time) Scan

func (dst *Time) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Time) Set

func (dst *Time) Set(src interface{}) error

Set converts src into a Time and stores in dst.

func (Time) Value

func (src Time) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Timestamp

type Timestamp struct {
	Time             time.Time // Time must always be in UTC.
	Status           Status
	InfinityModifier InfinityModifier
}

Timestamp represents the PostgreSQL timestamp type. The PostgreSQL timestamp does not have a time zone. This presents a problem when translating to and from time.Time which requires a time zone. It is highly recommended to use timestamptz whenever possible. Timestamp methods either convert to UTC or return an error on non-UTC times.

func (*Timestamp) AssignTo

func (src *Timestamp) AssignTo(dst interface{}) error

func (*Timestamp) DecodeBinary

func (dst *Timestamp) DecodeBinary(ci *ConnInfo, src []byte) error

DecodeBinary decodes from src into dst. The decoded time is considered to be in UTC.

func (*Timestamp) DecodeText

func (dst *Timestamp) DecodeText(ci *ConnInfo, src []byte) error

DecodeText decodes from src into dst. The decoded time is considered to be in UTC.

func (Timestamp) EncodeBinary

func (src Timestamp) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

EncodeBinary writes the binary encoding of src into w. If src.Time is not in the UTC time zone it returns an error.

func (Timestamp) EncodeText

func (src Timestamp) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

EncodeText writes the text encoding of src into w. If src.Time is not in the UTC time zone it returns an error.

func (Timestamp) Get

func (dst Timestamp) Get() interface{}

func (*Timestamp) Scan

func (dst *Timestamp) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Timestamp) Set

func (dst *Timestamp) Set(src interface{}) error

Set converts src into a Timestamp and stores in dst. If src is a time.Time in a non-UTC time zone, the time zone is discarded.

func (Timestamp) Value

func (src Timestamp) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type TimestampArray

type TimestampArray struct {
	Elements   []Timestamp
	Dimensions []ArrayDimension
	Status     Status
}

func (*TimestampArray) AssignTo

func (src *TimestampArray) AssignTo(dst interface{}) error

func (*TimestampArray) DecodeBinary

func (dst *TimestampArray) DecodeBinary(ci *ConnInfo, src []byte) error

func (*TimestampArray) DecodeText

func (dst *TimestampArray) DecodeText(ci *ConnInfo, src []byte) error

func (TimestampArray) EncodeBinary

func (src TimestampArray) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (TimestampArray) EncodeText

func (src TimestampArray) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (TimestampArray) Get

func (dst TimestampArray) Get() interface{}

func (*TimestampArray) Scan

func (dst *TimestampArray) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*TimestampArray) Set

func (dst *TimestampArray) Set(src interface{}) error

func (TimestampArray) Value

func (src TimestampArray) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Timestamptz

type Timestamptz struct {
	Time             time.Time
	Status           Status
	InfinityModifier InfinityModifier
}

func (*Timestamptz) AssignTo

func (src *Timestamptz) AssignTo(dst interface{}) error

func (*Timestamptz) DecodeBinary

func (dst *Timestamptz) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Timestamptz) DecodeText

func (dst *Timestamptz) DecodeText(ci *ConnInfo, src []byte) error

func (Timestamptz) EncodeBinary

func (src Timestamptz) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Timestamptz) EncodeText

func (src Timestamptz) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Timestamptz) Get

func (dst Timestamptz) Get() interface{}

func (Timestamptz) MarshalJSON

func (src Timestamptz) MarshalJSON() ([]byte, error)

func (*Timestamptz) Scan

func (dst *Timestamptz) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Timestamptz) Set

func (dst *Timestamptz) Set(src interface{}) error

func (*Timestamptz) UnmarshalJSON

func (dst *Timestamptz) UnmarshalJSON(b []byte) error

func (Timestamptz) Value

func (src Timestamptz) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type TimestamptzArray

type TimestamptzArray struct {
	Elements   []Timestamptz
	Dimensions []ArrayDimension
	Status     Status
}

func (*TimestamptzArray) AssignTo

func (src *TimestamptzArray) AssignTo(dst interface{}) error

func (*TimestamptzArray) DecodeBinary

func (dst *TimestamptzArray) DecodeBinary(ci *ConnInfo, src []byte) error

func (*TimestamptzArray) DecodeText

func (dst *TimestamptzArray) DecodeText(ci *ConnInfo, src []byte) error

func (TimestamptzArray) EncodeBinary

func (src TimestamptzArray) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (TimestamptzArray) EncodeText

func (src TimestamptzArray) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (TimestamptzArray) Get

func (dst TimestamptzArray) Get() interface{}

func (*TimestamptzArray) Scan

func (dst *TimestamptzArray) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*TimestamptzArray) Set

func (dst *TimestamptzArray) Set(src interface{}) error

func (TimestamptzArray) Value

func (src TimestamptzArray) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Tsrange

type Tsrange struct {
	Lower     Timestamp
	Upper     Timestamp
	LowerType BoundType
	UpperType BoundType
	Status    Status
}

func (*Tsrange) AssignTo

func (src *Tsrange) AssignTo(dst interface{}) error

func (*Tsrange) DecodeBinary

func (dst *Tsrange) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Tsrange) DecodeText

func (dst *Tsrange) DecodeText(ci *ConnInfo, src []byte) error

func (Tsrange) EncodeBinary

func (src Tsrange) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Tsrange) EncodeText

func (src Tsrange) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Tsrange) Get

func (dst Tsrange) Get() interface{}

func (*Tsrange) Scan

func (dst *Tsrange) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Tsrange) Set

func (dst *Tsrange) Set(src interface{}) error

func (Tsrange) Value

func (src Tsrange) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type TsrangeArray

type TsrangeArray struct {
	Elements   []Tsrange
	Dimensions []ArrayDimension
	Status     Status
}

func (*TsrangeArray) AssignTo

func (src *TsrangeArray) AssignTo(dst interface{}) error

func (*TsrangeArray) DecodeBinary

func (dst *TsrangeArray) DecodeBinary(ci *ConnInfo, src []byte) error

func (*TsrangeArray) DecodeText

func (dst *TsrangeArray) DecodeText(ci *ConnInfo, src []byte) error

func (TsrangeArray) EncodeBinary

func (src TsrangeArray) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (TsrangeArray) EncodeText

func (src TsrangeArray) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (TsrangeArray) Get

func (dst TsrangeArray) Get() interface{}

func (*TsrangeArray) Scan

func (dst *TsrangeArray) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*TsrangeArray) Set

func (dst *TsrangeArray) Set(src interface{}) error

func (TsrangeArray) Value

func (src TsrangeArray) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Tstzrange

type Tstzrange struct {
	Lower     Timestamptz
	Upper     Timestamptz
	LowerType BoundType
	UpperType BoundType
	Status    Status
}

func (*Tstzrange) AssignTo

func (src *Tstzrange) AssignTo(dst interface{}) error

func (*Tstzrange) DecodeBinary

func (dst *Tstzrange) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Tstzrange) DecodeText

func (dst *Tstzrange) DecodeText(ci *ConnInfo, src []byte) error

func (Tstzrange) EncodeBinary

func (src Tstzrange) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Tstzrange) EncodeText

func (src Tstzrange) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Tstzrange) Get

func (dst Tstzrange) Get() interface{}

func (*Tstzrange) Scan

func (dst *Tstzrange) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Tstzrange) Set

func (dst *Tstzrange) Set(src interface{}) error

func (Tstzrange) Value

func (src Tstzrange) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type TstzrangeArray

type TstzrangeArray struct {
	Elements   []Tstzrange
	Dimensions []ArrayDimension
	Status     Status
}

func (*TstzrangeArray) AssignTo

func (src *TstzrangeArray) AssignTo(dst interface{}) error

func (*TstzrangeArray) DecodeBinary

func (dst *TstzrangeArray) DecodeBinary(ci *ConnInfo, src []byte) error

func (*TstzrangeArray) DecodeText

func (dst *TstzrangeArray) DecodeText(ci *ConnInfo, src []byte) error

func (TstzrangeArray) EncodeBinary

func (src TstzrangeArray) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (TstzrangeArray) EncodeText

func (src TstzrangeArray) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (TstzrangeArray) Get

func (dst TstzrangeArray) Get() interface{}

func (*TstzrangeArray) Scan

func (dst *TstzrangeArray) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*TstzrangeArray) Set

func (dst *TstzrangeArray) Set(src interface{}) error

func (TstzrangeArray) Value

func (src TstzrangeArray) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type TypeValue

type TypeValue interface {
	Value

	// NewTypeValue creates a TypeValue including references to internal type information. e.g. the list of members
	// in an EnumType.
	NewTypeValue() Value

	// TypeName returns the PostgreSQL name of this type.
	TypeName() string
}

TypeValue is a Value where instances can represent different PostgreSQL types. This can be useful for representing types such as enums, composites, and arrays.

In general, instances of TypeValue should not be used to directly represent a value. It should only be used as an encoder and decoder internal to ConnInfo.

type UUID

type UUID struct {
	Bytes  [16]byte
	Status Status
}

func (*UUID) AssignTo

func (src *UUID) AssignTo(dst interface{}) error

func (*UUID) DecodeBinary

func (dst *UUID) DecodeBinary(ci *ConnInfo, src []byte) error

func (*UUID) DecodeText

func (dst *UUID) DecodeText(ci *ConnInfo, src []byte) error

func (UUID) EncodeBinary

func (src UUID) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (UUID) EncodeText

func (src UUID) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (UUID) Get

func (dst UUID) Get() interface{}

func (UUID) MarshalJSON

func (src UUID) MarshalJSON() ([]byte, error)

func (*UUID) Scan

func (dst *UUID) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*UUID) Set

func (dst *UUID) Set(src interface{}) error

func (*UUID) UnmarshalJSON

func (dst *UUID) UnmarshalJSON(src []byte) error

func (UUID) Value

func (src UUID) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type UUIDArray

type UUIDArray struct {
	Elements   []UUID
	Dimensions []ArrayDimension
	Status     Status
}

func (*UUIDArray) AssignTo

func (src *UUIDArray) AssignTo(dst interface{}) error

func (*UUIDArray) DecodeBinary

func (dst *UUIDArray) DecodeBinary(ci *ConnInfo, src []byte) error

func (*UUIDArray) DecodeText

func (dst *UUIDArray) DecodeText(ci *ConnInfo, src []byte) error

func (UUIDArray) EncodeBinary

func (src UUIDArray) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (UUIDArray) EncodeText

func (src UUIDArray) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (UUIDArray) Get

func (dst UUIDArray) Get() interface{}

func (*UUIDArray) Scan

func (dst *UUIDArray) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*UUIDArray) Set

func (dst *UUIDArray) Set(src interface{}) error

func (UUIDArray) Value

func (src UUIDArray) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Unknown

type Unknown struct {
	String string
	Status Status
}

Unknown represents the PostgreSQL unknown type. It is either a string literal or NULL. It is used when PostgreSQL does not know the type of a value. In general, this will only be used in pgx when selecting a null value without type information. e.g. SELECT NULL;

func (*Unknown) AssignTo

func (src *Unknown) AssignTo(dst interface{}) error

AssignTo assigns from src to dst. Note that as Unknown is not a general number type AssignTo does not do automatic type conversion as other number types do.

func (*Unknown) DecodeBinary

func (dst *Unknown) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Unknown) DecodeText

func (dst *Unknown) DecodeText(ci *ConnInfo, src []byte) error

func (Unknown) Get

func (dst Unknown) Get() interface{}

func (*Unknown) Scan

func (dst *Unknown) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Unknown) Set

func (dst *Unknown) Set(src interface{}) error

func (Unknown) Value

func (src Unknown) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type UntypedBinaryRange

type UntypedBinaryRange struct {
	Lower     []byte
	Upper     []byte
	LowerType BoundType
	UpperType BoundType
}

func ParseUntypedBinaryRange

func ParseUntypedBinaryRange(src []byte) (*UntypedBinaryRange, error)

type UntypedTextArray

type UntypedTextArray struct {
	Elements   []string
	Quoted     []bool
	Dimensions []ArrayDimension
}

func ParseUntypedTextArray

func ParseUntypedTextArray(src string) (*UntypedTextArray, error)

type UntypedTextRange

type UntypedTextRange struct {
	Lower     string
	Upper     string
	LowerType BoundType
	UpperType BoundType
}

func ParseUntypedTextRange

func ParseUntypedTextRange(src string) (*UntypedTextRange, error)

type Value

type Value interface {
	// Set converts and assigns src to itself. Value takes ownership of src.
	Set(src interface{}) error

	// Get returns the simplest representation of Value. Get may return a pointer to an internal value but it must never
	// mutate that value. e.g. If Get returns a []byte Value must never change the contents of the []byte.
	Get() interface{}

	// AssignTo converts and assigns the Value to dst. AssignTo may a pointer to an internal value but it must never
	// mutate that value. e.g. If Get returns a []byte Value must never change the contents of the []byte.
	AssignTo(dst interface{}) error
}

Value translates values to and from an internal canonical representation for the type. To actually be usable a type that implements Value should also implement some combination of BinaryDecoder, BinaryEncoder, TextDecoder, and TextEncoder.

Operations that update a Value (e.g. Set, DecodeText, DecodeBinary) should entirely replace the value. e.g. Internal slices should be replaced not resized and reused. This allows Get and AssignTo to return a slice directly rather than incur a usually unnecessary copy.

func NewValue

func NewValue(v Value) Value

NewValue returns a new instance of the same type as v.

type ValueTranscoder

type ValueTranscoder interface {
	Value
	TextEncoder
	BinaryEncoder
	TextDecoder
	BinaryDecoder
}

ValueTranscoder is a value that implements the text and binary encoding and decoding interfaces.

type Varbit

type Varbit struct {
	Bytes  []byte
	Len    int32 // Number of bits
	Status Status
}

func (*Varbit) AssignTo

func (src *Varbit) AssignTo(dst interface{}) error

func (*Varbit) DecodeBinary

func (dst *Varbit) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Varbit) DecodeText

func (dst *Varbit) DecodeText(ci *ConnInfo, src []byte) error

func (Varbit) EncodeBinary

func (src Varbit) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Varbit) EncodeText

func (src Varbit) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Varbit) Get

func (dst Varbit) Get() interface{}

func (*Varbit) Scan

func (dst *Varbit) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Varbit) Set

func (dst *Varbit) Set(src interface{}) error

func (Varbit) Value

func (src Varbit) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Varchar

type Varchar Text

func (*Varchar) AssignTo

func (src *Varchar) AssignTo(dst interface{}) error

AssignTo assigns from src to dst. Note that as Varchar is not a general number type AssignTo does not do automatic type conversion as other number types do.

func (*Varchar) DecodeBinary

func (dst *Varchar) DecodeBinary(ci *ConnInfo, src []byte) error

func (*Varchar) DecodeText

func (dst *Varchar) DecodeText(ci *ConnInfo, src []byte) error

func (Varchar) EncodeBinary

func (src Varchar) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (Varchar) EncodeText

func (src Varchar) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (Varchar) Get

func (dst Varchar) Get() interface{}

func (Varchar) MarshalJSON

func (src Varchar) MarshalJSON() ([]byte, error)

func (Varchar) PreferredParamFormat

func (Varchar) PreferredParamFormat() int16

func (Varchar) PreferredResultFormat

func (Varchar) PreferredResultFormat() int16

func (*Varchar) Scan

func (dst *Varchar) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*Varchar) Set

func (dst *Varchar) Set(src interface{}) error

Set converts from src to dst. Note that as Varchar is not a general number type Set does not do automatic type conversion as other number types do.

func (*Varchar) UnmarshalJSON

func (dst *Varchar) UnmarshalJSON(b []byte) error

func (Varchar) Value

func (src Varchar) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type VarcharArray

type VarcharArray struct {
	Elements   []Varchar
	Dimensions []ArrayDimension
	Status     Status
}

func (*VarcharArray) AssignTo

func (src *VarcharArray) AssignTo(dst interface{}) error

func (*VarcharArray) DecodeBinary

func (dst *VarcharArray) DecodeBinary(ci *ConnInfo, src []byte) error

func (*VarcharArray) DecodeText

func (dst *VarcharArray) DecodeText(ci *ConnInfo, src []byte) error

func (VarcharArray) EncodeBinary

func (src VarcharArray) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (VarcharArray) EncodeText

func (src VarcharArray) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (VarcharArray) Get

func (dst VarcharArray) Get() interface{}

func (*VarcharArray) Scan

func (dst *VarcharArray) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*VarcharArray) Set

func (dst *VarcharArray) Set(src interface{}) error

func (VarcharArray) Value

func (src VarcharArray) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

type Vec2

type Vec2 struct {
	X float64
	Y float64
}

type XID

type XID pguint32

XID is PostgreSQL's Transaction ID type.

In later versions of PostgreSQL, it is the type used for the backend_xid and backend_xmin columns of the pg_stat_activity system view.

Also, when one does

select xmin, xmax, * from some_table;

it is the data type of the xmin and xmax hidden system columns.

It is currently implemented as an unsigned four byte integer. Its definition can be found in src/include/postgres_ext.h as TransactionId in the PostgreSQL sources.

func (*XID) AssignTo

func (src *XID) AssignTo(dst interface{}) error

AssignTo assigns from src to dst. Note that as XID is not a general number type AssignTo does not do automatic type conversion as other number types do.

func (*XID) DecodeBinary

func (dst *XID) DecodeBinary(ci *ConnInfo, src []byte) error

func (*XID) DecodeText

func (dst *XID) DecodeText(ci *ConnInfo, src []byte) error

func (XID) EncodeBinary

func (src XID) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error)

func (XID) EncodeText

func (src XID) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error)

func (XID) Get

func (dst XID) Get() interface{}

func (*XID) Scan

func (dst *XID) Scan(src interface{}) error

Scan implements the database/sql Scanner interface.

func (*XID) Set

func (dst *XID) Set(src interface{}) error

Set converts from src to dst. Note that as XID is not a general number type Set does not do automatic type conversion as other number types do.

func (XID) Value

func (src XID) Value() (driver.Value, error)

Value implements the database/sql/driver Valuer interface.

Directories

Path Synopsis
ext
Package zeronull contains types that automatically convert between database NULLs and Go zero values.
Package zeronull contains types that automatically convert between database NULLs and Go zero values.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL