aboutsummaryrefslogtreecommitdiff
path: root/example/extension/extension.go
diff options
context:
space:
mode:
Diffstat (limited to 'example/extension/extension.go')
-rw-r--r--example/extension/extension.go34
1 files changed, 32 insertions, 2 deletions
diff --git a/example/extension/extension.go b/example/extension/extension.go
index d4b8fdb..49eacf1 100644
--- a/example/extension/extension.go
+++ b/example/extension/extension.go
@@ -8,10 +8,30 @@ import (
)
func main() {
+ const (
+ use_hook = true
+ load_query = "SELECT load_extension('sqlite3_mod_regexp.dll')"
+ )
+
sql.Register("sqlite3_with_extensions",
&sqlite3.SQLiteDriver{
EnableLoadExtension: true,
- ConnectHook: nil,
+ ConnectHook: func(c *sqlite3.SQLiteConn) error {
+ if use_hook {
+ stmt, err := c.Prepare(load_query)
+ if err != nil {
+ return err
+ }
+
+ _, err = stmt.Exec(nil)
+ if err != nil {
+ return err
+ }
+
+ return stmt.Close()
+ }
+ return nil
+ },
})
db, err := sql.Open("sqlite3_with_extensions", ":memory:")
@@ -20,11 +40,21 @@ func main() {
}
defer db.Close()
- _, err = db.Exec("select load_extension('sqlite3_mod_regexp.dll')")
+ if !use_hook {
+ if _, err = db.Exec(load_query); err != nil {
+ log.Fatal(err)
+ }
+ }
+
+ // Force db to make a new connection in pool
+ // by putting the original in a transaction
+ tx, err := db.Begin()
if err != nil {
log.Fatal(err)
}
+ defer tx.Commit()
+ // New connection works (hopefully!)
rows, err := db.Query("select 'hello world' where 'hello world' regexp '^hello.*d$'")
if err != nil {
log.Fatal(err)