@@ -5,14 +5,12 @@ import (
55 "database/sql"
66 "database/sql/driver"
77 "fmt"
8- "sync/atomic"
98
109 "github.com/ydb-platform/ydb-go-sdk/v3/internal/bind"
1110 "github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors"
1211 "github.com/ydb-platform/ydb-go-sdk/v3/internal/xsql"
1312 "github.com/ydb-platform/ydb-go-sdk/v3/internal/xsql/legacy"
1413 "github.com/ydb-platform/ydb-go-sdk/v3/internal/xsql/propose"
15- "github.com/ydb-platform/ydb-go-sdk/v3/internal/xsync"
1614 "github.com/ydb-platform/ydb-go-sdk/v3/table"
1715 "github.com/ydb-platform/ydb-go-sdk/v3/table/options"
1816 "github.com/ydb-platform/ydb-go-sdk/v3/trace"
@@ -33,9 +31,7 @@ func withConnectorOptions(opts ...ConnectorOption) Option {
3331 }
3432}
3533
36- type sqlDriver struct {
37- connectors xsync.Map [* xsql.Connector , * Driver ]
38- }
34+ type sqlDriver struct {}
3935
4036var (
4137 _ driver.Driver = & sqlDriver {}
@@ -53,45 +49,18 @@ func (d *sqlDriver) OpenConnector(dataSourceName string) (driver.Connector, erro
5349 return nil , xerrors .WithStackTrace (fmt .Errorf ("failed to connect by data source name '%s': %w" , dataSourceName , err ))
5450 }
5551
56- c , err := Connector (db , db .databaseSQLOptions ... )
52+ c , err := Connector (db , append (db .databaseSQLOptions ,
53+ xsql .WithOnClose (func (connector * xsql.Connector ) {
54+ _ = db .Close (context .Background ())
55+ }),
56+ )... )
5757 if err != nil {
5858 return nil , xerrors .WithStackTrace (fmt .Errorf ("failed to create connector: %w" , err ))
5959 }
6060
6161 return c , nil
6262}
6363
64- var globalConnectorCounter atomic.Uint64
65-
66- func (d * sqlDriver ) attach (c * xsql.Connector , parent * Driver ) {
67- c .ID = globalConnectorCounter .Add (1 )
68-
69- if parent != nil {
70- parent .onClose .Append (func (_ * Driver ) {
71- _ = c .Close ()
72- })
73- }
74-
75- d .connectors .Set (c , parent )
76- }
77-
78- func (d * sqlDriver ) detach (c * xsql.Connector ) {
79- var countConnectorsPerDriver int
80- parent , _ := d .connectors .Extract (c )
81- if parent != nil {
82- d .connectors .Range (func (key * xsql.Connector , value * Driver ) bool {
83- if value == parent {
84- countConnectorsPerDriver ++
85- }
86-
87- return true
88- })
89- if countConnectorsPerDriver == 0 {
90- _ = parent .Close (context .Background ())
91- }
92- }
93- }
94-
9564type QueryMode int
9665
9766const (
@@ -255,7 +224,6 @@ func Connector(parent *Driver, opts ...ConnectorOption) (SQLConnector, error) {
255224 parent .databaseSQLOptions ,
256225 opts ... ,
257226 ),
258- xsql .WithOnClose (d .detach ),
259227 xsql .WithTraceRetry (parent .config .TraceRetry ()),
260228 xsql .WithRetryBudget (parent .config .RetryBudget ()),
261229 )... ,
@@ -264,8 +232,6 @@ func Connector(parent *Driver, opts ...ConnectorOption) (SQLConnector, error) {
264232 return nil , xerrors .WithStackTrace (err )
265233 }
266234
267- d .attach (c , parent )
268-
269235 return c , nil
270236}
271237
0 commit comments