package stmtcache

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

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

Index

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.
)

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

	// 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)

Source Files

lru.go stmtcache.go

Version
v1.3.1
Published
Feb 5, 2020
Platform
windows/amd64
Imports
5 packages
Last checked
3 hours ago

Tools for package owners.