Expand documentation for extension functions (#880)
This relates to #870; it's not immediately clear that you need to pass a different driver name to sql.Open from the documentation.
This commit is contained in:
committed by
GitHub
parent
92f580b350
commit
784c625194
19
doc.go
19
doc.go
@@ -93,19 +93,32 @@ you need to set ConnectHook and get the SQLiteConn.
|
|||||||
|
|
||||||
Go SQlite3 Extensions
|
Go SQlite3 Extensions
|
||||||
|
|
||||||
If you want to register Go functions as SQLite extension functions,
|
If you want to register Go functions as SQLite extension functions
|
||||||
call RegisterFunction from ConnectHook.
|
you can make a custom driver by calling RegisterFunction from
|
||||||
|
ConnectHook.
|
||||||
|
|
||||||
regex = func(re, s string) (bool, error) {
|
regex = func(re, s string) (bool, error) {
|
||||||
return regexp.MatchString(re, s)
|
return regexp.MatchString(re, s)
|
||||||
}
|
}
|
||||||
sql.Register("sqlite3_with_go_func",
|
sql.Register("sqlite3_extended",
|
||||||
&sqlite3.SQLiteDriver{
|
&sqlite3.SQLiteDriver{
|
||||||
ConnectHook: func(conn *sqlite3.SQLiteConn) error {
|
ConnectHook: func(conn *sqlite3.SQLiteConn) error {
|
||||||
return conn.RegisterFunc("regexp", regex, true)
|
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.
|
See the documentation of RegisterFunc for more details.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user