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:
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)
}
}