From 9a8de3ad13137f35e8c918756e6fc5dde0a020bf Mon Sep 17 00:00:00 2001 From: Nuno Cruces Date: Thu, 1 Jun 2023 15:41:20 +0100 Subject: [PATCH] Enable memdb on speedtest1. --- sqlite3memdb/memdb.go | 10 +++++++++- sqlite3vfs/tests/speedtest1/speedtest1_test.go | 1 + sqlite3vfs/vfs.go | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/sqlite3memdb/memdb.go b/sqlite3memdb/memdb.go index 3af79bc..8829219 100644 --- a/sqlite3memdb/memdb.go +++ b/sqlite3memdb/memdb.go @@ -14,7 +14,14 @@ import ( type vfs struct{} func (vfs) Open(name string, flags sqlite3vfs.OpenFlag) (sqlite3vfs.File, sqlite3vfs.OpenFlag, error) { - if flags&sqlite3vfs.OPEN_MAIN_DB == 0 { + // Allowed file types: + // - databases, which only do page aligned reads/writes; + // - temp journals, used by the sorter, which does the same. + const types = sqlite3vfs.OPEN_MAIN_DB | + sqlite3vfs.OPEN_TRANSIENT_DB | + sqlite3vfs.OPEN_TEMP_DB | + sqlite3vfs.OPEN_TEMP_JOURNAL + if flags&types == 0 { return nil, flags, sqlite3.CANTOPEN } @@ -54,6 +61,7 @@ func (vfs) FullPathname(name string) (string, error) { return name, nil } +// Must be a multiple of 64K (the largest page size). const sectorSize = 65536 type dbase struct { diff --git a/sqlite3vfs/tests/speedtest1/speedtest1_test.go b/sqlite3vfs/tests/speedtest1/speedtest1_test.go index ea13fff..39e3e98 100644 --- a/sqlite3vfs/tests/speedtest1/speedtest1_test.go +++ b/sqlite3vfs/tests/speedtest1/speedtest1_test.go @@ -20,6 +20,7 @@ import ( "github.com/tetratelabs/wazero/experimental" "github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1" + _ "github.com/ncruces/go-sqlite3/sqlite3memdb" "github.com/ncruces/go-sqlite3/sqlite3vfs" ) diff --git a/sqlite3vfs/vfs.go b/sqlite3vfs/vfs.go index 79bc6a4..c17c95b 100644 --- a/sqlite3vfs/vfs.go +++ b/sqlite3vfs/vfs.go @@ -219,7 +219,7 @@ func vfsRead(ctx context.Context, mod api.Module, pFile, zBuf, iAmt uint32, iOfs if n == int(iAmt) { return _OK } - if n == 0 && err != io.EOF { + if err != io.EOF { return vfsErrorCode(err, _IOERR_READ) } clear(buf[n:])