pgproto3

package module
Version: v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Apr 17, 2019 License: MIT Imports: 11 Imported by: 3

README

Build Status

pgproto3

Package pgproto3 is a encoder and decoder of the PostgreSQL wire protocol version 3.

Extracted from original implementation in https://github.com/jackc/pgx.

Documentation

Overview

Package pgproto3 is a encoder and decoder of the PostgreSQL wire protocol version 3.

Index

Constants

View Source
const (
	AuthTypeOk                = 0
	AuthTypeCleartextPassword = 3
	AuthTypeMD5Password       = 5
	AuthTypeSASL              = 10
	AuthTypeSASLContinue      = 11
	AuthTypeSASLFinal         = 12
)
View Source
const (
	TextFormat   = 0
	BinaryFormat = 1
)
View Source
const (
	ProtocolVersionNumber = 196608 // 3.0

)

Variables

This section is empty.

Functions

This section is empty.

Types

type Authentication

type Authentication struct {
	Type uint32

	// MD5Password fields
	Salt [4]byte

	// SASL fields
	SASLAuthMechanisms []string

	// SASLContinue and SASLFinal data
	SASLData []byte
}

func (*Authentication) Backend

func (*Authentication) Backend()

func (*Authentication) Decode

func (dst *Authentication) Decode(src []byte) error

func (*Authentication) Encode

func (src *Authentication) Encode(dst []byte) []byte

type Backend

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

func NewBackend

func NewBackend(cr ChunkReader, w io.Writer) (*Backend, error)

func (*Backend) Receive

func (b *Backend) Receive() (FrontendMessage, error)

func (*Backend) ReceiveStartupMessage

func (b *Backend) ReceiveStartupMessage() (*StartupMessage, error)

func (*Backend) Send

func (b *Backend) Send(msg BackendMessage) error

type BackendKeyData

type BackendKeyData struct {
	ProcessID uint32
	SecretKey uint32
}

func (*BackendKeyData) Backend

func (*BackendKeyData) Backend()

func (*BackendKeyData) Decode

func (dst *BackendKeyData) Decode(src []byte) error

func (*BackendKeyData) Encode

func (src *BackendKeyData) Encode(dst []byte) []byte

func (*BackendKeyData) MarshalJSON

func (src *BackendKeyData) MarshalJSON() ([]byte, error)

type BackendMessage

type BackendMessage interface {
	Message
	Backend() // no-op method to distinguish frontend from backend methods
}

type BigEndianBuf

type BigEndianBuf [8]byte

func (BigEndianBuf) Int16

func (b BigEndianBuf) Int16(n int16) []byte

func (BigEndianBuf) Int32

func (b BigEndianBuf) Int32(n int32) []byte

func (BigEndianBuf) Int64

func (b BigEndianBuf) Int64(n int64) []byte

func (BigEndianBuf) Uint16

func (b BigEndianBuf) Uint16(n uint16) []byte

func (BigEndianBuf) Uint32

func (b BigEndianBuf) Uint32(n uint32) []byte

type Bind

type Bind struct {
	DestinationPortal    string
	PreparedStatement    string
	ParameterFormatCodes []int16
	Parameters           [][]byte
	ResultFormatCodes    []int16
}

func (*Bind) Decode

func (dst *Bind) Decode(src []byte) error

func (*Bind) Encode

func (src *Bind) Encode(dst []byte) []byte

func (*Bind) Frontend

func (*Bind) Frontend()

func (*Bind) MarshalJSON

func (src *Bind) MarshalJSON() ([]byte, error)

type BindComplete

type BindComplete struct{}

func (*BindComplete) Backend

func (*BindComplete) Backend()

func (*BindComplete) Decode

func (dst *BindComplete) Decode(src []byte) error

func (*BindComplete) Encode

func (src *BindComplete) Encode(dst []byte) []byte

func (*BindComplete) MarshalJSON

func (src *BindComplete) MarshalJSON() ([]byte, error)

type ChunkReader

type ChunkReader interface {
	// Next returns buf filled with the next n bytes. If an error (including a partial read) occurs,
	// buf must be nil. Next must preserve any partially read data. Next must not reuse buf.
	Next(n int) (buf []byte, err error)
}

ChunkReader is an interface to decouple github.com/jackc/chunkreader from this package.

func NewChunkReader

func NewChunkReader(r io.Reader) ChunkReader

type Close

type Close struct {
	ObjectType byte // 'S' = prepared statement, 'P' = portal
	Name       string
}

func (*Close) Decode

func (dst *Close) Decode(src []byte) error

func (*Close) Encode

func (src *Close) Encode(dst []byte) []byte

func (*Close) Frontend

func (*Close) Frontend()

func (*Close) MarshalJSON

func (src *Close) MarshalJSON() ([]byte, error)

type CloseComplete

type CloseComplete struct{}

func (*CloseComplete) Backend

func (*CloseComplete) Backend()

func (*CloseComplete) Decode

func (dst *CloseComplete) Decode(src []byte) error

func (*CloseComplete) Encode

func (src *CloseComplete) Encode(dst []byte) []byte

func (*CloseComplete) MarshalJSON

func (src *CloseComplete) MarshalJSON() ([]byte, error)

type CommandComplete

type CommandComplete struct {
	CommandTag string
}

func (*CommandComplete) Backend

func (*CommandComplete) Backend()

func (*CommandComplete) Decode

func (dst *CommandComplete) Decode(src []byte) error

func (*CommandComplete) Encode

func (src *CommandComplete) Encode(dst []byte) []byte

func (*CommandComplete) MarshalJSON

func (src *CommandComplete) MarshalJSON() ([]byte, error)

type CopyBothResponse

type CopyBothResponse struct {
	OverallFormat     byte
	ColumnFormatCodes []uint16
}

func (*CopyBothResponse) Backend

func (*CopyBothResponse) Backend()

func (*CopyBothResponse) Decode

func (dst *CopyBothResponse) Decode(src []byte) error

func (*CopyBothResponse) Encode

func (src *CopyBothResponse) Encode(dst []byte) []byte

func (*CopyBothResponse) MarshalJSON

func (src *CopyBothResponse) MarshalJSON() ([]byte, error)

type CopyData

type CopyData struct {
	Data []byte
}

func (*CopyData) Backend

func (*CopyData) Backend()

func (*CopyData) Decode

func (dst *CopyData) Decode(src []byte) error

func (*CopyData) Encode

func (src *CopyData) Encode(dst []byte) []byte

func (*CopyData) Frontend

func (*CopyData) Frontend()

func (*CopyData) MarshalJSON

func (src *CopyData) MarshalJSON() ([]byte, error)

type CopyDone

type CopyDone struct {
}

func (*CopyDone) Backend

func (*CopyDone) Backend()

func (*CopyDone) Decode

func (dst *CopyDone) Decode(src []byte) error

func (*CopyDone) Encode

func (src *CopyDone) Encode(dst []byte) []byte

func (*CopyDone) MarshalJSON

func (src *CopyDone) MarshalJSON() ([]byte, error)

type CopyFail

type CopyFail struct {
	Error string
}

func (*CopyFail) Backend

func (*CopyFail) Backend()

func (*CopyFail) Decode

func (dst *CopyFail) Decode(src []byte) error

func (*CopyFail) Encode

func (src *CopyFail) Encode(dst []byte) []byte

func (*CopyFail) Frontend

func (*CopyFail) Frontend()

func (*CopyFail) MarshalJSON

func (src *CopyFail) MarshalJSON() ([]byte, error)

type CopyInResponse

type CopyInResponse struct {
	OverallFormat     byte
	ColumnFormatCodes []uint16
}

func (*CopyInResponse) Backend

func (*CopyInResponse) Backend()

func (*CopyInResponse) Decode

func (dst *CopyInResponse) Decode(src []byte) error

func (*CopyInResponse) Encode

func (src *CopyInResponse) Encode(dst []byte) []byte

func (*CopyInResponse) MarshalJSON

func (src *CopyInResponse) MarshalJSON() ([]byte, error)

type CopyOutResponse

type CopyOutResponse struct {
	OverallFormat     byte
	ColumnFormatCodes []uint16
}

func (*CopyOutResponse) Backend

func (*CopyOutResponse) Backend()

func (*CopyOutResponse) Decode

func (dst *CopyOutResponse) Decode(src []byte) error

func (*CopyOutResponse) Encode

func (src *CopyOutResponse) Encode(dst []byte) []byte

func (*CopyOutResponse) MarshalJSON

func (src *CopyOutResponse) MarshalJSON() ([]byte, error)

type DataRow

type DataRow struct {
	Values [][]byte
}

func (*DataRow) Backend

func (*DataRow) Backend()

func (*DataRow) Decode

func (dst *DataRow) Decode(src []byte) error

func (*DataRow) Encode

func (src *DataRow) Encode(dst []byte) []byte

func (*DataRow) MarshalJSON

func (src *DataRow) MarshalJSON() ([]byte, error)

type Describe

type Describe struct {
	ObjectType byte // 'S' = prepared statement, 'P' = portal
	Name       string
}

func (*Describe) Decode

func (dst *Describe) Decode(src []byte) error

func (*Describe) Encode

func (src *Describe) Encode(dst []byte) []byte

func (*Describe) Frontend

func (*Describe) Frontend()

func (*Describe) MarshalJSON

func (src *Describe) MarshalJSON() ([]byte, error)

type EmptyQueryResponse

type EmptyQueryResponse struct{}

func (*EmptyQueryResponse) Backend

func (*EmptyQueryResponse) Backend()

func (*EmptyQueryResponse) Decode

func (dst *EmptyQueryResponse) Decode(src []byte) error

func (*EmptyQueryResponse) Encode

func (src *EmptyQueryResponse) Encode(dst []byte) []byte

func (*EmptyQueryResponse) MarshalJSON

func (src *EmptyQueryResponse) MarshalJSON() ([]byte, error)

type ErrorResponse

type ErrorResponse struct {
	Severity         string
	Code             string
	Message          string
	Detail           string
	Hint             string
	Position         int32
	InternalPosition int32
	InternalQuery    string
	Where            string
	SchemaName       string
	TableName        string
	ColumnName       string
	DataTypeName     string
	ConstraintName   string
	File             string
	Line             int32
	Routine          string

	UnknownFields map[byte]string
}

func (*ErrorResponse) Backend

func (*ErrorResponse) Backend()

func (*ErrorResponse) Decode

func (dst *ErrorResponse) Decode(src []byte) error

func (*ErrorResponse) Encode

func (src *ErrorResponse) Encode(dst []byte) []byte

type Execute

type Execute struct {
	Portal  string
	MaxRows uint32
}

func (*Execute) Decode

func (dst *Execute) Decode(src []byte) error

func (*Execute) Encode

func (src *Execute) Encode(dst []byte) []byte

func (*Execute) Frontend

func (*Execute) Frontend()

func (*Execute) MarshalJSON

func (src *Execute) MarshalJSON() ([]byte, error)

type FieldDescription

type FieldDescription struct {
	Name                 string
	TableOID             uint32
	TableAttributeNumber uint16
	DataTypeOID          uint32
	DataTypeSize         int16
	TypeModifier         int32
	Format               int16
}

type Flush

type Flush struct{}

func (*Flush) Decode

func (dst *Flush) Decode(src []byte) error

func (*Flush) Encode

func (src *Flush) Encode(dst []byte) []byte

func (*Flush) Frontend

func (*Flush) Frontend()

func (*Flush) MarshalJSON

func (src *Flush) MarshalJSON() ([]byte, error)

type Frontend

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

func NewFrontend

func NewFrontend(cr ChunkReader, w io.Writer) (*Frontend, error)

func (*Frontend) Receive

func (b *Frontend) Receive() (BackendMessage, error)

func (*Frontend) Send

func (b *Frontend) Send(msg FrontendMessage) error

type FrontendMessage

type FrontendMessage interface {
	Message
	Frontend() // no-op method to distinguish frontend from backend methods
}

type FunctionCallResponse

type FunctionCallResponse struct {
	Result []byte
}

func (*FunctionCallResponse) Backend

func (*FunctionCallResponse) Backend()

func (*FunctionCallResponse) Decode

func (dst *FunctionCallResponse) Decode(src []byte) error

func (*FunctionCallResponse) Encode

func (src *FunctionCallResponse) Encode(dst []byte) []byte

func (*FunctionCallResponse) MarshalJSON

func (src *FunctionCallResponse) MarshalJSON() ([]byte, error)

type Message

type Message interface {
	// Decode is allowed and expected to retain a reference to data after
	// returning (unlike encoding.BinaryUnmarshaler).
	Decode(data []byte) error

	// Encode appends itself to dst and returns the new buffer.
	Encode(dst []byte) []byte
}

Message is the interface implemented by an object that can decode and encode a particular PostgreSQL message.

type NoData

type NoData struct{}

func (*NoData) Backend

func (*NoData) Backend()

func (*NoData) Decode

func (dst *NoData) Decode(src []byte) error

func (*NoData) Encode

func (src *NoData) Encode(dst []byte) []byte

func (*NoData) MarshalJSON

func (src *NoData) MarshalJSON() ([]byte, error)

type NoticeResponse

type NoticeResponse ErrorResponse

func (*NoticeResponse) Backend

func (*NoticeResponse) Backend()

func (*NoticeResponse) Decode

func (dst *NoticeResponse) Decode(src []byte) error

func (*NoticeResponse) Encode

func (src *NoticeResponse) Encode(dst []byte) []byte

type NotificationResponse

type NotificationResponse struct {
	PID     uint32
	Channel string
	Payload string
}

func (*NotificationResponse) Backend

func (*NotificationResponse) Backend()

func (*NotificationResponse) Decode

func (dst *NotificationResponse) Decode(src []byte) error

func (*NotificationResponse) Encode

func (src *NotificationResponse) Encode(dst []byte) []byte

func (*NotificationResponse) MarshalJSON

func (src *NotificationResponse) MarshalJSON() ([]byte, error)

type ParameterDescription

type ParameterDescription struct {
	ParameterOIDs []uint32
}

func (*ParameterDescription) Backend

func (*ParameterDescription) Backend()

func (*ParameterDescription) Decode

func (dst *ParameterDescription) Decode(src []byte) error

func (*ParameterDescription) Encode

func (src *ParameterDescription) Encode(dst []byte) []byte

func (*ParameterDescription) MarshalJSON

func (src *ParameterDescription) MarshalJSON() ([]byte, error)

type ParameterStatus

type ParameterStatus struct {
	Name  string
	Value string
}

func (*ParameterStatus) Backend

func (*ParameterStatus) Backend()

func (*ParameterStatus) Decode

func (dst *ParameterStatus) Decode(src []byte) error

func (*ParameterStatus) Encode

func (src *ParameterStatus) Encode(dst []byte) []byte

func (*ParameterStatus) MarshalJSON

func (ps *ParameterStatus) MarshalJSON() ([]byte, error)

type Parse

type Parse struct {
	Name          string
	Query         string
	ParameterOIDs []uint32
}

func (*Parse) Decode

func (dst *Parse) Decode(src []byte) error

func (*Parse) Encode

func (src *Parse) Encode(dst []byte) []byte

func (*Parse) Frontend

func (*Parse) Frontend()

func (*Parse) MarshalJSON

func (src *Parse) MarshalJSON() ([]byte, error)

type ParseComplete

type ParseComplete struct{}

func (*ParseComplete) Backend

func (*ParseComplete) Backend()

func (*ParseComplete) Decode

func (dst *ParseComplete) Decode(src []byte) error

func (*ParseComplete) Encode

func (src *ParseComplete) Encode(dst []byte) []byte

func (*ParseComplete) MarshalJSON

func (src *ParseComplete) MarshalJSON() ([]byte, error)

type PasswordMessage

type PasswordMessage struct {
	Password string
}

func (*PasswordMessage) Decode

func (dst *PasswordMessage) Decode(src []byte) error

func (*PasswordMessage) Encode

func (src *PasswordMessage) Encode(dst []byte) []byte

func (*PasswordMessage) Frontend

func (*PasswordMessage) Frontend()

func (*PasswordMessage) MarshalJSON

func (src *PasswordMessage) MarshalJSON() ([]byte, error)

type Query

type Query struct {
	String string
}

func (*Query) Decode

func (dst *Query) Decode(src []byte) error

func (*Query) Encode

func (src *Query) Encode(dst []byte) []byte

func (*Query) Frontend

func (*Query) Frontend()

func (*Query) MarshalJSON

func (src *Query) MarshalJSON() ([]byte, error)

type ReadyForQuery

type ReadyForQuery struct {
	TxStatus byte
}

func (*ReadyForQuery) Backend

func (*ReadyForQuery) Backend()

func (*ReadyForQuery) Decode

func (dst *ReadyForQuery) Decode(src []byte) error

func (*ReadyForQuery) Encode

func (src *ReadyForQuery) Encode(dst []byte) []byte

func (*ReadyForQuery) MarshalJSON

func (src *ReadyForQuery) MarshalJSON() ([]byte, error)

type RowDescription

type RowDescription struct {
	Fields []FieldDescription
}

func (*RowDescription) Backend

func (*RowDescription) Backend()

func (*RowDescription) Decode

func (dst *RowDescription) Decode(src []byte) error

func (*RowDescription) Encode

func (src *RowDescription) Encode(dst []byte) []byte

func (*RowDescription) MarshalJSON

func (src *RowDescription) MarshalJSON() ([]byte, error)

type SASLInitialResponse added in v1.1.0

type SASLInitialResponse struct {
	AuthMechanism string
	Data          []byte
}

func (*SASLInitialResponse) Decode added in v1.1.0

func (dst *SASLInitialResponse) Decode(src []byte) error

func (*SASLInitialResponse) Encode added in v1.1.0

func (src *SASLInitialResponse) Encode(dst []byte) []byte

func (*SASLInitialResponse) Frontend added in v1.1.0

func (*SASLInitialResponse) Frontend()

func (*SASLInitialResponse) MarshalJSON added in v1.1.0

func (src *SASLInitialResponse) MarshalJSON() ([]byte, error)

type SASLResponse added in v1.1.0

type SASLResponse struct {
	Data []byte
}

func (*SASLResponse) Decode added in v1.1.0

func (dst *SASLResponse) Decode(src []byte) error

func (*SASLResponse) Encode added in v1.1.0

func (src *SASLResponse) Encode(dst []byte) []byte

func (*SASLResponse) Frontend added in v1.1.0

func (*SASLResponse) Frontend()

func (*SASLResponse) MarshalJSON added in v1.1.0

func (src *SASLResponse) MarshalJSON() ([]byte, error)

type StartupMessage

type StartupMessage struct {
	ProtocolVersion uint32
	Parameters      map[string]string
}

func (*StartupMessage) Decode

func (dst *StartupMessage) Decode(src []byte) error

func (*StartupMessage) Encode

func (src *StartupMessage) Encode(dst []byte) []byte

func (*StartupMessage) Frontend

func (*StartupMessage) Frontend()

func (*StartupMessage) MarshalJSON

func (src *StartupMessage) MarshalJSON() ([]byte, error)

type Sync

type Sync struct{}

func (*Sync) Decode

func (dst *Sync) Decode(src []byte) error

func (*Sync) Encode

func (src *Sync) Encode(dst []byte) []byte

func (*Sync) Frontend

func (*Sync) Frontend()

func (*Sync) MarshalJSON

func (src *Sync) MarshalJSON() ([]byte, error)

type Terminate

type Terminate struct{}

func (*Terminate) Decode

func (dst *Terminate) Decode(src []byte) error

func (*Terminate) Encode

func (src *Terminate) Encode(dst []byte) []byte

func (*Terminate) Frontend

func (*Terminate) Frontend()

func (*Terminate) MarshalJSON

func (src *Terminate) MarshalJSON() ([]byte, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL