Skip to content

Commit 5333d3e

Browse files
authored
Merge pull request #348 from ydb-platform/prepare-nop
* Changed `database/sql` driver `prepare` behaviour to `nop` with pro…
2 parents f9038a0 + 23189f3 commit 5333d3e

File tree

8 files changed

+159
-143
lines changed

8 files changed

+159
-143
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
* Changed `database/sql` driver `prepare` behaviour to `nop` with proxing call to conn exec/query with keep-in-cache flag
2+
13
## v3.34.0
24
* Improved the `xsql` errors mapping to `driver.ErrBadConn`
35
* Extended `retry.DoTx` test for to achieve equivalence with `retry.Retry` behaviour

internal/table/statement.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,6 @@ type statement struct {
1818
params map[string]*Ydb.Type
1919
}
2020

21-
func Params(s table.Statement) map[string]*Ydb.Type {
22-
return s.(*statement).params
23-
}
24-
2521
// Execute executes prepared data query.
2622
func (s *statement) Execute(
2723
ctx context.Context, tx *table.TransactionControl,

internal/xsql/conn.go

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import (
88
"sync/atomic"
99

1010
"github.com/ydb-platform/ydb-go-sdk/v3/internal/retry"
11-
internal "github.com/ydb-platform/ydb-go-sdk/v3/internal/table"
1211
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors"
1312
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xsql/badconn"
1413
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xsql/isolation"
@@ -160,16 +159,10 @@ func (c *conn) PrepareContext(ctx context.Context, query string) (_ driver.Stmt,
160159
if c.isClosed() {
161160
return nil, errClosedConn
162161
}
163-
var s table.Statement
164-
s, err = c.session.Prepare(ctx, query)
165-
if err != nil {
166-
return nil, c.checkClosed(err)
167-
}
168162
return &stmt{
169-
conn: c,
170-
params: internal.Params(s),
171-
query: query,
172-
trace: c.trace,
163+
conn: c,
164+
query: query,
165+
trace: c.trace,
173166
}, nil
174167
}
175168

internal/xsql/connector.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ var (
103103

104104
func (c *Connector) Close() (err error) {
105105
defer c.driver.Detach(c)
106-
return c.connection.Close(context.Background())
106+
return nil
107107
}
108108

109109
func (c *Connector) Connection() connection {

internal/xsql/stmt.go

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,20 @@ import (
55
"database/sql/driver"
66
"fmt"
77

8-
"github.com/ydb-platform/ydb-go-genproto/protos/Ydb"
9-
108
"github.com/ydb-platform/ydb-go-sdk/v3/trace"
119
)
1210

1311
type stmt struct {
14-
nopResult
15-
namedValueChecker
16-
17-
conn *conn
18-
params map[string]*Ydb.Type
19-
query string
12+
conn *conn
13+
query string
2014

2115
trace trace.DatabaseSQL
2216
}
2317

2418
var (
25-
_ driver.Stmt = &stmt{}
26-
_ driver.StmtQueryContext = &stmt{}
27-
_ driver.StmtExecContext = &stmt{}
28-
_ driver.NamedValueChecker = &stmt{}
19+
_ driver.Stmt = &stmt{}
20+
_ driver.StmtQueryContext = &stmt{}
21+
_ driver.StmtExecContext = &stmt{}
2922
)
3023

3124
func (s *stmt) QueryContext(ctx context.Context, args []driver.NamedValue) (_ driver.Rows, err error) {
@@ -36,9 +29,9 @@ func (s *stmt) QueryContext(ctx context.Context, args []driver.NamedValue) (_ dr
3629
if s.conn.isClosed() {
3730
return nil, errClosedConn
3831
}
39-
switch m := queryModeFromContext(withKeepInCache(ctx), s.conn.defaultQueryMode); m {
32+
switch m := queryModeFromContext(ctx, s.conn.defaultQueryMode); m {
4033
case DataQueryMode:
41-
return s.conn.QueryContext(ctx, s.query, args)
34+
return s.conn.QueryContext(withKeepInCache(ctx), s.query, args)
4235
default:
4336
return nil, fmt.Errorf("unsupported query mode '%s' for execute query on prepared statement", m)
4437
}
@@ -52,16 +45,16 @@ func (s *stmt) ExecContext(ctx context.Context, args []driver.NamedValue) (_ dri
5245
if s.conn.isClosed() {
5346
return nil, errClosedConn
5447
}
55-
switch m := queryModeFromContext(withKeepInCache(ctx), s.conn.defaultQueryMode); m {
48+
switch m := queryModeFromContext(ctx, s.conn.defaultQueryMode); m {
5649
case DataQueryMode:
57-
return s.conn.ExecContext(ctx, s.query, args)
50+
return s.conn.ExecContext(withKeepInCache(ctx), s.query, args)
5851
default:
5952
return nil, fmt.Errorf("unsupported query mode '%s' for execute query on prepared statement", m)
6053
}
6154
}
6255

6356
func (s *stmt) NumInput() int {
64-
return len(s.params)
57+
return -1
6558
}
6659

6760
func (s *stmt) Close() (err error) {

log/driver.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -422,7 +422,7 @@ func Driver(l Logger, details trace.Details) (t trace.Driver) {
422422
//nolint:nestif
423423
if details&trace.DriverBalancerEvents != 0 {
424424
//nolint:govet
425-
l := l.WithName(`cluster`)
425+
l := l.WithName(`balancer`)
426426
t.OnBalancerInit = func(info trace.DriverBalancerInitStartInfo) func(trace.DriverBalancerInitDoneInfo) {
427427
l.Tracef(`init start`)
428428
start := time.Now()

retry/sql_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ func (m *mockConn) Close() error {
8585
}
8686

8787
func (m *mockConn) Begin() (driver.Tx, error) {
88+
m.t.Log(xerrors.StackRecord(0))
8889
return nil, driver.ErrSkip
8990
}
9091

@@ -141,7 +142,7 @@ func (m *mockStmt) Close() error {
141142

142143
func (m *mockStmt) NumInput() int {
143144
m.t.Log(xerrors.StackRecord(0))
144-
return 0
145+
return -1
145146
}
146147

147148
func (m *mockStmt) Exec(args []driver.Value) (driver.Result, error) {

0 commit comments

Comments
 (0)