Refactor memdb API.

This commit is contained in:
Nuno Cruces
2023-05-31 15:47:28 +01:00
parent d0d4b0e1a2
commit ac2836bb82
13 changed files with 424 additions and 448 deletions

View File

@@ -6,7 +6,7 @@ import (
"github.com/ncruces/go-sqlite3"
_ "github.com/ncruces/go-sqlite3/embed"
"github.com/ncruces/go-sqlite3/sqlite3vfs"
_ "github.com/ncruces/go-sqlite3/sqlite3memdb"
)
func TestDB_memory(t *testing.T) {
@@ -19,12 +19,8 @@ func TestDB_file(t *testing.T) {
testDB(t, filepath.Join(t.TempDir(), "test.db"))
}
func TestDB_VFS(t *testing.T) {
sqlite3vfs.Register("memvfs", sqlite3vfs.MemoryVFS{
"test.db": &sqlite3vfs.MemoryDB{},
})
defer sqlite3vfs.Unregister("memvfs")
testDB(t, "file:test.db?vfs=memvfs")
func TestDB_vfs(t *testing.T) {
testDB(t, "file:test.db?vfs=memdb")
}
func testDB(t *testing.T, name string) {

View File

@@ -11,7 +11,7 @@ import (
"github.com/ncruces/go-sqlite3"
_ "github.com/ncruces/go-sqlite3/embed"
"github.com/ncruces/go-sqlite3/sqlite3vfs"
_ "github.com/ncruces/go-sqlite3/sqlite3memdb"
)
func TestParallel(t *testing.T) {
@@ -40,12 +40,7 @@ func TestMemory(t *testing.T) {
iter = 5000
}
sqlite3vfs.Register("memvfs", sqlite3vfs.MemoryVFS{
"test.db": &sqlite3vfs.MemoryDB{},
})
defer sqlite3vfs.Unregister("memvfs")
name := "file:test.db?vfs=memvfs" +
name := "file:/test.db?vfs=memdb" +
"&_pragma=busy_timeout(10000)" +
"&_pragma=locking_mode(normal)" +
"&_pragma=journal_mode(memory)" +

BIN
tests/testdata/test.db vendored

Binary file not shown.

View File

@@ -2,27 +2,19 @@ package tests
import (
"errors"
"strings"
"testing"
_ "embed"
"github.com/ncruces/go-sqlite3"
_ "github.com/ncruces/go-sqlite3/driver"
_ "github.com/ncruces/go-sqlite3/embed"
"github.com/ncruces/go-sqlite3/sqlite3memdb"
"github.com/ncruces/go-sqlite3/sqlite3vfs"
)
//go:embed testdata/test.db
var testdata string
func TestMemoryVFS_Open_notfound(t *testing.T) {
sqlite3vfs.Register("memory", sqlite3vfs.MemoryVFS{
"test.db": &sqlite3vfs.MemoryDB{},
})
defer sqlite3vfs.Unregister("memory")
sqlite3memdb.Delete("demo.db")
_, err := sqlite3.Open("file:demo.db?vfs=memory&mode=ro")
_, err := sqlite3.Open("file:/demo.db?vfs=memdb&mode=ro")
if err == nil {
t.Error("want error")
}
@@ -31,36 +23,8 @@ func TestMemoryVFS_Open_notfound(t *testing.T) {
}
}
func TestMemoryVFS_Open_errors(t *testing.T) {
sqlite3vfs.Register("memory", sqlite3vfs.MemoryVFS{
"test.db": &sqlite3vfs.MemoryDB{MaxSize: 65536},
})
defer sqlite3vfs.Unregister("memory")
db, err := sqlite3.Open("file:test.db?vfs=memory")
if err != nil {
t.Fatal(err)
}
defer db.Close()
err = db.Exec(`CREATE TABLE IF NOT EXISTS test (col)`)
if err != nil {
t.Fatal(err)
}
err = db.Exec(`INSERT INTO test VALUES (zeroblob(65536))`)
if err == nil {
t.Error("want error")
}
if !errors.Is(err, sqlite3.FULL) {
t.Errorf("got %v, want sqlite3.FULL", err)
}
}
func TestReaderVFS_Open_notfound(t *testing.T) {
sqlite3vfs.Register("reader", sqlite3vfs.ReaderVFS{
"test.db": sqlite3vfs.NewSizeReaderAt(strings.NewReader(testdata)),
})
sqlite3vfs.Register("reader", sqlite3vfs.ReaderVFS{})
defer sqlite3vfs.Unregister("reader")
_, err := sqlite3.Open("file:demo.db?vfs=reader&mode=ro")