aboutsummaryrefslogtreecommitdiff
path: root/results.go
diff options
context:
space:
mode:
authorStefan Majewsky <majewsky@gmx.net>2026-07-30 20:20:42 +0200
committerStefan Majewsky <majewsky@gmx.net>2026-07-30 20:20:52 +0200
commit1186412d28857b9bfa14e7e3106ecd845e71fe71 (patch)
tree8e099198aa5587beb9c022c0acd269923d2fe439 /results.go
parentb5cd5579747a459113a7e6c899fca5c6afbea066 (diff)
downloadgo-gg-pgx-1186412d28857b9bfa14e7e3106ecd845e71fe71.tar.gz
import code from oblast/benchmark/internal
Minimally edited to s/oblast/gsql/.
Diffstat (limited to 'results.go')
-rw-r--r--results.go66
1 files changed, 66 insertions, 0 deletions
diff --git a/results.go b/results.go
new file mode 100644
index 0000000..510bb08
--- /dev/null
+++ b/results.go
@@ -0,0 +1,66 @@
+// SPDX-FileCopyrightText: 2026 Stefan Majewsky <majewsky@gmx.net>
+// SPDX-License-Identifier: Apache-2.0
+
+package gg_pgx
+
+import (
+ "database/sql"
+ "errors"
+
+ "github.com/jackc/pgx/v5"
+ "github.com/jackc/pgx/v5/pgconn"
+ "go.xyrillian.de/gg/gsql"
+)
+
+type wrappedRows struct {
+ inner pgx.Rows
+}
+
+var _ gsql.Rows = wrappedRows{}
+
+// Columns implements the [gsql.Rows] interface.
+func (r wrappedRows) Columns() ([]string, error) {
+ descriptions := r.inner.FieldDescriptions()
+ result := make([]string, len(descriptions))
+ for idx, desc := range descriptions {
+ result[idx] = desc.Name
+ }
+ return result, nil
+}
+
+// Close implements the [gsql.Rows] interface.
+func (r wrappedRows) Close() error {
+ r.inner.Close()
+ return nil
+}
+
+// Err implements the [gsql.Rows] interface.
+func (r wrappedRows) Err() error {
+ return r.inner.Err()
+}
+
+// Next implements the [gsql.Rows] interface.
+func (r wrappedRows) Next() bool {
+ return r.inner.Next()
+}
+
+// Scan implements the [gsql.Rows] interface.
+func (r wrappedRows) Scan(args ...any) error {
+ return r.inner.Scan(args...)
+}
+
+type wrappedResult struct {
+ inner pgconn.CommandTag
+}
+
+var _ sql.Result = wrappedResult{}
+
+// LastInsertId implements the [sql.Result] interface.
+func (r wrappedResult) LastInsertId() (int64, error) {
+ return 0, errors.New("PostgreSQL does not support LastInsertId()")
+}
+
+// LastInsertId implements the [sql.Result] interface.
+func (r wrappedResult) RowsAffected() (int64, error) {
+ return r.inner.RowsAffected(), nil
+}