ADD: PRAGMA cipher_compatibility

This commit is contained in:
safiir 2023-03-26 18:10:51 +08:00
parent d681773ef0
commit abf681aaa9
1 changed files with 19 additions and 0 deletions

View File

@ -1016,6 +1016,7 @@ func (d *SQLiteDriver) Open(dsn string) (driver.Conn, error) {
// PRAGMA's // PRAGMA's
encryptKey := "" encryptKey := ""
cipher_compatibility := -1
autoVacuum := -1 autoVacuum := -1
busyTimeout := 5000 busyTimeout := 5000
caseSensitiveLike := -1 caseSensitiveLike := -1
@ -1042,6 +1043,15 @@ func (d *SQLiteDriver) Open(dsn string) (driver.Conn, error) {
encryptKey = val encryptKey = val
} }
// _cipher_compatibility
if val := params.Get("_cipher_compatibility"); val != "" {
iv, err := strconv.ParseInt(val, 10, 64)
if err != nil {
return nil, fmt.Errorf("Invalid _cipher_compatibility: %v: %v", val, err)
}
cipher_compatibility = int(iv)
}
// Authentication // Authentication
if _, ok := params["_auth"]; ok { if _, ok := params["_auth"]; ok {
authCreate = true authCreate = true
@ -1406,6 +1416,15 @@ func (d *SQLiteDriver) Open(dsn string) (driver.Conn, error) {
} }
} }
// Cipher Compatibility
// The cipher_compatibility pragma should be called immediately after if provided
if cipher_compatibility > -1 {
if err := exec(fmt.Sprintf("PRAGMA cipher_compatibility = %d;", cipher_compatibility)); err != nil {
C.sqlite3_close_v2(db)
return nil, err
}
}
// USER AUTHENTICATION // USER AUTHENTICATION
// //
// User Authentication is always performed even when // User Authentication is always performed even when