summaryrefslogtreecommitdiff
path: root/vendor/github.com/jackc/pgx/v5/internal/stmtcache
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/jackc/pgx/v5/internal/stmtcache')
-rw-r--r--vendor/github.com/jackc/pgx/v5/internal/stmtcache/lru_cache.go112
-rw-r--r--vendor/github.com/jackc/pgx/v5/internal/stmtcache/stmtcache.go45
-rw-r--r--vendor/github.com/jackc/pgx/v5/internal/stmtcache/unlimited_cache.go77
3 files changed, 0 insertions, 234 deletions
diff --git a/vendor/github.com/jackc/pgx/v5/internal/stmtcache/lru_cache.go b/vendor/github.com/jackc/pgx/v5/internal/stmtcache/lru_cache.go
deleted file mode 100644
index dec83f47b..000000000
--- a/vendor/github.com/jackc/pgx/v5/internal/stmtcache/lru_cache.go
+++ /dev/null
@@ -1,112 +0,0 @@
-package stmtcache
-
-import (
- "container/list"
-
- "github.com/jackc/pgx/v5/pgconn"
-)
-
-// LRUCache implements Cache with a Least Recently Used (LRU) cache.
-type LRUCache struct {
- cap int
- m map[string]*list.Element
- l *list.List
- invalidStmts []*pgconn.StatementDescription
-}
-
-// NewLRUCache creates a new LRUCache. cap is the maximum size of the cache.
-func NewLRUCache(cap int) *LRUCache {
- return &LRUCache{
- cap: cap,
- m: make(map[string]*list.Element),
- l: list.New(),
- }
-}
-
-// Get returns the statement description for sql. Returns nil if not found.
-func (c *LRUCache) Get(key string) *pgconn.StatementDescription {
- if el, ok := c.m[key]; ok {
- c.l.MoveToFront(el)
- return el.Value.(*pgconn.StatementDescription)
- }
-
- return nil
-
-}
-
-// Put stores sd in the cache. Put panics if sd.SQL is "". Put does nothing if sd.SQL already exists in the cache or
-// sd.SQL has been invalidated and HandleInvalidated has not been called yet.
-func (c *LRUCache) Put(sd *pgconn.StatementDescription) {
- if sd.SQL == "" {
- panic("cannot store statement description with empty SQL")
- }
-
- if _, present := c.m[sd.SQL]; present {
- return
- }
-
- // The statement may have been invalidated but not yet handled. Do not readd it to the cache.
- for _, invalidSD := range c.invalidStmts {
- if invalidSD.SQL == sd.SQL {
- return
- }
- }
-
- if c.l.Len() == c.cap {
- c.invalidateOldest()
- }
-
- el := c.l.PushFront(sd)
- c.m[sd.SQL] = el
-}
-
-// Invalidate invalidates statement description identified by sql. Does nothing if not found.
-func (c *LRUCache) Invalidate(sql string) {
- if el, ok := c.m[sql]; ok {
- delete(c.m, sql)
- c.invalidStmts = append(c.invalidStmts, el.Value.(*pgconn.StatementDescription))
- c.l.Remove(el)
- }
-}
-
-// InvalidateAll invalidates all statement descriptions.
-func (c *LRUCache) InvalidateAll() {
- el := c.l.Front()
- for el != nil {
- c.invalidStmts = append(c.invalidStmts, el.Value.(*pgconn.StatementDescription))
- el = el.Next()
- }
-
- c.m = make(map[string]*list.Element)
- c.l = list.New()
-}
-
-// GetInvalidated returns a slice of all statement descriptions invalidated since the last call to RemoveInvalidated.
-func (c *LRUCache) GetInvalidated() []*pgconn.StatementDescription {
- return c.invalidStmts
-}
-
-// RemoveInvalidated removes all invalidated statement descriptions. No other calls to Cache must be made between a
-// call to GetInvalidated and RemoveInvalidated or RemoveInvalidated may remove statement descriptions that were
-// never seen by the call to GetInvalidated.
-func (c *LRUCache) RemoveInvalidated() {
- c.invalidStmts = nil
-}
-
-// Len returns the number of cached prepared statement descriptions.
-func (c *LRUCache) Len() int {
- return c.l.Len()
-}
-
-// Cap returns the maximum number of cached prepared statement descriptions.
-func (c *LRUCache) Cap() int {
- return c.cap
-}
-
-func (c *LRUCache) invalidateOldest() {
- oldest := c.l.Back()
- sd := oldest.Value.(*pgconn.StatementDescription)
- c.invalidStmts = append(c.invalidStmts, sd)
- delete(c.m, sd.SQL)
- c.l.Remove(oldest)
-}
diff --git a/vendor/github.com/jackc/pgx/v5/internal/stmtcache/stmtcache.go b/vendor/github.com/jackc/pgx/v5/internal/stmtcache/stmtcache.go
deleted file mode 100644
index d57bdd29e..000000000
--- a/vendor/github.com/jackc/pgx/v5/internal/stmtcache/stmtcache.go
+++ /dev/null
@@ -1,45 +0,0 @@
-// Package stmtcache is a cache for statement descriptions.
-package stmtcache
-
-import (
- "crypto/sha256"
- "encoding/hex"
-
- "github.com/jackc/pgx/v5/pgconn"
-)
-
-// StatementName returns a statement name that will be stable for sql across multiple connections and program
-// executions.
-func StatementName(sql string) string {
- digest := sha256.Sum256([]byte(sql))
- return "stmtcache_" + hex.EncodeToString(digest[0:24])
-}
-
-// Cache caches statement descriptions.
-type Cache interface {
- // Get returns the statement description for sql. Returns nil if not found.
- Get(sql string) *pgconn.StatementDescription
-
- // Put stores sd in the cache. Put panics if sd.SQL is "". Put does nothing if sd.SQL already exists in the cache.
- Put(sd *pgconn.StatementDescription)
-
- // Invalidate invalidates statement description identified by sql. Does nothing if not found.
- Invalidate(sql string)
-
- // InvalidateAll invalidates all statement descriptions.
- InvalidateAll()
-
- // GetInvalidated returns a slice of all statement descriptions invalidated since the last call to RemoveInvalidated.
- GetInvalidated() []*pgconn.StatementDescription
-
- // RemoveInvalidated removes all invalidated statement descriptions. No other calls to Cache must be made between a
- // call to GetInvalidated and RemoveInvalidated or RemoveInvalidated may remove statement descriptions that were
- // never seen by the call to GetInvalidated.
- RemoveInvalidated()
-
- // Len returns the number of cached prepared statement descriptions.
- Len() int
-
- // Cap returns the maximum number of cached prepared statement descriptions.
- Cap() int
-}
diff --git a/vendor/github.com/jackc/pgx/v5/internal/stmtcache/unlimited_cache.go b/vendor/github.com/jackc/pgx/v5/internal/stmtcache/unlimited_cache.go
deleted file mode 100644
index 696413291..000000000
--- a/vendor/github.com/jackc/pgx/v5/internal/stmtcache/unlimited_cache.go
+++ /dev/null
@@ -1,77 +0,0 @@
-package stmtcache
-
-import (
- "math"
-
- "github.com/jackc/pgx/v5/pgconn"
-)
-
-// UnlimitedCache implements Cache with no capacity limit.
-type UnlimitedCache struct {
- m map[string]*pgconn.StatementDescription
- invalidStmts []*pgconn.StatementDescription
-}
-
-// NewUnlimitedCache creates a new UnlimitedCache.
-func NewUnlimitedCache() *UnlimitedCache {
- return &UnlimitedCache{
- m: make(map[string]*pgconn.StatementDescription),
- }
-}
-
-// Get returns the statement description for sql. Returns nil if not found.
-func (c *UnlimitedCache) Get(sql string) *pgconn.StatementDescription {
- return c.m[sql]
-}
-
-// Put stores sd in the cache. Put panics if sd.SQL is "". Put does nothing if sd.SQL already exists in the cache.
-func (c *UnlimitedCache) Put(sd *pgconn.StatementDescription) {
- if sd.SQL == "" {
- panic("cannot store statement description with empty SQL")
- }
-
- if _, present := c.m[sd.SQL]; present {
- return
- }
-
- c.m[sd.SQL] = sd
-}
-
-// Invalidate invalidates statement description identified by sql. Does nothing if not found.
-func (c *UnlimitedCache) Invalidate(sql string) {
- if sd, ok := c.m[sql]; ok {
- delete(c.m, sql)
- c.invalidStmts = append(c.invalidStmts, sd)
- }
-}
-
-// InvalidateAll invalidates all statement descriptions.
-func (c *UnlimitedCache) InvalidateAll() {
- for _, sd := range c.m {
- c.invalidStmts = append(c.invalidStmts, sd)
- }
-
- c.m = make(map[string]*pgconn.StatementDescription)
-}
-
-// GetInvalidated returns a slice of all statement descriptions invalidated since the last call to RemoveInvalidated.
-func (c *UnlimitedCache) GetInvalidated() []*pgconn.StatementDescription {
- return c.invalidStmts
-}
-
-// RemoveInvalidated removes all invalidated statement descriptions. No other calls to Cache must be made between a
-// call to GetInvalidated and RemoveInvalidated or RemoveInvalidated may remove statement descriptions that were
-// never seen by the call to GetInvalidated.
-func (c *UnlimitedCache) RemoveInvalidated() {
- c.invalidStmts = nil
-}
-
-// Len returns the number of cached prepared statement descriptions.
-func (c *UnlimitedCache) Len() int {
- return len(c.m)
-}
-
-// Cap returns the maximum number of cached prepared statement descriptions.
-func (c *UnlimitedCache) Cap() int {
- return math.MaxInt
-}