- Add lite mode (Set journal mode and synchronous flag to OFF)
- Fix memory leak and other known bug
- Increase migration speed
- Fix compile error of SwiftPM in Xcode 16
- WCDB C++ supports OpenHarmony OS
- Support to recompress existing data with new configuration
- Support auto vacuum
- Support Swift6
- Fix some compile issues
- Some bugfix for data repair, Java/Kotlin ORM and Swift query
- Fix some compile error and warning
- Support legacy mmicu tokenizer in WCDB Java/Kotlin
- Support to rollback compression
- Improve performance of vacuum
- Add valueOr interface to Optional
- Some bugfix for compression and vacuum
- Fix the compile error of WCDB Java/Koltin caused by minifyEnabled flag
- Add regular memory verification to Zstd dict
- Add ProGuard config for WCDB Java/Kotlin
- Support to build WCDB C++ as a framework on Apple platform with CMake
- Support to insert an array of object pointers or object shared pointers in WCDB C++
- Fix the bug that error cannot be obtained through database
- Some bugfix for data compression
- Fix compile error of WCDB Objc on Carthage
- Fix compile error of WCDB C++ when built as a CMake submodule
- Some bugfix for WCDB C++ and WCDB Swift
- Fix compile error on Mac Catalyst
- Add WCDB Java/Kotlin
- Support data compression
- Support incremental data backup
- Support to configure a filter condition for data migration
- Support to use std::optional and std::shared_ptr in C++ ORM
- C++ ORM supports inheritance
- Add more monitoring capabilities
- WCDB Swift supports Swift Package Manager
- Support to asynchronously interrupt database operations
- Optimize the handle management mechanism
- Some bugfix for WCDB C++ in Windows
- Transaction supports nesting
- Some bug fix for data migration
- Fix compile error in new Xcode
- Fix compile issue caused by header
- WCDB C++ supports Windows
- Optimizie C++ ORM performance
- Downgrade the minimum supported system version for iPhone and Apple watch
- Support databases created by old versions of sqlcipher
- Fix crash of WCDB Swift in x86 emulator
- Support insertOrIgnore
- Add WCDB C++
- New implementation of WCDB Swift
- New implementation of Winq
- New implementation of database repair
- Support data migration
- Support FTS5
- Support Swift 5 for Xcode 14.
- Fix compile error for SQLCipher 4.1.0.
- Fix some bug.
- Support Swift 4.2 for Xcode 10.2
- Fix a bug that archive failed with Xcode new build system.
- Support for Room library from Android Jetpack. See README and Wiki for details.
- Compatible with Swift 4.2.
- Enable FTS5 macro for sqlcipher.
- Fix nil string bug while inserting empty string.
- Code template is not installed automatically now.
- Reduce size of binary and provide a non-bitcode scheme for Carthage.
- Avoid conflict between builtin SQLCipher and other SQLite based library(including system library).
It's a bug fixed version. Since Swift 4.1.x contains bugs that make WCDB fails to compile, developers should use Xcode 10(with Swift 4.2).
- Compatible with Swift 4.2. The
ColumnEncodable
andColumnDecodable
is now changed. Check the code snippet, file template or wiki for the new usage. - Use
Double
column type forDate
.
FYI, a refactor is needed to fit the new conditional conformance design of Swift 4.2. We will finish it in next version.
- Use C++14 and libc++_static runtime on JNI routines.
- Fix "no implementation found" log on libwcdb.so initialization.
- Fix ProGuard rules when importing from AAR package.
It's the first release for WCDB Swift, which contains exactly the same features as the ObjC version, including:
- Object-Relational-Mapping based on Swift 4.0
Codable
protocol. - WCDB Integrated Language Query.
- Multithreading safety and concurrency.
- Encryption based on SQLCipher.
- Protection for SQL injection.
- Full text search.
- Corruption recovery.
- ...
For further information, please check tutorial on wiki.
- Migrate to gradle plugin 3.0.0, target API 26, and minimal API 14.
- Support NDK r16, change default toolchain to clang.
- Various bug fixes.
- Builtin full-text search support for ORM.
WCTProperty *tableProperty = WCTSampleFTSData.PropertyNamed(tableNameFTS).match("Eng*")];
[databaseFTS getObjectsOfClass:WCTSampleFTSData.class fromTable:tableNameFTS where:tableProperty.match("Eng*")];
- Support read-only databases.
- Some minor bug fixes and code refactor.
- Optimize asynchronous checkpointer, greatly improve write performance with WAL and asynchronous checkpointing.
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabaseInWalMode(...);
db.setAsyncCheckpointEnabled(true);
- Add benchmark for asynchronous checkpointer.
- Add connection pooling friendly interface.
SQLiteDatabase.setSynchronousMode()
to set database synchronization mode. - Enable
dbstat
virtual table while compiling.
- Add
sqliterk_cancel
function to cancel ongoing output operations. - Add corresponding Java interface to cancel operations on Android.
- Builtin
WCTColumnCoding
supports allid<NSCoding>
objects now. - Compatible with iOS 11.
Fullfsync
is used by default for data integrity.- Add
-initWithExistingTag:
forWCTDatabase
to get existing database without path.
WCTDatabase* database = [WCTDatabase [alloc] initWithPath:path];
database.tag = 123;
WCTDatabase* withoutPath = [[WCTDatabase alloc] initWithExistingTag:123];
- Some minor bug fixes, performance improvement and code refactor.
- Add asynchronous checkpointing support and custom checkpointing callback. This can improve performance in WAL mode.
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabaseInWalMode(...);
// Use asynchronous checkpointing.
db.setAsyncCheckpointEnabled(true);
// OR use custom checkpointer.
SQLiteCheckpointListener callback = new SQLiteCheckpointListener() {
//...
};
db.setCheckpointCallback(callback);
- Add
SQLiteTrace.onConnectionObtained(...)
interface to trace concurrency performance. - Add cancelable version of
SQLiteDatabase.execSQL()
. SeeCancellationSignal
for details.
CancellationSignal signal = new CancellationSignal();
db.execSQL(longRunningSQL, args, signal);
// on another thread
signal.cancel();
- Enable
SQLITE_ENABLE_FTS3_PARENTHESIS
compilation option on SQLCipher, which enablesAND
,OR
operators in FTS3/4. - Use
CancellationSignal
for cancelingBackupKit
,RecoverKit
andRepairKit
operations. See repair sample for details. - Add callback interface for
RepairKit
to show progress to the users. SeeRepairKit.Callback
andRepairKit.setCallback()
. - Do not load
libwcdb.so
if it's already loaded on the first use. This makes WCDB compatible to Tinker framework. - Various bug fixes.
- Fix INTEGER PRIMARY KEY columns not properly recovered.
- Add
WCTColumnCoding
support for allWCTValue
. Developers can useid<WCTColumnCoding>
objects for WINQ and all interfaces.
//WINQ
NSDate *now = [NSDate date];
[database getObjectsOfClass:Message.class fromTable:tableName where:Message.modifedTime==now];
//Interfaces
[database updateAllRowsInTable:tableName
onProperty:Message.modifiedTime
withValue:[NSDate date]];
- Add monitor for all executed SQL to check WINQ correctness.
//SQL Execution Monitor
[WCTStatistics SetGlobalSQLTrace:^(NSString *sql) {
NSLog(@"SQL: %@", sql);
}];
- Update
WCTTableCoding
XCode file template for the best practice of isolating Objective C++ codes. See Wiki page for details. - Some minor bug fixes.
- Add
CursorWindow.windowSize(int)
static method to set or get default size for cursor windows. SQLiteDatabase.dump()
reports IDs for all threads that hold database connections, to aid dead-lock debugging.- Fix crashing on devices fail to load ICU library.
- Fix
SQLiteTrace.onSQLExecuted(...)
reports negative execution time.
- Performance optimization and benchmark. See Wiki page for details.
- Change builtin
NSData
orNSMutableData
column coding to raw data format. To be compatible with earlier versions, call[WCTCompatible sharedCompatible].builtinNSDataColumnCodingCompatibleEnabled = YES
. - Add
attach
,detach
,vacuum
,savepoiint
,rollback
,release
,reindex
,explain
statement and SQLCipher related pragma to WINQ. - Remove auto increment for
insertOrReplace
. - Rename
updateTable
toupdateRowsInTables
, andstatictics
(typo) tostatistics
. - Some minor bug fixes.
- Performance optimization and benchmark. See Wiki page for details.
- Expose ProGuard rules to AAR package. Fix crash when minify is enabled in gradle.
- Add CocoaPods support.
- Add iOS 7 and macOS 10.9 support. Apps using WCDB can target iOS 7 now.
- Fix an issue that
[WCTDatabase canOpen]
never return YES. - Fix an issue that the global tracer return some odd values.
- Add
@autoreleasepool
inrunTransaction
to avoid OOM.
- Add
x86_64
ABI support. - Publish debug version of AAR and native symbols. To reference debug version of WCDB library, modify your
build.gradle
.
dependencies {
// Append ":debug@aar" to reference debug library.
compile 'com.tencent.wcdb:wcdb-android:1.0.1:debug@aar'
}
- Device-locking is available in cipher options. Databases created with device-locking enabled can be only accessed in the same device where the databases are created. Device-locking is currently in alpha stage. You can enable it with the following code:
SQLiteCipherSpec cipher = new SQLiteCipherSpec()
// add the following line to enable device-locking
.setCipher(SQLiteCipherSpec.CIPHER_DEVLOCK);
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(path, key, cipher, ...);
- Various bug fixes.
Initial release.