Skip to content

Commit 5890049

Browse files
committed
Shim modernc.
1 parent 5e73c5d commit 5890049

File tree

4 files changed

+42
-1
lines changed

4 files changed

+42
-1
lines changed

driver/driver.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,22 @@ func (c *conn) CheckNamedValue(arg *driver.NamedValue) error {
442442
return nil
443443
}
444444

445+
// Deprecated: for Litestream use only; may be removed at any time.
446+
func (c *conn) FileControlPersistWAL(schema string, mode int) (int, error) {
447+
// notest
448+
arg := make([]any, 1)
449+
if mode >= 0 {
450+
arg[0] = mode > 0
451+
} else {
452+
arg = arg[:0]
453+
}
454+
res, err := c.Conn.FileControl(schema, sqlite3.FCNTL_PERSIST_WAL, arg...)
455+
if res == true {
456+
return 1, err
457+
}
458+
return 0, err
459+
}
460+
445461
type stmt struct {
446462
*sqlite3.Stmt
447463
tmWrite sqlite3.TimeFormat

embed/init.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,7 @@ import (
1717
var binary string
1818

1919
func init() {
20-
sqlite3.Binary = unsafe.Slice(unsafe.StringData(binary), len(binary))
20+
if sqlite3.Binary == nil {
21+
sqlite3.Binary = unsafe.Slice(unsafe.StringData(binary), len(binary))
22+
}
2123
}

litestream/modernc/go.mod

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module modernc.org/sqlite
2+
3+
go 1.24.0

litestream/modernc/sqlite.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// Package sqlite provides a shim that allows Litestream to work with the ncruces SQLite driver.
2+
package sqlite
3+
4+
import (
5+
"database/sql"
6+
"slices"
7+
8+
"github.com/ncruces/go-sqlite3/driver"
9+
_ "github.com/ncruces/go-sqlite3/embed"
10+
)
11+
12+
func init() {
13+
if !slices.Contains(sql.Drivers(), "sqlite") {
14+
sql.Register("sqlite", &driver.SQLite{})
15+
}
16+
}
17+
18+
type FileControl interface {
19+
FileControlPersistWAL(string, int) (int, error)
20+
}

0 commit comments

Comments
 (0)