go-vise

Constrained Size Output Virtual Machine
Info | Log | Files | Refs | README | LICENSE

commit 6c29d5ba580aec692a23c0052205e0bcfd3bebb3
parent 11da04233e73adb37636ae64d0ed429a340eef69
Author: lash <dev@holbrook.no>
Date:   Sun, 19 Jan 2025 11:04:46 +0000

Close rows on all get returns postgres db

Diffstat:
Mdb/postgres/pg.go | 30++++++++++++++++++++----------
Mdb/postgres/pg_test.go | 16+++-------------
2 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/db/postgres/pg.go b/db/postgres/pg.go @@ -145,6 +145,7 @@ func(pdb *pgDb) Put(ctx context.Context, key []byte, val []byte) error { if err != nil { return err } + logg.TraceCtxf(ctx, "put", "key", key, "val", val) query := fmt.Sprintf("INSERT INTO %s.kv_vise (key, value, updated) VALUES ($1, $2, 'now') ON CONFLICT(key) DO UPDATE SET value = $2, updated = 'now';", pdb.schema) actualKey := lk.Default if lk.Translation != nil { @@ -161,16 +162,17 @@ func(pdb *pgDb) Put(ctx context.Context, key []byte, val []byte) error { // Get implements Db. func (pdb *pgDb) Get(ctx context.Context, key []byte) ([]byte, error) { + var rr []byte lk, err := pdb.ToKey(ctx, key) if err != nil { return nil, err } - //tx, err := pdb.conn.BeginTx(ctx, defaultTxOptions) err = pdb.start(ctx) if err != nil { return nil, err } + logg.TraceCtxf(ctx, "get", "key", key) if lk.Translation != nil { query := fmt.Sprintf("SELECT value FROM %s.kv_vise WHERE key = $1", pdb.schema) @@ -179,15 +181,17 @@ func (pdb *pgDb) Get(ctx context.Context, key []byte) ([]byte, error) { pdb.Abort(ctx) return nil, err } - defer rs.Close() if rs.Next() { - // TODO: encode non raw - r := rs.RawValues() - //tx.Commit(ctx) - //tx.Rollback(ctx) + err = rs.Scan(&rr) + if err != nil { + pdb.Abort(ctx) + return nil, err + } + + rs.Close() err = pdb.stopSingle(ctx) - return r[0], err + return rr, err } } @@ -197,16 +201,22 @@ func (pdb *pgDb) Get(ctx context.Context, key []byte) ([]byte, error) { pdb.Abort(ctx) return nil, err } - defer rs.Close() if !rs.Next() { + rs.Close() pdb.Abort(ctx) return nil, db.NewErrNotFound(key) } - r := rs.RawValues() + err = rs.Scan(&rr) + if err != nil { + rs.Close() + pdb.Abort(ctx) + return nil, err + } + rs.Close() err = pdb.stopSingle(ctx) - return r[0], err + return rr, err } // Close implements Db. diff --git a/db/postgres/pg_test.go b/db/postgres/pg_test.go @@ -3,8 +3,6 @@ package postgres import ( "bytes" "context" - "encoding/base64" - "strings" "testing" pgxmock "github.com/pashagolub/pgxmock/v4" @@ -87,11 +85,7 @@ func TestPutGetPg(t *testing.T) { } // TODO: implement as pgtype map instead, and btw also ask why getting base64 here - br, err := base64.StdEncoding.DecodeString(strings.Trim(string(b), "\"")) - if err != nil { - t.Fatal(err) - } - if !bytes.Equal(br, v) { + if !bytes.Equal(b, v) { t.Fatalf("expected 'bar', got %x", b) } @@ -122,12 +116,8 @@ func TestPutGetPg(t *testing.T) { t.Fatal(err) } - br, err = base64.StdEncoding.DecodeString(strings.Trim(string(b), "\"")) - if err != nil { - t.Fatal(err) - } - if !bytes.Equal(br, v) { - t.Fatalf("expected 'plugh', got %x", br) + if !bytes.Equal(b, v) { + t.Fatalf("expected 'plugh', got %x", b) } }