forked from mirror/go-sqlite3
return non-nil result when calling exec with empty query (#973)
fixes #963
This commit is contained in:
parent
3392062c72
commit
3900dc3187
|
@ -828,6 +828,10 @@ func (c *SQLiteConn) exec(ctx context.Context, query string, args []namedValue)
|
||||||
tail := s.(*SQLiteStmt).t
|
tail := s.(*SQLiteStmt).t
|
||||||
s.Close()
|
s.Close()
|
||||||
if tail == "" {
|
if tail == "" {
|
||||||
|
if res == nil {
|
||||||
|
// https://github.com/mattn/go-sqlite3/issues/963
|
||||||
|
res = &SQLiteResult{0, 0}
|
||||||
|
}
|
||||||
return res, nil
|
return res, nil
|
||||||
}
|
}
|
||||||
query = tail
|
query = tail
|
||||||
|
|
|
@ -1943,6 +1943,7 @@ var tests = []testing.InternalTest{
|
||||||
{Name: "TestManyQueryRow", F: testManyQueryRow},
|
{Name: "TestManyQueryRow", F: testManyQueryRow},
|
||||||
{Name: "TestTxQuery", F: testTxQuery},
|
{Name: "TestTxQuery", F: testTxQuery},
|
||||||
{Name: "TestPreparedStmt", F: testPreparedStmt},
|
{Name: "TestPreparedStmt", F: testPreparedStmt},
|
||||||
|
{Name: "TestExecEmptyQuery", F: testExecEmptyQuery},
|
||||||
}
|
}
|
||||||
|
|
||||||
var benchmarks = []testing.InternalBenchmark{
|
var benchmarks = []testing.InternalBenchmark{
|
||||||
|
@ -2273,6 +2274,25 @@ func testPreparedStmt(t *testing.T) {
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// testEmptyQuery is test for validating the API in case of empty query
|
||||||
|
func testExecEmptyQuery(t *testing.T) {
|
||||||
|
db.tearDown()
|
||||||
|
res, err := db.Exec(" -- this is just a comment ")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("empty query err: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = res.LastInsertId()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("LastInsertId returned an error: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = res.RowsAffected()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("RowsAffected returned an error: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Benchmarks need to use panic() since b.Error errors are lost when
|
// Benchmarks need to use panic() since b.Error errors are lost when
|
||||||
// running via testing.Benchmark() I would like to run these via go
|
// running via testing.Benchmark() I would like to run these via go
|
||||||
// test -bench but calling Benchmark() from a benchmark test
|
// test -bench but calling Benchmark() from a benchmark test
|
||||||
|
|
Loading…
Reference in New Issue