Skip to content

Releases: Tencent/wcdb

WCDB v1.0.7

28 Aug 10:55
Compare
Choose a tag to compare

iOS/macOS

  • Fix nil string bug while inserting empty string.
  • Reduce size of binary and provide a non-bitcode scheme by --configuration WithoutBitcode for Carthage.
  • Avoid conflict between builtin SQLCipher and other SQLite based library(including system library).
  • Code template is not installed automatically now. Developers can run curl https://raw.githubusercontent.com/Tencent/wcdb/master/tools/templates/install.sh -s | sh to install it manually.

WCDB v1.0.6.2

06 Jun 09:42
Compare
Choose a tag to compare

iOS/macOS

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).

Swift
  • Compatible with Swift 4.2. The ColumnEncodable and ColumnDecodable is now changed. Check the code snippet, file template or wiki for the new usage.
  • Use Double column type for Date

FYI, a refactor is needed to fit the new conditional conformance design of Swift 4.2. We will finish it in next version.

Android

  • 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.

WCDB 1.0.6

02 Jan 11:38
Compare
Choose a tag to compare

iOS/macOS

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.

Android

  • 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.

WCDB 1.0.5

08 Nov 11:55
Compare
Choose a tag to compare

iOS

  • 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.

Android

  • 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.

WCDB 1.0.4

14 Sep 04:33
Compare
Choose a tag to compare

Repair Kit

  • Add sqliterk_cancel function to cancel ongoing output operations.
  • Add corresponding Java interface to cancel operations on Android.

iOS

  • Builtin WCTColumnCoding supports all id<NSCoding> objects now.
  • Compatible with iOS 11.
  • Fullfsync is used by default for data integrity.
  • Add -initWithExistingTag: for WCTDatabase 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.

Android

  • 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(). See CancellationSignal 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 enables AND, OR operators in FTS3/4.
  • Use CancellationSignal for canceling BackupKit, RecoverKit and RepairKit operations. See repair sample for details.
  • Add callback interface for RepairKit to show progress to the users. See RepairKit.Callback and RepairKit.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.

WCDB 1.0.3

25 Jul 01:56
Compare
Choose a tag to compare

Repair Kit

  • Fix INTEGER PRIMARY KEY columns not properly recovered.

iOS

  • Add WCTColumnCoding support for all WCTValue. Developers can use id<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.

Android

  • 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.

WCDB 1.0.2

06 Jul 04:18
Compare
Choose a tag to compare

iOS

  • Performance optimization and benchmark. See Wiki page for details.
  • Change builtin NSData or NSMutableData 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 to updateRowsInTable, and statictics(typo) to statistics.
  • Some minor bug fixes.

Android

  • Performance optimization and benchmark. See Wiki page for details.
  • Expose ProGuard rules to AAR package. Fix crash when minify is enabled in gradle.

WCDB 1.0.1

20 Jun 08:32
Compare
Choose a tag to compare

iOS

  • 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 in runTransaction to avoid OOM.

Android

  • 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.

WCDB 1.0.0

07 Jun 12:38
Compare
Choose a tag to compare

Initial release.