diff options
author | mattn <mattn.jp@gmail.com> | 2020-11-17 01:54:21 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-17 01:54:21 +0900 |
commit | 1fbedab173ca3c57bbc0ed68193be8a7f44e566d (patch) | |
tree | a0f9ecb28f25f866a5a3bba38be3d40e2b1da18c /sqlite3.go | |
parent | TestExecContextCancel: Reduce timeout to make less flaky (#879) (diff) | |
download | golite-1fbedab173ca3c57bbc0ed68193be8a7f44e566d.tar.gz golite-1fbedab173ca3c57bbc0ed68193be8a7f44e566d.tar.xz |
Support vfs for Open (#877)
Closes #876
Diffstat (limited to 'sqlite3.go')
-rw-r--r-- | sqlite3.go | 12 |
1 files changed, 11 insertions, 1 deletions
@@ -1041,6 +1041,7 @@ func (d *SQLiteDriver) Open(dsn string) (driver.Conn, error) { secureDelete := "DEFAULT" synchronousMode := "NORMAL" writableSchema := -1 + vfsName := "" pos := strings.IndexRune(dsn, '?') if pos >= 1 { @@ -1364,6 +1365,10 @@ func (d *SQLiteDriver) Open(dsn string) (driver.Conn, error) { } } + if val := params.Get("vfs"); val != "" { + vfsName = val + } + if !strings.HasPrefix(dsn, "file:") { dsn = dsn[:pos] } @@ -1372,9 +1377,14 @@ func (d *SQLiteDriver) Open(dsn string) (driver.Conn, error) { var db *C.sqlite3 name := C.CString(dsn) defer C.free(unsafe.Pointer(name)) + var vfs *C.char + if vfsName != "" { + vfs = C.CString(vfsName) + defer C.free(unsafe.Pointer(vfs)) + } rv := C._sqlite3_open_v2(name, &db, mutex|C.SQLITE_OPEN_READWRITE|C.SQLITE_OPEN_CREATE, - nil) + vfs) if rv != 0 { // Save off the error _before_ closing the database. // This is safe even if db is nil. |