Skip to content

Commit 91cf42d

Browse files
authored
Merge pull request #1387 moved internal/query/tx.{Identifier,ID} to new package internal/tx
2 parents c069bb3 + e6cfa65 commit 91cf42d

File tree

11 files changed

+97
-87
lines changed

11 files changed

+97
-87
lines changed

Diff for: internal/query/transaction.go

+5-2
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,17 @@ import (
88
"github.com/ydb-platform/ydb-go-genproto/protos/Ydb_Query"
99

1010
"github.com/ydb-platform/ydb-go-sdk/v3/internal/query/options"
11-
"github.com/ydb-platform/ydb-go-sdk/v3/internal/query/tx"
1211
"github.com/ydb-platform/ydb-go-sdk/v3/internal/stack"
12+
"github.com/ydb-platform/ydb-go-sdk/v3/internal/tx"
1313
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors"
1414
"github.com/ydb-platform/ydb-go-sdk/v3/query"
1515
"github.com/ydb-platform/ydb-go-sdk/v3/trace"
1616
)
1717

18-
var _ query.Transaction = (*Transaction)(nil)
18+
var (
19+
_ query.Transaction = (*Transaction)(nil)
20+
_ tx.Identifier = (*Transaction)(nil)
21+
)
1922

2023
type Transaction struct {
2124
tx.Identifier

Diff for: internal/query/tx/control.go

+2-5
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"github.com/ydb-platform/ydb-go-genproto/protos/Ydb_Query"
55

66
"github.com/ydb-platform/ydb-go-sdk/v3/internal/allocator"
7+
"github.com/ydb-platform/ydb-go-sdk/v3/internal/tx"
78
)
89

910
var (
@@ -24,10 +25,6 @@ type (
2425
selector Selector
2526
commit bool
2627
}
27-
Identifier interface {
28-
ID() string
29-
isYdbTx()
30-
}
3128
)
3229

3330
func (ctrl *Control) ToYDB(a *allocator.Allocator) *Ydb_Query.TransactionControl {
@@ -86,7 +83,7 @@ func (id txIDTxControlOption) applyTxSelector(a *allocator.Allocator, txControl
8683
txControl.TxSelector = selector
8784
}
8885

89-
func WithTx(t Identifier) txIDTxControlOption {
86+
func WithTx(t tx.Identifier) txIDTxControlOption {
9087
return txIDTxControlOption(t.ID())
9188
}
9289

Diff for: internal/table/session.go

+7-6
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
"github.com/ydb-platform/ydb-go-sdk/v3/internal/stack"
2727
"github.com/ydb-platform/ydb-go-sdk/v3/internal/table/config"
2828
"github.com/ydb-platform/ydb-go-sdk/v3/internal/table/scanner"
29+
"github.com/ydb-platform/ydb-go-sdk/v3/internal/tx"
2930
"github.com/ydb-platform/ydb-go-sdk/v3/internal/types"
3031
"github.com/ydb-platform/ydb-go-sdk/v3/internal/value"
3132
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xcontext"
@@ -852,14 +853,14 @@ func (s *session) executeQueryResult(
852853
table.Transaction, result.Result, error,
853854
) {
854855
tx := &transaction{
855-
id: res.GetTxMeta().GetId(),
856-
s: s,
856+
Identifier: tx.ID(res.GetTxMeta().GetId()),
857+
s: s,
857858
}
858859
if txControl.GetCommitTx() {
859860
tx.state.Store(txStateCommitted)
860861
} else {
861862
tx.state.Store(txStateInitialized)
862-
tx.control = table.TxControl(table.WithTxID(tx.id))
863+
tx.control = table.TxControl(table.WithTxID(tx.ID()))
863864
}
864865

865866
return tx, scanner.NewUnary(
@@ -1335,9 +1336,9 @@ func (s *session) BeginTransaction(
13351336
return nil, xerrors.WithStackTrace(err)
13361337
}
13371338
tx := &transaction{
1338-
id: result.GetTxMeta().GetId(),
1339-
s: s,
1340-
control: table.TxControl(table.WithTxID(result.GetTxMeta().GetId())),
1339+
Identifier: tx.ID(result.GetTxMeta().GetId()),
1340+
s: s,
1341+
control: table.TxControl(table.WithTxID(result.GetTxMeta().GetId())),
13411342
}
13421343
tx.state.Store(txStateInitialized)
13431344

Diff for: internal/table/session_test.go

+3
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"github.com/ydb-platform/ydb-go-sdk/v3/internal/allocator"
2323
"github.com/ydb-platform/ydb-go-sdk/v3/internal/operation"
2424
"github.com/ydb-platform/ydb-go-sdk/v3/internal/table/config"
25+
"github.com/ydb-platform/ydb-go-sdk/v3/internal/tx"
2526
"github.com/ydb-platform/ydb-go-sdk/v3/internal/types"
2627
"github.com/ydb-platform/ydb-go-sdk/v3/internal/value"
2728
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xcontext"
@@ -301,6 +302,7 @@ func TestSessionOperationModeOnExecuteDataQuery(t *testing.T) {
301302
method: testutil.TableCommitTransaction,
302303
do: func(t *testing.T, ctx context.Context, c *Client) {
303304
tx := &transaction{
305+
Identifier: tx.ID(""),
304306
s: &session{
305307
tableService: Ydb_Table_V1.NewTableServiceClient(c.cc),
306308
config: config.New(),
@@ -314,6 +316,7 @@ func TestSessionOperationModeOnExecuteDataQuery(t *testing.T) {
314316
method: testutil.TableRollbackTransaction,
315317
do: func(t *testing.T, ctx context.Context, c *Client) {
316318
tx := &transaction{
319+
Identifier: tx.ID(""),
317320
s: &session{
318321
tableService: Ydb_Table_V1.NewTableServiceClient(c.cc),
319322
config: config.New(),

Diff for: internal/table/transaction.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/ydb-platform/ydb-go-sdk/v3/internal/params"
1313
"github.com/ydb-platform/ydb-go-sdk/v3/internal/stack"
1414
"github.com/ydb-platform/ydb-go-sdk/v3/internal/table/scanner"
15+
"github.com/ydb-platform/ydb-go-sdk/v3/internal/tx"
1516
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors"
1617
"github.com/ydb-platform/ydb-go-sdk/v3/table"
1718
"github.com/ydb-platform/ydb-go-sdk/v3/table/options"
@@ -44,17 +45,16 @@ const (
4445
txStateRollbacked
4546
)
4647

48+
var _ tx.Identifier = (*transaction)(nil)
49+
4750
type transaction struct {
48-
id string
51+
tx.Identifier
52+
4953
s *session
5054
control *table.TransactionControl
5155
state txState
5256
}
5357

54-
func (tx *transaction) ID() string {
55-
return tx.id
56-
}
57-
5858
// Execute executes query represented by text within transaction tx.
5959
func (tx *transaction) Execute(
6060
ctx context.Context,
@@ -154,7 +154,7 @@ func (tx *transaction) CommitTx(
154154
var (
155155
request = &Ydb_Table.CommitTransactionRequest{
156156
SessionId: tx.s.id,
157-
TxId: tx.id,
157+
TxId: tx.ID(),
158158
OperationParams: operation.Params(
159159
ctx,
160160
tx.s.config.OperationTimeout(),
@@ -212,7 +212,7 @@ func (tx *transaction) Rollback(ctx context.Context) (err error) {
212212
_, err = tx.s.tableService.RollbackTransaction(ctx,
213213
&Ydb_Table.RollbackTransactionRequest{
214214
SessionId: tx.s.id,
215-
TxId: tx.id,
215+
TxId: tx.ID(),
216216
OperationParams: operation.Params(
217217
ctx,
218218
tx.s.config.OperationTimeout(),

Diff for: internal/query/tx/id.go renamed to internal/tx/id.go

+7-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,13 @@ package tx
22

33
var _ Identifier = (*ID)(nil)
44

5-
type ID string
5+
type (
6+
Identifier interface {
7+
ID() string
8+
isYdbTx()
9+
}
10+
ID string
11+
)
612

713
func (id ID) ID() string {
814
return string(id)

Diff for: internal/xsql/conn.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"github.com/ydb-platform/ydb-go-sdk/v3/internal/params"
1515
"github.com/ydb-platform/ydb-go-sdk/v3/internal/scheme/helpers"
1616
"github.com/ydb-platform/ydb-go-sdk/v3/internal/stack"
17+
"github.com/ydb-platform/ydb-go-sdk/v3/internal/tx"
1718
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xcontext"
1819
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors"
1920
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xsql/badconn"
@@ -101,11 +102,11 @@ func (c *conn) IsValid() bool {
101102
}
102103

103104
type currentTx interface {
105+
tx.Identifier
104106
driver.Tx
105107
driver.ExecerContext
106108
driver.QueryerContext
107109
driver.ConnPrepareContext
108-
table.TransactionIdentifier
109110
}
110111

111112
type resultNoRows struct{}

Diff for: internal/xsql/tx.go

+25-25
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,27 @@ import (
66
"fmt"
77

88
"github.com/ydb-platform/ydb-go-sdk/v3/internal/stack"
9+
"github.com/ydb-platform/ydb-go-sdk/v3/internal/tx"
910
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors"
1011
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xsql/badconn"
1112
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xsql/isolation"
1213
"github.com/ydb-platform/ydb-go-sdk/v3/table"
1314
"github.com/ydb-platform/ydb-go-sdk/v3/trace"
1415
)
1516

16-
type tx struct {
17+
type transaction struct {
18+
tx.Identifier
19+
1720
conn *conn
1821
ctx context.Context //nolint:containedctx
1922
tx table.Transaction
2023
}
2124

2225
var (
23-
_ driver.Tx = &tx{}
24-
_ driver.ExecerContext = &tx{}
25-
_ driver.QueryerContext = &tx{}
26-
_ table.TransactionIdentifier = &tx{}
26+
_ driver.Tx = &transaction{}
27+
_ driver.ExecerContext = &transaction{}
28+
_ driver.QueryerContext = &transaction{}
29+
_ tx.Identifier = &transaction{}
2730
)
2831

2932
func (c *conn) beginTx(ctx context.Context, txOptions driver.TxOptions) (currentTx, error) {
@@ -40,24 +43,21 @@ func (c *conn) beginTx(ctx context.Context, txOptions driver.TxOptions) (current
4043
if err != nil {
4144
return nil, xerrors.WithStackTrace(err)
4245
}
43-
transaction, err := c.session.BeginTransaction(ctx, table.TxSettings(txc))
46+
nativeTx, err := c.session.BeginTransaction(ctx, table.TxSettings(txc))
4447
if err != nil {
4548
return nil, badconn.Map(xerrors.WithStackTrace(err))
4649
}
47-
c.currentTx = &tx{
48-
conn: c,
49-
ctx: ctx,
50-
tx: transaction,
50+
c.currentTx = &transaction{
51+
Identifier: tx.ID(nativeTx.ID()),
52+
conn: c,
53+
ctx: ctx,
54+
tx: nativeTx,
5155
}
5256

5357
return c.currentTx, nil
5458
}
5559

56-
func (tx *tx) ID() string {
57-
return tx.tx.ID()
58-
}
59-
60-
func (tx *tx) checkTxState() error {
60+
func (tx *transaction) checkTxState() error {
6161
if tx.conn.currentTx == tx {
6262
return nil
6363
}
@@ -72,11 +72,11 @@ func (tx *tx) checkTxState() error {
7272
)
7373
}
7474

75-
func (tx *tx) Commit() (finalErr error) {
75+
func (tx *transaction) Commit() (finalErr error) {
7676
var (
7777
ctx = tx.ctx
7878
onDone = trace.DatabaseSQLOnTxCommit(tx.conn.trace, &ctx,
79-
stack.FunctionID("github.com/ydb-platform/ydb-go-sdk/3/internal/xsql.(*tx).Commit"),
79+
stack.FunctionID("github.com/ydb-platform/ydb-go-sdk/3/internal/xsql.(*transaction).Commit"),
8080
tx,
8181
)
8282
)
@@ -96,11 +96,11 @@ func (tx *tx) Commit() (finalErr error) {
9696
return nil
9797
}
9898

99-
func (tx *tx) Rollback() (finalErr error) {
99+
func (tx *transaction) Rollback() (finalErr error) {
100100
var (
101101
ctx = tx.ctx
102102
onDone = trace.DatabaseSQLOnTxRollback(tx.conn.trace, &ctx,
103-
stack.FunctionID("github.com/ydb-platform/ydb-go-sdk/3/internal/xsql.(*tx).Rollback"),
103+
stack.FunctionID("github.com/ydb-platform/ydb-go-sdk/3/internal/xsql.(*transaction).Rollback"),
104104
tx,
105105
)
106106
)
@@ -121,11 +121,11 @@ func (tx *tx) Rollback() (finalErr error) {
121121
return err
122122
}
123123

124-
func (tx *tx) QueryContext(ctx context.Context, query string, args []driver.NamedValue) (
124+
func (tx *transaction) QueryContext(ctx context.Context, query string, args []driver.NamedValue) (
125125
_ driver.Rows, finalErr error,
126126
) {
127127
onDone := trace.DatabaseSQLOnTxQuery(tx.conn.trace, &ctx,
128-
stack.FunctionID("github.com/ydb-platform/ydb-go-sdk/3/internal/xsql.(*tx).QueryContext"),
128+
stack.FunctionID("github.com/ydb-platform/ydb-go-sdk/3/internal/xsql.(*transaction).QueryContext"),
129129
tx.ctx, tx, query,
130130
)
131131
defer func() {
@@ -163,11 +163,11 @@ func (tx *tx) QueryContext(ctx context.Context, query string, args []driver.Name
163163
}, nil
164164
}
165165

166-
func (tx *tx) ExecContext(ctx context.Context, query string, args []driver.NamedValue) (
166+
func (tx *transaction) ExecContext(ctx context.Context, query string, args []driver.NamedValue) (
167167
_ driver.Result, finalErr error,
168168
) {
169169
onDone := trace.DatabaseSQLOnTxExec(tx.conn.trace, &ctx,
170-
stack.FunctionID("github.com/ydb-platform/ydb-go-sdk/3/internal/xsql.(*tx).ExecContext"),
170+
stack.FunctionID("github.com/ydb-platform/ydb-go-sdk/3/internal/xsql.(*transaction).ExecContext"),
171171
tx.ctx, tx, query,
172172
)
173173
defer func() {
@@ -199,9 +199,9 @@ func (tx *tx) ExecContext(ctx context.Context, query string, args []driver.Named
199199
return resultNoRows{}, nil
200200
}
201201

202-
func (tx *tx) PrepareContext(ctx context.Context, query string) (_ driver.Stmt, finalErr error) {
202+
func (tx *transaction) PrepareContext(ctx context.Context, query string) (_ driver.Stmt, finalErr error) {
203203
onDone := trace.DatabaseSQLOnTxPrepare(tx.conn.trace, &ctx,
204-
stack.FunctionID("github.com/ydb-platform/ydb-go-sdk/3/internal/xsql.(*tx).PrepareContext"),
204+
stack.FunctionID("github.com/ydb-platform/ydb-go-sdk/3/internal/xsql.(*transaction).PrepareContext"),
205205
tx.ctx, tx, query,
206206
)
207207
defer func() {

Diff for: internal/xsql/tx_fake.go

+10-11
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@ import (
55
"database/sql/driver"
66

77
"github.com/ydb-platform/ydb-go-sdk/v3/internal/stack"
8+
"github.com/ydb-platform/ydb-go-sdk/v3/internal/tx"
89
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors"
910
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xsql/badconn"
10-
"github.com/ydb-platform/ydb-go-sdk/v3/table"
1111
"github.com/ydb-platform/ydb-go-sdk/v3/trace"
1212
)
1313

1414
type txFake struct {
15+
tx.Identifier
16+
1517
beginCtx context.Context //nolint:containedctx
1618
conn *conn
1719
ctx context.Context //nolint:containedctx
@@ -39,23 +41,20 @@ func (tx *txFake) PrepareContext(ctx context.Context, query string) (_ driver.St
3941
}
4042

4143
var (
42-
_ driver.Tx = &txFake{}
43-
_ driver.ExecerContext = &txFake{}
44-
_ driver.QueryerContext = &txFake{}
45-
_ table.TransactionIdentifier = &txFake{}
44+
_ driver.Tx = &txFake{}
45+
_ driver.ExecerContext = &txFake{}
46+
_ driver.QueryerContext = &txFake{}
47+
_ tx.Identifier = &txFake{}
4648
)
4749

4850
func (c *conn) beginTxFake(ctx context.Context, txOptions driver.TxOptions) (currentTx, error) {
4951
return &txFake{
50-
conn: c,
51-
ctx: ctx,
52+
Identifier: tx.ID("FAKE"),
53+
conn: c,
54+
ctx: ctx,
5255
}, nil
5356
}
5457

55-
func (tx *txFake) ID() string {
56-
return "FAKE"
57-
}
58-
5958
func (tx *txFake) Commit() (err error) {
6059
var (
6160
ctx = tx.ctx

0 commit comments

Comments
 (0)