nandi/gleanpublic⑂ Fork 0
⑂ 8f8e2e1
Commits
⬇ Clone ▾
git clone https://git.rickub.com/nandi/glean.git
git clone ssh://git@rickub.com/nandi/glean.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

Increase SQL connection pool sizeUnverified

Julien Robert committed 2026-04-22T02:31:49+02:00 Browse files
8f8e2e1 parent: a19fa48
modified internal/db/db.go +17 -29
@@ -1,7 +1,6 @@
11 package db
22
33 import (
4- "context"
54 "database/sql"
65 "math"
76 "strings"
@@ -10,6 +9,20 @@ import (
109 "github.com/mattn/go-sqlite3"
1110 )
1211
12+func init() {
13+ sql.Register("sqlite3_glean", &sqlite3.SQLiteDriver{
14+ ConnectHook: func(conn *sqlite3.SQLiteConn) error {
15+ if err := conn.RegisterFunc("exp", func(x float64) float64 { return math.Exp(x) }, true); err != nil {
16+ return err
17+ }
18+ if err := conn.RegisterFunc("log", func(x float64) float64 { return math.Log(x) }, true); err != nil {
19+ return err
20+ }
21+ return nil
22+ },
23+ })
24+}
25+
1326 func NullStr(s string) sql.NullString {
1427 return sql.NullString{String: s, Valid: s != ""}
1528 }
@@ -34,40 +47,15 @@ type DB struct {
3447 }
3548
3649 func Open(path string) (*DB, error) {
37- db, err := sql.Open("sqlite3", path+"?_journal_mode=WAL&_busy_timeout=5000")
50+ db, err := sql.Open("sqlite3_glean", path+"?_journal_mode=WAL&_busy_timeout=5000")
3851 if err != nil {
3952 return nil, err
4053 }
4154
42- db.SetMaxOpenConns(1)
43- db.SetMaxIdleConns(2)
55+ db.SetMaxOpenConns(10)
56+ db.SetMaxIdleConns(5)
4457 db.SetConnMaxLifetime(30 * time.Minute)
4558
46- conn, err := db.Conn(context.Background())
47- if err != nil {
48- db.Close()
49- return nil, err
50- }
51-
52- err = conn.Raw(func(driverConn any) error {
53- sqliteConn, ok := driverConn.(*sqlite3.SQLiteConn)
54- if !ok {
55- return nil
56- }
57- if err := sqliteConn.RegisterFunc("exp", func(x float64) float64 { return math.Exp(x) }, true); err != nil {
58- return err
59- }
60- if err := sqliteConn.RegisterFunc("log", func(x float64) float64 { return math.Log(x) }, true); err != nil {
61- return err
62- }
63- return nil
64- })
65- _ = conn.Close()
66- if err != nil {
67- db.Close()
68- return nil, err
69- }
70-
7159 if err := initSchema(db); err != nil {
7260 db.Close()
7361 return nil, err
@@ -1,7 +1,6 @@
1 package db1 package db
2 2
3 import (3 import (
4- "context"
5 "database/sql"4 "database/sql"
6 "math"5 "math"
7 "strings"6 "strings"
@@ -10,6 +9,20 @@ import (
10 "github.com/mattn/go-sqlite3"9 "github.com/mattn/go-sqlite3"
11 )10 )
12 11
12+func init() {
13+ sql.Register("sqlite3_glean", &sqlite3.SQLiteDriver{
14+ ConnectHook: func(conn *sqlite3.SQLiteConn) error {
15+ if err := conn.RegisterFunc("exp", func(x float64) float64 { return math.Exp(x) }, true); err != nil {
16+ return err
17+ }
18+ if err := conn.RegisterFunc("log", func(x float64) float64 { return math.Log(x) }, true); err != nil {
19+ return err
20+ }
21+ return nil
22+ },
23+ })
24+}
25+
13 func NullStr(s string) sql.NullString {26 func NullStr(s string) sql.NullString {
14 return sql.NullString{String: s, Valid: s != ""}27 return sql.NullString{String: s, Valid: s != ""}
15 }28 }
@@ -34,40 +47,15 @@ type DB struct {
34 }47 }
35 48
36 func Open(path string) (*DB, error) {49 func Open(path string) (*DB, error) {
37- db, err := sql.Open("sqlite3", path+"?_journal_mode=WAL&_busy_timeout=5000")50+ db, err := sql.Open("sqlite3_glean", path+"?_journal_mode=WAL&_busy_timeout=5000")
38 if err != nil {51 if err != nil {
39 return nil, err52 return nil, err
40 }53 }
41 54
42- db.SetMaxOpenConns(1)55+ db.SetMaxOpenConns(10)
43- db.SetMaxIdleConns(2)56+ db.SetMaxIdleConns(5)
44 db.SetConnMaxLifetime(30 * time.Minute)57 db.SetConnMaxLifetime(30 * time.Minute)
45 58
46- conn, err := db.Conn(context.Background())
47- if err != nil {
48- db.Close()
49- return nil, err
50- }
51-
52- err = conn.Raw(func(driverConn any) error {
53- sqliteConn, ok := driverConn.(*sqlite3.SQLiteConn)
54- if !ok {
55- return nil
56- }
57- if err := sqliteConn.RegisterFunc("exp", func(x float64) float64 { return math.Exp(x) }, true); err != nil {
58- return err
59- }
60- if err := sqliteConn.RegisterFunc("log", func(x float64) float64 { return math.Log(x) }, true); err != nil {
61- return err
62- }
63- return nil
64- })
65- _ = conn.Close()
66- if err != nil {
67- db.Close()
68- return nil, err
69- }
70-
71 if err := initSchema(db); err != nil {59 if err := initSchema(db); err != nil {
72 db.Close()60 db.Close()
73 return nil, err61 return nil, err