Skip to content

Commit

Permalink
Tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
ncruces committed Nov 8, 2023
1 parent c00927e commit 6f8645c
Show file tree
Hide file tree
Showing 2 changed files with 87 additions and 1 deletion.
2 changes: 1 addition & 1 deletion driver/driver.go
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,7 @@ func (c *conn) ExecContext(ctx context.Context, query string, args []driver.Name
if savept, ok := ctx.(*saveptCtx); ok {
// Called from driver.Savepoint.
savept.Savepoint = c.Savepoint()
return resultRowsAffected(-1), nil
return resultRowsAffected(0), nil
}

old := c.Conn.SetInterrupt(ctx)
Expand Down
86 changes: 86 additions & 0 deletions driver/savepoint_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
package driver_test

import (
"fmt"
"log"

"github.com/ncruces/go-sqlite3/driver"
)

func ExampleSavepoint() {
db, err := driver.Open(":memory:", nil)
if err != nil {
log.Fatal(err)
}
defer db.Close()

_, err = db.Exec(`CREATE TABLE IF NOT EXISTS users (id INT, name VARCHAR(10))`)
if err != nil {
log.Fatal(err)
}

err = func() error {
tx, err := db.Begin()
if err != nil {
return err
}
defer tx.Rollback()

stmt, err := tx.Prepare(`INSERT INTO users (id, name) VALUES (?, ?)`)
if err != nil {
return err
}
defer stmt.Close()

_, err = stmt.Exec(0, "go")
if err != nil {
return err
}

_, err = stmt.Exec(1, "zig")
if err != nil {
return err
}

savept := driver.Savepoint(tx)

_, err = stmt.Exec(2, "whatever")
if err != nil {
return err
}

err = savept.Rollback()
if err != nil {
return err
}

_, err = stmt.Exec(3, "rust")
if err != nil {
return err
}

return tx.Commit()
}()
if err != nil {
log.Fatal(err)
}

rows, err := db.Query(`SELECT id, name FROM users`)
if err != nil {
log.Fatal(err)
}
defer rows.Close()

for rows.Next() {
var id, name string
err = rows.Scan(&id, &name)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s %s\n", id, name)
}
// Output:
// 0 go
// 1 zig
// 3 rust
}

0 comments on commit 6f8645c

Please sign in to comment.