Skip to content

Commit

Permalink
Expand documentation for extension functions (#880)
Browse files Browse the repository at this point in the history
This relates to #870; it's not immediately clear that you need to pass a
different driver name to sql.Open from the documentation.
  • Loading branch information
macaullyjames committed Nov 16, 2020
1 parent 92f580b commit 784c625
Showing 1 changed file with 16 additions and 3 deletions.
19 changes: 16 additions & 3 deletions doc.go
Expand Up @@ -93,19 +93,32 @@ you need to set ConnectHook and get the SQLiteConn.
Go SQlite3 Extensions
If you want to register Go functions as SQLite extension functions,
call RegisterFunction from ConnectHook.
If you want to register Go functions as SQLite extension functions
you can make a custom driver by calling RegisterFunction from
ConnectHook.
regex = func(re, s string) (bool, error) {
return regexp.MatchString(re, s)
}
sql.Register("sqlite3_with_go_func",
sql.Register("sqlite3_extended",
&sqlite3.SQLiteDriver{
ConnectHook: func(conn *sqlite3.SQLiteConn) error {
return conn.RegisterFunc("regexp", regex, true)
},
})
You can then use the custom driver by passing its name to sql.Open.
var i int
conn, err := sql.Open("sqlite3_extended", "./foo.db")
if err != nil {
panic(err)
}
err = db.QueryRow(`SELECT regexp("foo.*", "seafood")`).Scan(&i)
if err != nil {
panic(err)
}
See the documentation of RegisterFunc for more details.
*/
Expand Down

0 comments on commit 784c625

Please sign in to comment.