@@ -20,19 +20,7 @@ import cnames.structs.sqlite3
20
20
import cnames.structs.sqlite3_stmt
21
21
import com.ctrip.sqllin.driver.DatabaseConfiguration
22
22
import com.ctrip.sqllin.driver.sqliteException
23
- import com.ctrip.sqllin.sqlite3.SQLITE_DBCONFIG_LOOKASIDE
24
- import com.ctrip.sqllin.sqlite3.SQLITE_OK
25
- import com.ctrip.sqllin.sqlite3.SQLITE_OPEN_CREATE
26
- import com.ctrip.sqllin.sqlite3.SQLITE_OPEN_READWRITE
27
- import com.ctrip.sqllin.sqlite3.SQLITE_OPEN_URI
28
- import com.ctrip.sqllin.sqlite3.sqlite3_busy_timeout
29
- import com.ctrip.sqllin.sqlite3.sqlite3_close_v2
30
- import com.ctrip.sqllin.sqlite3.sqlite3_db_config
31
- import com.ctrip.sqllin.sqlite3.sqlite3_db_readonly
32
- import com.ctrip.sqllin.sqlite3.sqlite3_errmsg
33
- import com.ctrip.sqllin.sqlite3.sqlite3_exec
34
- import com.ctrip.sqllin.sqlite3.sqlite3_open_v2
35
- import com.ctrip.sqllin.sqlite3.sqlite3_prepare16_v2
23
+ import com.ctrip.sqllin.sqlite3.*
36
24
import kotlinx.cinterop.*
37
25
38
26
/* *
@@ -49,15 +37,15 @@ internal class NativeDatabase private constructor(val dbPointer: CPointer<sqlite
49
37
50
38
val db = memScoped {
51
39
val dbPtr = alloc<CPointerVar <sqlite3>>()
52
- if (configuration.isReadOnly) {
53
- // from sqlite3_open_v2 docs: if opening in read-write mode fails due to OS-level permissions, an attempt is made to open it in read-only mode
40
+ if (configuration.isReadOnly) {
41
+ // From sqlite3_open_v2 docs: " if opening in read-write mode fails due to OS-level permissions, an attempt is made to open it in read-only mode."
54
42
val openResult = sqlite3_open_v2(realPath, dbPtr.ptr, SQLITE_OPEN_READWRITE or SQLITE_OPEN_URI , null )
55
- if (openResult == SQLITE_OK ) return @memScoped dbPtr.value!!
43
+ if (openResult == SQLITE_OK )
44
+ return @memScoped dbPtr.value!!
56
45
}
57
46
val openResult = sqlite3_open_v2(realPath, dbPtr.ptr, sqliteFlags, null )
58
- if (openResult != SQLITE_OK ) {
47
+ if (openResult != SQLITE_OK )
59
48
throw sqliteException(sqlite3_errmsg(dbPtr.value)?.toKString() ? : " " , openResult)
60
- }
61
49
dbPtr.value!!
62
50
}
63
51
@@ -71,7 +59,7 @@ internal class NativeDatabase private constructor(val dbPointer: CPointer<sqlite
71
59
}
72
60
73
61
// Check that the database is really read/write when that is what we asked for.
74
- if ((sqliteFlags and SQLITE_OPEN_READWRITE > 0 ) && sqlite3_db_readonly(db, null ) != 0 ) {
62
+ if (! configuration.isReadOnly && sqlite3_db_readonly(db, null ) != 0 ) {
75
63
sqlite3_close_v2(db)
76
64
throw sqliteException(" Could not open the database in read/write mode" )
77
65
}
0 commit comments