Skip to content

Synchronous.NORMAL does not work when JournalMode.DELETE #130

@marcardar

Description

@marcardar

sqliter1.3.1 (via sqldelight 2.0.0)

On iOS, when using Synchronous.NORMAL and JournalMode.DELETE together I get:

co.touchlab.sqliter.interop.SQLiteExceptionErrorCode: error while compiling: PRAGMA synchronous=1
file is not a database
    at 0   cmn.debug.dylib                     0x10c6642cb        kfun:kotlin.Throwable#<init>(kotlin.String?){} + 99 
    at 1   cmn.debug.dylib                     0x10c65e10b        kfun:kotlin.Exception#<init>(kotlin.String?){} + 95 
    at 2   cmn.debug.dylib                     0x10e152e57        kfun:co.touchlab.sqliter.interop.SQLiteException#<init>(kotlin.String;co.touchlab.sqliter.interop.SqliteDatabaseConfig){} + 115 
    at 3   cmn.debug.dylib                     0x10e152f4f        kfun:co.touchlab.sqliter.interop.SQLiteExceptionErrorCode#<init>(kotlin.String;co.touchlab.sqliter.interop.SqliteDatabaseConfig;kotlin.Int){} + 203 
    at 4   cmn.debug.dylib                     0x10e15606f        kfun:co.touchlab.sqliter.interop.SqliteDatabase#prepareStatement(kotlin.String){}co.touchlab.sqliter.interop.SqliteStatement + 2299 
    at 5   cmn.debug.dylib                     0x10e161117        kfun:co.touchlab.sqliter.native.NativeDatabaseConnection#createStatement(kotlin.String){}co.touchlab.sqliter.Statement + 223 
    at 6   cmn.debug.dylib                     0x10e166a83        kfun:co.touchlab.sqliter.DatabaseConnection#createStatement(kotlin.String){}co.touchlab.sqliter.Statement-trampoline + 107 
    at 7   cmn.debug.dylib                     0x10e144f9f        kfun:co.touchlab.sqliter#withStatement__at__co.touchlab.sqliter.DatabaseConnection(kotlin.String;kotlin.Function1<co.touchlab.sqliter.Statement,0:0>){0§<kotlin.Any?>}0:0 + 235 
    at 8   cmn.debug.dylib                     0x10e145ee3        kfun:co.touchlab.sqliter#updateSynchronousFlag__at__co.touchlab.sqliter.DatabaseConnection(co.touchlab.sqliter.SynchronousFlag){} + 251 
    at 9   cmn.debug.dylib                     0x10e16338f        kfun:co.touchlab.sqliter.native.NativeDatabaseManager.createConnection#internal + 1575 
    at 10  cmn.debug.dylib                     0x10e162a6b        kfun:co.touchlab.sqliter.native.NativeDatabaseManager#createMultiThreadedConnection(){}co.touchlab.sqliter.DatabaseConnection + 243 
    at 11  cmn.debug.dylib                     0x10e167123        kfun:co.touchlab.sqliter.DatabaseManager#createMultiThreadedConnection(){}co.touchlab.sqliter.DatabaseConnection-trampoline + 99 
    at 12  cmn.debug.dylib                     0x10e16dd13        kfun:app.cash.sqldelight.driver.native.NativeSqliteDriver.NativeSqliteDriver$2.invoke#internal + 243 
    at 13  cmn.debug.dylib                     0x10c7aef73        kfun:kotlin.Function0#invoke(){}1:0-trampoline + 99 
    at 14  cmn.debug.dylib                     0x10e1722bf        kfun:app.cash.sqldelight.driver.native.Pool.Pool$borrowEntry$nextAvailable$1.invoke#internal + 663 
    at 15  cmn.debug.dylib                     0x10c7af8cf        kfun:kotlin.Function1#invoke(1:0){}1:1-trampoline + 107 
    at 16  cmn.debug.dylib                     0x10e16a6d3        kfun:app.cash.sqldelight.driver.native.util.PoolLock#withLock(kotlin.Function1<app.cash.sqldelight.driver.native.util.PoolLock.CriticalSection,0:0>){0§<kotlin.Any?>}0:0 + 535 
    at 17  cmn.debug.dylib                     0x10e171153        kfun:app.cash.sqldelight.driver.native.Pool#borrowEntry(){}app.cash.sqldelight.driver.native.Borrowed<1:0> + 847 
    at 18  cmn.debug.dylib                     0x10e16d1c7        kfun:app.cash.sqldelight.driver.native.NativeSqliteDriver#newTransaction(){}app.cash.sqldelight.db.QueryResult<app.cash.sqldelight.Transacter.Transaction> + 379 
    at 19  cmn.debug.dylib                     0x10e139a5f        kfun:app.cash.sqldelight.db.SqlDriver#newTransaction(){}app.cash.sqldelight.db.QueryResult<app.cash.sqldelight.Transacter.Transaction>-trampoline + 99 
    at 20  cmn.debug.dylib                     0x10e136fc3        kfun:app.cash.sqldelight.TransacterImpl.transactionWithWrapper#internal + 379 
    at 21  cmn.debug.dylib                     0x10e136d73        kfun:app.cash.sqldelight.TransacterImpl#transaction(kotlin.Boolean;kotlin.Function1<app.cash.sqldelight.TransactionWithoutReturn,kotlin.Unit>){} + 171 
    at 22  cmn.debug.dylib                     0x10e13967f        kfun:app.cash.sqldelight.Transacter#transaction(kotlin.Boolean;kotlin.Function1<app.cash.sqldelight.TransactionWithoutReturn,kotlin.Unit>){}-trampoline + 111 

Workaround is to use synchronousFlag = null when journalMode = JournalMode.DELETE (actually this might not be a workaround, since I've only opened a database with this configuration, not yet written to one)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions