diff options
author | EuAndreh <eu@euandre.org> | 2024-09-12 19:36:38 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2024-09-12 19:36:38 -0300 |
commit | 6ec63b8727eb1956b6353ba8ffc205ae7181cd57 (patch) | |
tree | 2bc5968155ecd7579bcc7a69b884d3789b1ec259 /src/golite.go | |
parent | tests/golite.go: Remove auth-related code and tests (diff) | |
download | golite-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.go | 37 |
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 { |