...

Package stmtcache

import "github.com/jackc/pgconn/stmtcache"
Overview
Index

Overview ▾

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

Constants

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

type Cache

Cache prepares and caches prepared statement descriptions.

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 maer that
    // statement as bad. The bad statement will instead be flushed during the next call to Get
    // that occurs outside of a failed transaction.
    StatementErrored(sql string, err 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
}

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

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

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

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

func (c *LRU) StatementErrored(sql string, err error)