diff options
author | Than McIntosh <thanm@google.com> | 2023-07-07 16:49:15 -0400 |
---|---|---|
committer | Than McIntosh <thanm@google.com> | 2023-07-07 16:49:15 -0400 |
commit | 71aaa8bde1ba983894121987aaf09cb2012ab622 (patch) | |
tree | 12c26e401a50654e0d557b98b2136b18b5ee9d97 /src/database/sql/sql_test.go | |
parent | 3aba453b66371647dfad4e901fca578d2b564e09 (diff) | |
parent | 894d24d617bb72d6e1bed7b143f9f7a0ac16b844 (diff) | |
download | go-71aaa8bde1ba983894121987aaf09cb2012ab622.tar.gz go-71aaa8bde1ba983894121987aaf09cb2012ab622.zip |
[dev.inline] merge with master at 894d24d617dev.inline
Change-Id: I845eec08108c69228ebcba921f8a807a376d3fae
Diffstat (limited to 'src/database/sql/sql_test.go')
-rw-r--r-- | src/database/sql/sql_test.go | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/database/sql/sql_test.go b/src/database/sql/sql_test.go index 718056c351..e6a5cd912a 100644 --- a/src/database/sql/sql_test.go +++ b/src/database/sql/sql_test.go @@ -4493,6 +4493,31 @@ func TestContextCancelBetweenNextAndErr(t *testing.T) { } } +func TestNilErrorAfterClose(t *testing.T) { + db := newTestDB(t, "people") + defer closeDB(t, db) + + // This WithCancel is important; Rows contains an optimization to avoid + // spawning a goroutine when the query/transaction context cannot be + // canceled, but this test tests a bug which is caused by said goroutine. + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + r, err := db.QueryContext(ctx, "SELECT|people|name|") + if err != nil { + t.Fatal(err) + } + + if err := r.Close(); err != nil { + t.Fatal(err) + } + + time.Sleep(10 * time.Millisecond) // increase odds of seeing failure + if err := r.Err(); err != nil { + t.Fatal(err) + } +} + // badConn implements a bad driver.Conn, for TestBadDriver. // The Exec method panics. type badConn struct{} |