From 1828334c4a7937cf4d957e36e995b9d6ba4fc535 Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Wed, 2 Aug 2017 01:43:14 +0900 Subject: [PATCH] remove mutex --- sqlite3.go | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/sqlite3.go b/sqlite3.go index 3fc7354..d0327b8 100644 --- a/sqlite3.go +++ b/sqlite3.go @@ -197,12 +197,12 @@ type SQLiteResult struct { // SQLiteRows implement sql.Rows. type SQLiteRows struct { - mu sync.Mutex s *SQLiteStmt nc int cols []string decltype []string cls bool + closed bool done chan struct{} } @@ -905,6 +905,7 @@ func (s *SQLiteStmt) query(ctx context.Context, args []namedValue) (driver.Rows, cols: nil, decltype: nil, cls: s.cls, + closed: false, done: make(chan struct{}), } @@ -977,14 +978,12 @@ func (s *SQLiteStmt) exec(ctx context.Context, args []namedValue) (driver.Result // Close the rows. func (rc *SQLiteRows) Close() error { - if rc.s.closed { + if rc.s.closed || rc.closed { return nil } + rc.closed = true if rc.done != nil { - rc.mu.Lock() close(rc.done) - rc.done = nil - rc.mu.Unlock() } if rc.cls { return rc.s.Close()