stmtcache

package
v1.7.103 Latest Latest
Warning

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

Go to latest
Published: Nov 9, 2020 License: MIT Imports: 5 Imported by: 0

Documentation

Overview

Package stmtcache is a cache that can be used to implement lazy prepared statements.

Index

Constants

View Source
const (
	ModePrepare  = iota // Cache should prepare named statements.
	ModeDescribe        // Cache should prepare the anonymous prepared statement to only fetch the description of the statement.
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Cache

type Cache interface {
	// Get returns the prepared statement description for sql preparing or describing the sql on the server as needed.
	Get(ctx context.Context, sql string) (*pgconn.StatementDescription, error)

	// Clear removes all entries in the cache. Any prepared statements will be deallocated from the PostgreSQL session.
	Clear(ctx context.Context) error

	// StatementErrored informs the cache that the given statement resulted in an error when it
	// was last used against the database. In some cases, this will cause the cache to flush
	// the statement from the cache. It will only do so when the underlying `*pgconn.PgConn`
	// is not currently in a transaction. If the connection is in the middle of a transaction,
	// the bad statement will instead be flushed during the next call to Get that occurrs outside
	// of a transaction.
	StatementErrored(ctx context.Context, sql string, err error) error

	// Len returns the number of cached prepared statement descriptions.
	Len() int

	// Cap returns the maximum number of cached prepared statement descriptions.
	Cap() int

	// Mode returns the mode of the cache (ModePrepare or ModeDescribe)
	Mode() int
}

Cache prepares and caches prepared statement descriptions.

func New

func New(conn *pgconn.PgConn, mode int, cap int) Cache

New returns the preferred cache implementation for mode and cap. mode is either ModePrepare or ModeDescribe. cap is the maximum size of the cache.

type LRU

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

LRU implements Cache with a Least Recently Used (LRU) cache.

func NewLRU

func NewLRU(conn *pgconn.PgConn, mode int, cap int) *LRU

NewLRU creates a new LRU. mode is either ModePrepare or ModeDescribe. cap is the maximum size of the cache.

func (*LRU) Cap

func (c *LRU) Cap() int

Cap returns the maximum number of cached prepared statement descriptions.

func (*LRU) Clear

func (c *LRU) Clear(ctx context.Context) error

Clear removes all entries in the cache. Any prepared statements will be deallocated from the PostgreSQL session.

func (*LRU) Get

func (c *LRU) Get(ctx context.Context, sql string) (*pgconn.StatementDescription, error)

Get returns the prepared statement description for sql preparing or describing the sql on the server as needed.

func (*LRU) Len

func (c *LRU) Len() int

Len returns the number of cached prepared statement descriptions.

func (*LRU) Mode

func (c *LRU) Mode() int

Mode returns the mode of the cache (ModePrepare or ModeDescribe)

func (*LRU) StatementErrored added in v1.7.102

func (c *LRU) StatementErrored(ctx context.Context, sql string, err error) error

Jump to

Keyboard shortcuts

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