@@ -20,19 +20,7 @@ import cnames.structs.sqlite3
2020import cnames.structs.sqlite3_stmt
2121import com.ctrip.sqllin.driver.DatabaseConfiguration
2222import 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.*
3624import kotlinx.cinterop.*
3725
3826/* *
@@ -49,15 +37,15 @@ internal class NativeDatabase private constructor(val dbPointer: CPointer<sqlite
4937
5038 val db = memScoped {
5139 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."
5442 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!!
5645 }
5746 val openResult = sqlite3_open_v2(realPath, dbPtr.ptr, sqliteFlags, null )
58- if (openResult != SQLITE_OK ) {
47+ if (openResult != SQLITE_OK )
5948 throw sqliteException(sqlite3_errmsg(dbPtr.value)?.toKString() ? : " " , openResult)
60- }
6149 dbPtr.value!!
6250 }
6351
@@ -71,7 +59,7 @@ internal class NativeDatabase private constructor(val dbPointer: CPointer<sqlite
7159 }
7260
7361 // 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 ) {
7563 sqlite3_close_v2(db)
7664 throw sqliteException(" Could not open the database in read/write mode" )
7765 }
0 commit comments