postgres

package
v0.9.3 Latest Latest
Warning

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

Go to latest
Published: Dec 16, 2025 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
const DiscoverAllSchemaTablesQuery = "SELECT tablename FROM pg_tables WHERE schemaname=$1"
View Source
const DiscoverAllSchemasQuery = "SELECT nspname FROM pg_catalog.pg_namespace WHERE nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast', 'pgstream')"
View Source
const (
	PublicSchema = "public"
)

Variables

View Source
var (
	ErrConnTimeout = errors.New("connection timeout")
	ErrNoRows      = errors.New("no rows")
)
View Source
var ErrInvalidTableName = errors.New("invalid table name format")
View Source
var ErrUnsupportedCopyDataMessage = errors.New("unsupported copy data message")

Functions

func DefaultReplicationSlotName added in v0.3.0

func DefaultReplicationSlotName(dbName string) string

func DiscoverAllSchemaTables added in v0.8.0

func DiscoverAllSchemaTables(ctx context.Context, conn Querier, schema string) ([]string, error)

func DiscoverAllSchemas added in v0.8.0

func DiscoverAllSchemas(ctx context.Context, conn Querier) ([]string, error)

func IsQuotedIdentifier added in v0.7.6

func IsQuotedIdentifier(s string) bool

func IsValidReplicationSlotName added in v0.9.3

func IsValidReplicationSlotName(name string) error

IsValidReplicationSlotName checks if the provided replication slot name is valid. Replication slot names may only contain lower case letters, numbers, and the underscore character.

func MapError added in v0.8.10

func MapError(err error) error

func ParseConfig added in v0.8.4

func ParseConfig(pgurl string) (*pgx.ConnConfig, error)

func QuoteIdentifier added in v0.5.0

func QuoteIdentifier(s string) string

func QuoteQualifiedIdentifier added in v0.5.0

func QuoteQualifiedIdentifier(schema, table string) string

func RunPGDump added in v0.4.0

func RunPGDump(_ context.Context, opts PGDumpOptions) ([]byte, error)

Func RunPGDump runs pg_dump command with the given options and returns the result.

func RunPGDumpAll added in v0.7.9

func RunPGDumpAll(_ context.Context, opts PGDumpAllOptions) ([]byte, error)

Func RunPGDumpAll runs pg_dumpall command with the given options and returns the result.

func RunPGRestore added in v0.4.0

func RunPGRestore(ctx context.Context, opts PGRestoreOptions, dump []byte) (string, error)

Func RunPGRestore runs pg_restore command with the given options and returns the result.

Types

type CommandTag

type CommandTag struct {
	pgconn.CommandTag
}

type Conn

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

func NewConn

func NewConn(ctx context.Context, url string) (*Conn, error)

func (*Conn) Close

func (c *Conn) Close(ctx context.Context) error

func (*Conn) CopyFrom added in v0.6.0

func (c *Conn) CopyFrom(ctx context.Context, tableName string, columnNames []string, srcRows [][]any) (int64, error)

func (*Conn) Exec

func (c *Conn) Exec(ctx context.Context, query string, args ...any) (CommandTag, error)

func (*Conn) ExecInTx added in v0.3.0

func (c *Conn) ExecInTx(ctx context.Context, fn func(Tx) error) error

func (*Conn) ExecInTxWithOptions added in v0.3.0

func (c *Conn) ExecInTxWithOptions(ctx context.Context, fn func(Tx) error, opts TxOptions) error

func (*Conn) Ping added in v0.5.0

func (c *Conn) Ping(ctx context.Context) error

func (*Conn) Query

func (c *Conn) Query(ctx context.Context, query string, args ...any) (Rows, error)

func (*Conn) QueryRow

func (c *Conn) QueryRow(ctx context.Context, dest []any, query string, args ...any) error

type ErrConstraintViolation added in v0.4.0

type ErrConstraintViolation struct {
	Details string
}

func (*ErrConstraintViolation) Error added in v0.4.0

func (e *ErrConstraintViolation) Error() string

type ErrDataException added in v0.4.1

type ErrDataException struct {
	Details string
}

func (*ErrDataException) Error added in v0.4.1

func (e *ErrDataException) Error() string

type ErrPermissionDenied added in v0.8.4

type ErrPermissionDenied struct {
	Details string
}

func (*ErrPermissionDenied) Error added in v0.8.4

func (e *ErrPermissionDenied) Error() string

type ErrPreconditionFailed added in v0.9.1

type ErrPreconditionFailed struct {
	Details string
}

func (*ErrPreconditionFailed) Error added in v0.9.1

func (e *ErrPreconditionFailed) Error() string

type ErrRelationAlreadyExists added in v0.5.0

type ErrRelationAlreadyExists struct {
	Details string
}

func (*ErrRelationAlreadyExists) Error added in v0.5.0

func (e *ErrRelationAlreadyExists) Error() string

type ErrRelationDoesNotExist added in v0.4.0

type ErrRelationDoesNotExist struct {
	Details string
}

func (*ErrRelationDoesNotExist) Error added in v0.4.0

func (e *ErrRelationDoesNotExist) Error() string

type ErrRuleViolation added in v0.9.0

type ErrRuleViolation struct {
	Details string
}

func (*ErrRuleViolation) Error added in v0.9.0

func (e *ErrRuleViolation) Error() string

type ErrSyntaxError added in v0.4.0

type ErrSyntaxError struct {
	Details string
}

func (*ErrSyntaxError) Error added in v0.4.0

func (e *ErrSyntaxError) Error() string

type Error

type Error struct {
	Severity string
	Msg      string
}

func (*Error) Error

func (e *Error) Error() string

type IdentifySystemResult

type IdentifySystemResult pglogrepl.IdentifySystemResult

type Mapper added in v0.3.0

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

Mapper provides PostgreSQL type information mapping from OIDs to type names. It uses a combination of the pgx type map for standard types and a custom cache for user-defined types, querying the database when necessary.

func NewMapper added in v0.3.0

func NewMapper(conn Querier) *Mapper

NewMapper creates a new Mapper instance with the given database querier. The mapper is initialized with the standard pgx type map and an empty custom type cache.

func (*Mapper) TypeForOID added in v0.3.0

func (m *Mapper) TypeForOID(ctx context.Context, oid uint32) (string, error)

TypeForOID returns the PostgreSQL type name for the given OID. It first checks the standard pgx type map, then the custom type cache, and finally queries the database if the type is not found in either cache. Note: This method may acquire a database connection if the type is not cached.

type PGDumpAllFn added in v0.7.9

type PGDumpAllFn func(context.Context, PGDumpAllOptions) ([]byte, error)

type PGDumpAllOptions added in v0.7.9

type PGDumpAllOptions struct {
	// ConnectionString
	ConnectionString string
	// RolesOnly if true, only roles will be exported (no schema)
	RolesOnly bool
	// Clean if true, the target database will be cleaned before the dump is restored
	Clean bool
	// NoPasswords if true, no role passwords will be included in the dump
	NoPasswords bool
	// Role specifies the role to be used for the dump
	Role string
	// Do not output commands to set ownership of objects to match the original database
	NoOwner bool
	// Do not dump privileges (grant/revoke)
	NoPrivileges bool
	// Options to pass to pg_dumpall
	Options []string
}

func (*PGDumpAllOptions) ToArgs added in v0.7.9

func (opts *PGDumpAllOptions) ToArgs() []string

type PGDumpFn added in v0.6.0

type PGDumpFn func(context.Context, PGDumpOptions) ([]byte, error)

type PGDumpOptions added in v0.4.0

type PGDumpOptions struct {
	// ConnectionString
	ConnectionString string
	// Format (c custom, d directory, t tar, p plain text)
	Format string
	// Schemas to export
	Schemas []string
	// Schemas to be excluded from the dump, regex patterns supported
	ExcludeSchemas []string
	// Tables to export
	Tables []string
	// Tables to be excluded from the dump, regex patterns supported
	ExcludeTables []string
	// SchemaOnly if true, only schema will be exported (no data)
	SchemaOnly bool
	// DataOnly if true, only data will be exported (no schema)
	DataOnly bool
	// Do not dump privileges (grant/revoke)
	NoPrivileges bool
	// Do not output commands to set ownership of objects to match the original database
	NoOwner bool
	// Clean all the objects that will be dumped
	Clean bool
	// Create the database
	Create bool
	// Specifies a role name to be used to create the dump
	Role string
	// Options to pass to pg_dump
	Options []string
}

func (*PGDumpOptions) ToArgs added in v0.4.0

func (opts *PGDumpOptions) ToArgs() []string

type PGRestoreErrors added in v0.5.0

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

func NewPGRestoreErrors added in v0.5.0

func NewPGRestoreErrors(errs ...error) *PGRestoreErrors

func (PGRestoreErrors) Error added in v0.5.0

func (e PGRestoreErrors) Error() string

func (*PGRestoreErrors) GetIgnoredErrors added in v0.5.0

func (e *PGRestoreErrors) GetIgnoredErrors() []error

func (*PGRestoreErrors) HasCriticalErrors added in v0.5.0

func (e *PGRestoreErrors) HasCriticalErrors() bool

func (PGRestoreErrors) HasErrors added in v0.8.4

func (e PGRestoreErrors) HasErrors() bool

type PGRestoreFn added in v0.6.0

type PGRestoreFn func(context.Context, PGRestoreOptions, []byte) (string, error)

type PGRestoreOptions added in v0.4.0

type PGRestoreOptions struct {
	// ConnectionString
	ConnectionString string
	// SchemaOnly if true, only schema will be restored (no data)
	SchemaOnly bool
	// Clean all the objects that will be restored
	Clean bool
	// Create target database
	Create bool
	// Format (c custom, d directory, t tar, p plain text)
	Format string
	// Options to pass to pg_restore
	Options []string
}

type Pool

type Pool struct {
	*pgxpool.Pool
}

func NewConnPool

func NewConnPool(ctx context.Context, url string, opts ...PoolOption) (*Pool, error)

func (*Pool) Close

func (c *Pool) Close(_ context.Context) error

func (*Pool) CopyFrom added in v0.6.0

func (c *Pool) CopyFrom(ctx context.Context, tableName string, columnNames []string, srcRows [][]any) (int64, error)

func (*Pool) Exec

func (c *Pool) Exec(ctx context.Context, query string, args ...any) (CommandTag, error)

func (*Pool) ExecInTx added in v0.3.0

func (c *Pool) ExecInTx(ctx context.Context, fn func(Tx) error) error

func (*Pool) ExecInTxWithOptions added in v0.3.0

func (c *Pool) ExecInTxWithOptions(ctx context.Context, fn func(Tx) error, opts TxOptions) error

func (*Pool) Ping added in v0.5.0

func (c *Pool) Ping(ctx context.Context) error

func (*Pool) Query

func (c *Pool) Query(ctx context.Context, query string, args ...any) (Rows, error)

func (*Pool) QueryRow

func (c *Pool) QueryRow(ctx context.Context, dest []any, query string, args ...any) error

type PoolOption added in v0.8.8

type PoolOption func(*pgxpool.Config)

func WithMaxConnections added in v0.8.8

func WithMaxConnections(maxConns int32) PoolOption

type QualifiedName added in v0.6.2

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

func NewQualifiedName added in v0.6.2

func NewQualifiedName(s string) (*QualifiedName, error)

func (*QualifiedName) Name added in v0.6.2

func (qn *QualifiedName) Name() string

func (*QualifiedName) Schema added in v0.6.2

func (qn *QualifiedName) Schema() string

func (*QualifiedName) String added in v0.7.5

func (qn *QualifiedName) String() string

type Querier

type Querier interface {
	Query(ctx context.Context, query string, args ...any) (Rows, error)
	QueryRow(ctx context.Context, dest []any, query string, args ...any) error
	Exec(ctx context.Context, query string, args ...any) (CommandTag, error)
	ExecInTx(ctx context.Context, fn func(tx Tx) error) error
	ExecInTxWithOptions(ctx context.Context, fn func(tx Tx) error, txOpts TxOptions) error
	CopyFrom(ctx context.Context, tableName string, columnNames []string, srcRows [][]any) (int64, error)
	Ping(ctx context.Context) error
	Close(ctx context.Context) error
}

func ConnBuilder added in v0.4.1

func ConnBuilder(ctx context.Context, url string) (Querier, error)

func ConnPoolBuilder added in v0.4.1

func ConnPoolBuilder(ctx context.Context, url string) (Querier, error)

type QuerierBuilder added in v0.4.1

type QuerierBuilder func(context.Context, string) (Querier, error)

type ReplicationConfig

type ReplicationConfig struct {
	SlotName        string
	StartPos        uint64
	PluginArguments []string
}

type ReplicationConn

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

func NewReplicationConn

func NewReplicationConn(ctx context.Context, url string) (*ReplicationConn, error)

func (*ReplicationConn) Close

func (c *ReplicationConn) Close(ctx context.Context) error

func (*ReplicationConn) IdentifySystem

func (c *ReplicationConn) IdentifySystem(ctx context.Context) (IdentifySystemResult, error)

func (*ReplicationConn) ReceiveMessage

func (c *ReplicationConn) ReceiveMessage(ctx context.Context) (*ReplicationMessage, error)

func (*ReplicationConn) SendStandbyStatusUpdate

func (c *ReplicationConn) SendStandbyStatusUpdate(ctx context.Context, lsn uint64) error

func (*ReplicationConn) StartReplication

func (c *ReplicationConn) StartReplication(ctx context.Context, cfg ReplicationConfig) error

type ReplicationMessage

type ReplicationMessage struct {
	LSN            uint64
	ServerTime     time.Time
	WALData        []byte
	ReplyRequested bool
}

type ReplicationQuerier added in v0.8.8

type ReplicationQuerier interface {
	IdentifySystem(ctx context.Context) (IdentifySystemResult, error)
	StartReplication(ctx context.Context, cfg ReplicationConfig) error
	SendStandbyStatusUpdate(ctx context.Context, lsn uint64) error
	ReceiveMessage(ctx context.Context) (*ReplicationMessage, error)
	Close(ctx context.Context) error
}

type Row

type Row interface {
	pgx.Row
}

type Rows

type Rows interface {
	pgx.Rows
}

type SchemaTableMap added in v0.7.8

type SchemaTableMap map[string]map[string]struct{}

func NewSchemaTableMap added in v0.7.8

func NewSchemaTableMap(tables []string) (SchemaTableMap, error)

func (SchemaTableMap) Add added in v0.7.8

func (t SchemaTableMap) Add(table string) error

func (SchemaTableMap) ContainsSchemaTable added in v0.7.8

func (t SchemaTableMap) ContainsSchemaTable(schema, table string) bool

func (SchemaTableMap) GetSchemaTables added in v0.7.8

func (t SchemaTableMap) GetSchemaTables(schema string) map[string]struct{}

type Tx added in v0.3.0

type Tx interface {
	Query(ctx context.Context, query string, args ...any) (Rows, error)
	QueryRow(ctx context.Context, dest []any, query string, args ...any) error
	Exec(ctx context.Context, query string, args ...any) (CommandTag, error)
	CopyFrom(ctx context.Context, tableName string, columnNames []string, srcRows [][]any) (int64, error)
}

type TxAccessMode added in v0.3.0

type TxAccessMode string
const (
	ReadWrite TxAccessMode = "read write"
	ReadOnly  TxAccessMode = "read only"
)

type TxIsolationLevel added in v0.3.0

type TxIsolationLevel string
const (
	Serializable    TxIsolationLevel = "serializable"
	RepeatableRead  TxIsolationLevel = "repeatable read"
	ReadCommitted   TxIsolationLevel = "read committed"
	ReadUncommitted TxIsolationLevel = "read uncommitted"
)

type TxOptions added in v0.3.0

type TxOptions struct {
	IsolationLevel TxIsolationLevel
	AccessMode     TxAccessMode
}

type Txn added in v0.3.0

type Txn struct {
	pgx.Tx
}

func (*Txn) CopyFrom added in v0.6.2

func (t *Txn) CopyFrom(ctx context.Context, tableName string, columnNames []string, srcRows [][]any) (int64, error)

func (*Txn) Exec added in v0.3.0

func (t *Txn) Exec(ctx context.Context, query string, args ...any) (CommandTag, error)

func (*Txn) Query added in v0.3.0

func (t *Txn) Query(ctx context.Context, query string, args ...any) (Rows, error)

func (*Txn) QueryRow added in v0.3.0

func (t *Txn) QueryRow(ctx context.Context, dest []any, query string, args ...any) error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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