aboutsummaryrefslogtreecommitdiff
path: root/src/golite.go
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2024-09-12 19:36:38 -0300
committerEuAndreh <eu@euandre.org>2024-09-12 19:36:38 -0300
commit6ec63b8727eb1956b6353ba8ffc205ae7181cd57 (patch)
tree2bc5968155ecd7579bcc7a69b884d3789b1ec259 /src/golite.go
parenttests/golite.go: Remove auth-related code and tests (diff)
downloadgolite-6ec63b8727eb1956b6353ba8ffc205ae7181cd57.tar.gz
golite-6ec63b8727eb1956b6353ba8ffc205ae7181cd57.tar.xz
src/golite.go: Enforce foreign_keys=ON
Diffstat (limited to 'src/golite.go')
-rw-r--r--src/golite.go37
1 files changed, 6 insertions, 31 deletions
diff --git a/src/golite.go b/src/golite.go
index 00cbbc7..7c142df 100644
--- a/src/golite.go
+++ b/src/golite.go
@@ -2208,7 +2208,6 @@ func (d *SQLiteDriver) Open(dsn string) (driver.Conn, error) {
busyTimeout := 5000
caseSensitiveLike := -1
deferForeignKeys := -1
- foreignKeys := -1
ignoreCheckConstraints := -1
var journalMode string
lockingMode := "NORMAL"
@@ -2353,28 +2352,6 @@ func (d *SQLiteDriver) Open(dsn string) (driver.Conn, error) {
}
}
- // Foreign Keys (_foreign_keys | _fk)
- //
- // https://www.sqlite.org/pragma.html#pragma_foreign_keys
- //
- pkey = "" // Reset pkey
- if _, ok := params["_foreign_keys"]; ok {
- pkey = "_foreign_keys"
- }
- if _, ok := params["_fk"]; ok {
- pkey = "_fk"
- }
- if val := params.Get(pkey); val != "" {
- switch strings.ToLower(val) {
- case "0", "no", "false", "off":
- foreignKeys = 0
- case "1", "yes", "true", "on":
- foreignKeys = 1
- default:
- return nil, fmt.Errorf("Invalid _foreign_keys: %v, expecting boolean value of '0 1 false true no yes off on'", val)
- }
- }
-
// Ignore CHECK Constrains (_ignore_check_constraints)
//
// https://www.sqlite.org/pragma.html#pragma_ignore_check_constraints
@@ -2580,11 +2557,17 @@ func (d *SQLiteDriver) Open(dsn string) (driver.Conn, error) {
return nil
}
+ // FIXME: these should be compiled into SQLite
// Busy timeout
if err := exec(fmt.Sprintf("PRAGMA busy_timeout = %d;", busyTimeout)); err != nil {
C.sqlite3_close_v2(db)
return nil, err
}
+ // Foreign Keys
+ if err := exec("PRAGMA foreign_keys = ON;"); err != nil {
+ C.sqlite3_close_v2(db)
+ return nil, err
+ }
// Create connection to SQLite
conn := &SQLiteConn{db: db, loc: loc, txlock: txlock}
@@ -2618,14 +2601,6 @@ func (d *SQLiteDriver) Open(dsn string) (driver.Conn, error) {
}
}
- // Foreign Keys
- if foreignKeys > -1 {
- if err := exec(fmt.Sprintf("PRAGMA foreign_keys = %d;", foreignKeys)); err != nil {
- C.sqlite3_close_v2(db)
- return nil, err
- }
- }
-
// Ignore CHECK Constraints
if ignoreCheckConstraints > -1 {
if err := exec(fmt.Sprintf("PRAGMA ignore_check_constraints = %d;", ignoreCheckConstraints)); err != nil {