@@ -16,7 +16,6 @@ import (
1616 "google.golang.org/grpc/codes"
1717 "google.golang.org/grpc/status"
1818 "google.golang.org/protobuf/types/known/timestamppb"
19- "spannerlib/backend"
2019)
2120
2221func CloseConnection (poolId , connId int64 ) error {
@@ -66,7 +65,7 @@ type Connection struct {
6665 transactions * sync.Map
6766 transactionsIdx atomic.Int64
6867
69- backend * backend. SpannerConnection
68+ backend * sql. Conn
7069}
7170
7271type queryExecutor interface {
@@ -77,12 +76,12 @@ type queryExecutor interface {
7776func (conn * Connection ) close () error {
7877 conn .results .Range (func (key , value interface {}) bool {
7978 res := value .(* rows )
80- res .Close ()
79+ _ = res .Close ()
8180 return true
8281 })
8382 conn .transactions .Range (func (key , value interface {}) bool {
8483 res := value .(* transaction )
85- res .Close ()
84+ _ = res .Close ()
8685 return true
8786 })
8887 err := conn .backend .Close ()
@@ -103,7 +102,7 @@ func (conn *Connection) apply(mutation *spannerpb.BatchWriteRequest_MutationGrou
103102 mutations = append (mutations , spannerMutation )
104103 }
105104 var commitTimestamp time.Time
106- if err := conn .backend .Conn . Raw (func (driverConn any ) (err error ) {
105+ if err := conn .backend .Raw (func (driverConn any ) (err error ) {
107106 spannerConn , _ := driverConn .(spannerdriver.SpannerConn )
108107 commitTimestamp , err = spannerConn .Apply (ctx , mutations )
109108 return err
@@ -121,12 +120,12 @@ func (conn *Connection) BeginTransaction(txOpts *spannerpb.TransactionOptions) (
121120 var err error
122121 if txOpts .GetReadOnly () != nil {
123122 tx , err = spannerdriver .BeginReadOnlyTransactionOnConn (
124- context .Background (), conn .backend . Conn , convertToReadOnlyOpts (txOpts ))
123+ context .Background (), conn .backend , convertToReadOnlyOpts (txOpts ))
125124 } else if txOpts .GetPartitionedDml () != nil {
126125 err = spanner .ToSpannerError (status .Error (codes .InvalidArgument , "transaction type not supported" ))
127126 } else {
128127 tx , err = spannerdriver .BeginReadWriteTransactionOnConn (
129- context .Background (), conn .backend . Conn , convertToReadWriteTransactionOptions (txOpts ))
128+ context .Background (), conn .backend , convertToReadWriteTransactionOptions (txOpts ))
130129 }
131130 if err != nil {
132131 return 0 , err
@@ -187,11 +186,11 @@ func convertIsolationLevel(level spannerpb.TransactionOptions_IsolationLevel) sq
187186}
188187
189188func (conn * Connection ) Execute (statement * spannerpb.ExecuteSqlRequest ) (int64 , error ) {
190- return execute (conn , conn .backend . Conn , statement )
189+ return execute (conn , conn .backend , statement )
191190}
192191
193192func (conn * Connection ) ExecuteBatch (statements []* spannerpb.ExecuteBatchDmlRequest_Statement ) (* spannerpb.ExecuteBatchDmlResponse , error ) {
194- return executeBatch (conn , conn .backend . Conn , statements )
193+ return executeBatch (conn , conn .backend , statements )
195194}
196195
197196func execute (conn * Connection , executor queryExecutor , statement * spannerpb.ExecuteSqlRequest ) (int64 , error ) {
@@ -242,7 +241,7 @@ func executeBatch(conn *Connection, executor queryExecutor, statements []*spanne
242241}
243242
244243func executeBatchDdl (conn * Connection , executor queryExecutor , statements []* spannerpb.ExecuteBatchDmlRequest_Statement ) (* spannerpb.ExecuteBatchDmlResponse , error ) {
245- if err := conn .backend .Conn . Raw (func (driverConn any ) error {
244+ if err := conn .backend .Raw (func (driverConn any ) error {
246245 spannerConn , _ := driverConn .(spannerdriver.SpannerConn )
247246 return spannerConn .StartBatchDDL ()
248247 }); err != nil {
@@ -255,7 +254,7 @@ func executeBatchDdl(conn *Connection, executor queryExecutor, statements []*spa
255254 }
256255 }
257256 // TODO: Add support for getting the actual Batch DDL response.
258- if err := conn .backend .Conn . Raw (func (driverConn any ) (err error ) {
257+ if err := conn .backend .Raw (func (driverConn any ) (err error ) {
259258 spannerConn , _ := driverConn .(spannerdriver.SpannerConn )
260259 return spannerConn .RunBatch (context .Background ())
261260 }); err != nil {
@@ -271,7 +270,7 @@ func executeBatchDdl(conn *Connection, executor queryExecutor, statements []*spa
271270}
272271
273272func executeBatchDml (conn * Connection , executor queryExecutor , statements []* spannerpb.ExecuteBatchDmlRequest_Statement ) (* spannerpb.ExecuteBatchDmlResponse , error ) {
274- if err := conn .backend .Conn . Raw (func (driverConn any ) error {
273+ if err := conn .backend .Raw (func (driverConn any ) error {
275274 spannerConn , _ := driverConn .(spannerdriver.SpannerConn )
276275 return spannerConn .StartBatchDML ()
277276 }); err != nil {
@@ -290,7 +289,7 @@ func executeBatchDml(conn *Connection, executor queryExecutor, statements []*spa
290289 }
291290 }
292291 var spannerResult spannerdriver.SpannerResult
293- if err := conn .backend .Conn . Raw (func (driverConn any ) (err error ) {
292+ if err := conn .backend .Raw (func (driverConn any ) (err error ) {
294293 spannerConn , _ := driverConn .(spannerdriver.SpannerConn )
295294 spannerResult , err = spannerConn .RunDmlBatch (context .Background ())
296295 return err
@@ -348,21 +347,21 @@ func determineBatchType(conn *Connection, statements []*spannerpb.ExecuteBatchDm
348347 return spannerdriver .BatchTypeUnknown , status .Errorf (codes .InvalidArgument , "cannot determine type of an empty batch" )
349348 }
350349 batchType := spannerdriver .BatchTypeUnknown
351- if err := conn .backend .Conn . Raw (func (driverConn any ) error {
350+ if err := conn .backend .Raw (func (driverConn any ) error {
352351 spannerConn , _ := driverConn .(spannerdriver.SpannerConn )
353352 firstStatementType := spannerConn .DetectStatementType (statements [0 ].Sql )
354353 if firstStatementType == parser .StatementTypeDml {
355354 batchType = spannerdriver .BatchTypeDml
356355 } else if firstStatementType == parser .StatementTypeDdl {
357356 batchType = spannerdriver .BatchTypeDdl
358357 } else {
359- return status .Errorf (codes .InvalidArgument , "unsupported statement type for batching: %s " , firstStatementType )
358+ return status .Errorf (codes .InvalidArgument , "unsupported statement type for batching: %v " , firstStatementType )
360359 }
361360 for i , statement := range statements {
362361 if i > 0 {
363362 tp := spannerConn .DetectStatementType (statement .Sql )
364363 if tp != firstStatementType {
365- return status .Errorf (codes .InvalidArgument , "Batches may not contain different types of statements. The first statement is of type %s . The statement on position %d is of type %s ." , firstStatementType , i , tp )
364+ return status .Errorf (codes .InvalidArgument , "Batches may not contain different types of statements. The first statement is of type %v . The statement on position %d is of type %v ." , firstStatementType , i , tp )
366365 }
367366 }
368367 }
0 commit comments