This is an automated email from the ASF dual-hosted git repository.

luky116 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-seata-go.git


The following commit(s) were added to refs/heads/master by this push:
     new 9709b356 fix: AT mode queryContext error
9709b356 is described below

commit 9709b356da474cb4e043b75c294c7dd90ddca2ef
Author: 576470954 <[email protected]>
AuthorDate: Sat Feb 3 17:52:45 2024 +0800

    fix: AT mode queryContext error
---
 pkg/datasource/sql/conn_at.go                            |  1 +
 pkg/datasource/sql/datasource/base/meta_cache.go         |  2 ++
 pkg/datasource/sql/exec/at/select_for_update_executor.go | 12 ++++++------
 3 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/pkg/datasource/sql/conn_at.go b/pkg/datasource/sql/conn_at.go
index 1ddfba51..e640254a 100644
--- a/pkg/datasource/sql/conn_at.go
+++ b/pkg/datasource/sql/conn_at.go
@@ -62,6 +62,7 @@ func (c *ATConn) QueryContext(ctx context.Context, query 
string, args []driver.N
                        Query:                query,
                        NamedValues:          args,
                        Conn:                 c.targetConn,
+                       DBName:               c.dbName,
                        IsSupportsSavepoints: true,
                        IsAutoCommit:         c.GetAutoCommit(),
                }
diff --git a/pkg/datasource/sql/datasource/base/meta_cache.go 
b/pkg/datasource/sql/datasource/base/meta_cache.go
index 1edbf38e..b7e4e15e 100644
--- a/pkg/datasource/sql/datasource/base/meta_cache.go
+++ b/pkg/datasource/sql/datasource/base/meta_cache.go
@@ -138,6 +138,8 @@ func (c *BaseTableMetaCache) GetTableMeta(ctx 
context.Context, dbName, tableName
        c.lock.Lock()
        defer c.lock.Unlock()
 
+       defer conn.Close()
+
        v, ok := c.cache[tableName]
        if !ok {
                meta, err := c.trigger.LoadOne(ctx, dbName, tableName, conn)
diff --git a/pkg/datasource/sql/exec/at/select_for_update_executor.go 
b/pkg/datasource/sql/exec/at/select_for_update_executor.go
index 3e51a97b..289b666b 100644
--- a/pkg/datasource/sql/exec/at/select_for_update_executor.go
+++ b/pkg/datasource/sql/exec/at/select_for_update_executor.go
@@ -174,12 +174,6 @@ func (s *selectForUpdateExecutor) doExecContext(ctx 
context.Context, f exec.Call
                return nil, fmt.Errorf("not support savepoint. please check 
your db version")
        }
 
-       // execute business SQL, try to get local lock
-       result, err = f(ctx, s.execContext.Query, s.execContext.NamedValues)
-       if err != nil {
-               return nil, err
-       }
-
        // query primary key values
        var lockKey string
        _, err = s.exec(ctx, s.selectPKSQL, s.execContext.NamedValues, 
func(rows driver.Rows) {
@@ -194,6 +188,12 @@ func (s *selectForUpdateExecutor) doExecContext(ctx 
context.Context, f exec.Call
                return nil, nil
        }
 
+       // execute business SQL, try to get local lock
+       result, err = f(ctx, s.execContext.Query, s.execContext.NamedValues)
+       if err != nil {
+               return nil, err
+       }
+
        // check global lock
        lockable, err := 
datasource.GetDataSourceManager(branch.BranchTypeAT).LockQuery(ctx, 
rm.LockQueryParam{
                Xid:        s.execContext.TxCtx.XID,


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to