Skip to content

Commit e18ea7b

Browse files
Allow SQLiteOpenHelper to set WAL mode before getWritableDatabase
1 parent d87cd96 commit e18ea7b

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

android-database-sqlcipher/src/main/java/net/sqlcipher/database/SQLiteOpenHelper.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ public abstract class SQLiteOpenHelper {
4444
private final SQLiteDatabaseHook mHook;
4545
private final DatabaseErrorHandler mErrorHandler;
4646
private boolean mEnableWriteAheadLogging;
47+
private boolean mDeferSetWriteAheadLoggingEnabled;
4748

4849
private SQLiteDatabase mDatabase = null;
4950
private boolean mIsInitializing = false;
@@ -152,16 +153,17 @@ public synchronized SQLiteDatabase getWritableDatabase(char[] password) {
152153
mIsInitializing = true;
153154
if (mName == null) {
154155
db = SQLiteDatabase.create(null, password);
155-
156156
} else {
157157
String path = mContext.getDatabasePath(mName).getPath();
158-
159158
File dbPathFile = new File (path);
160-
if (!dbPathFile.exists())
159+
if (!dbPathFile.exists()) {
161160
dbPathFile.getParentFile().mkdirs();
162-
161+
}
163162
db = SQLiteDatabase.openOrCreateDatabase(path, password, mFactory, mHook, mErrorHandler);
164163
}
164+
if(mDeferSetWriteAheadLoggingEnabled) {
165+
mEnableWriteAheadLogging = db.enableWriteAheadLogging();
166+
}
165167
onConfigure(db);
166168
int version = db.getVersion();
167169
if (version != mNewVersion) {
@@ -306,8 +308,10 @@ public void setWriteAheadLoggingEnabled(boolean enabled) {
306308
} else {
307309
mDatabase.disableWriteAheadLogging();
308310
}
311+
mEnableWriteAheadLogging = enabled;
312+
} else {
313+
mDeferSetWriteAheadLoggingEnabled = enabled;
309314
}
310-
mEnableWriteAheadLogging = enabled;
311315
}
312316
}
313317
}

0 commit comments

Comments
 (0)