diff options
| author | Stefan Majewsky <majewsky@gmx.net> | 2026-05-12 23:32:28 +0200 |
|---|---|---|
| committer | Stefan Majewsky <majewsky@gmx.net> | 2026-05-12 23:32:28 +0200 |
| commit | a86a346ecceb7ad409f116474c1593b201012cf2 (patch) | |
| tree | 267505a9e6bba398f7a379a046df64a8aec45b1c /benchmark/internal/oblast_pgx/statement.go | |
| parent | 23fa77bbe1286b55e2526c0a965da1a4c3048415 (diff) | |
| download | go-oblast-a86a346ecceb7ad409f116474c1593b201012cf2.tar.gz | |
add PostgreSQL benchmark, comparing lib/pq against pgx both with and w/o Oblast
Diffstat (limited to 'benchmark/internal/oblast_pgx/statement.go')
| -rw-r--r-- | benchmark/internal/oblast_pgx/statement.go | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/benchmark/internal/oblast_pgx/statement.go b/benchmark/internal/oblast_pgx/statement.go new file mode 100644 index 0000000..d81c579 --- /dev/null +++ b/benchmark/internal/oblast_pgx/statement.go @@ -0,0 +1,60 @@ +// SPDX-FileCopyrightText: 2026 Stefan Majewsky <majewsky@gmx.net> +// SPDX-License-Identifier: Apache-2.0 + +package oblast_pgx + +import ( + "context" + "database/sql" + + "github.com/jackc/pgx/v5/pgconn" + "go.xyrillian.de/oblast/handle" +) + +type wrappedPreparedStatement struct { + ctx context.Context + statement *pgconn.StatementDescription + handle Handle +} + +type wrappedUnpreparedStatement struct { + query string + handle Handle +} + +var ( + _ handle.Statement = wrappedPreparedStatement{} + _ handle.Statement = wrappedUnpreparedStatement{} +) + +// Close implements the [handle.Statement] interface. +func (s wrappedPreparedStatement) Close() error { + return deallocate(s.ctx, s.handle, s.statement) +} + +// Close implements the [handle.Statement] interface. +func (s wrappedUnpreparedStatement) Close() error { + return nil +} + +// Exec implements the [handle.Statement] interface. +func (s wrappedPreparedStatement) Exec(ctx context.Context, args []any) (sql.Result, error) { + result, err := s.handle.Exec(ctx, s.statement.Name, args...) + return wrappedResult{result}, err +} + +// Exec implements the [handle.Statement] interface. +func (s wrappedUnpreparedStatement) Exec(ctx context.Context, args []any) (sql.Result, error) { + result, err := s.handle.Exec(ctx, s.query, args...) + return wrappedResult{result}, err +} + +// QueryRow implements the [handle.Statement] interface. +func (s wrappedPreparedStatement) QueryRow(ctx context.Context, args, slots []any) error { + return s.handle.QueryRow(ctx, s.statement.Name, args...).Scan(slots...) +} + +// QueryRow implements the [handle.Statement] interface. +func (s wrappedUnpreparedStatement) QueryRow(ctx context.Context, args, slots []any) error { + return s.handle.QueryRow(ctx, s.query, args...).Scan(slots...) +} |
