const ( ModePrepare = iota // Cache should prepare named statements. ModeDescribe // Cache should prepare the anonymous prepared statement to only fetch the description of the statement. )
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(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.
LRU implements Cache with a Least Recently Used (LRU) cache.
type LRU struct {
// contains filtered or unexported fields
}
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 (c *LRU) Cap() int
Cap returns the maximum number of cached prepared statement descriptions.
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 (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 (c *LRU) Len() int
Len returns the number of cached prepared statement descriptions.
func (c *LRU) Mode() int
Mode returns the mode of the cache (ModePrepare or ModeDescribe)
func (c *LRU) StatementErrored(sql string, err error)