Release Notes
3.0.15 — November 2023
3.0.12 — June 2023
Version 3.0.12 for C#.Net delivers the following features and enhancements:
Enhancements
-
CBL-4531 - Update PublicKey+Apple to use non deprecated keychain APIs
-
CBL-4167 - SQL++ : COLLATE does not have a way to specify locale for UNICODE
-
CBL-4024 - Change BuiltInWebSocket to do preemptive auth instead of challenge auth by default (Port)
-
CBL-3903 - Assertion failure when stopping replicator while replicator is connecting
-
CBL-4134 - Fix empty identity error when building LiteCoreCppTests&C4Tests using XCode 14
-
CBL-3993 - FTS index table not have to be qualified by data source alias in query
Issues and Resolutions
-
CBL-3671 - Fix slowdowns and storage overhead caused by document revision history not being pruned
-
CBL-4529 - Error when saving documents with LiteCore error 17: must be called during a transaction
-
CBL-4450 - Stop replicator could cause 'database is locked' error when saving a document
-
CBL-4448 - Replicator may get stuck when there is an error of "Invalid delta"
-
CBL-4388 - The URL Scheme the HTTP Message is incorrect when using proxy
-
CBL-4325 - Opening the upgraded database from 2.8 to 3.0.2 is slow
-
CBL-4570 - URLEndpointListener.getURLs returns an empty list on Android v>=11
3.0.8 — February 2023
3.0.2 — August 2022
3.0.15 — February 2022
- Quick Links
-
New Features | Enhancements | API Changes | Known Issues | Fixed Issues | Deprecated in this Release | Removed in this Release | Support Notices |
On upgrading from a 2.x release, all Couchbase Lite databases will be automatically re-indexed on initial database open. |
New Features
SQL++/N1QL Query Strings
Couchbase Lite’s SQL++ for Mobile query API vastly simplifies the integration of Couchbase Lite within hybrid/cross platform apps.
N1QL for Mobile is an implementation of the emerging SQL-for-JSON query language specification (SQL++). It provides native, hybrid and cross-platform mobile app developers with a consistent, convenient and flexible interface to query JSON documents within the embedded database using a SQL-based syntax. This means developers can reuse queries across platforms, reducing development, testing and maintenance costs.
Read More . . . SQL++ for Mobile
Enhancements
Auto-purge on Channel Access Revocation
An auto-purge feature is introduced for loss of access to channels and the documents in them. This is important for enforcement of data governance and data retention policies.
Channels are the fundamental mechanism for enforcement of access control using Sync Gateway. They guarantee that only users with access to a specific channel can access documents in that channel.
When a user loses access to a channel (and so to its documents) Couchbase Lite clients will auto purge all local documents on devices that belong to the revoked channel (during Pull or PushAndPull replication), unless the user has access to the document via some other channel.
Read More . . . Auto-purge on Channel Access Revocation
Document API Support for JSON Data
The Couchbase Lite API now offers out-of-the box support for document data in JSON format. This will make it easier for developers' applications to store, transform and manipulate JSON data in the database.
The API offers JSON support for Documents, MutableDocuments, Arrays, MutableArrays, Dictionaries, MutableDictionaries and Query Results.
Other Enhancements
-
CBL-2635 — Update support level and message note of Database’saveBlob() and getBlob() API
-
CBL-2482 — Change database.createQuery(String query) signature to throw CouchbaseLiteException
-
CBL-2456 — Update Database’s createQuery() to return an error or throw CouchbaseLiteException (Beta 3)
-
CBL-2438 — Add note about notification when disabling autoPurge
-
CBL-2383 — Increase kOtherDBCloseTimeoutSecs to allow enough time for all db open connections to be closed
-
CBL-2379 — Improve logging message when copying database using a wrong encryption key
-
CBL-2377 — Provide note about copying encrypted database in API doc
-
CBL-2358 — Add function for creating FLMutableDict/Array from JSON
-
CBL-2319 — Confusing copyDatabase API when used with encryptionKey
-
CBL-1941 — maxRetries should now count attempts instead of retries
-
CBL-1905 — Passing in progress level via configuration is deprecated; use the setProgressLevel API
-
CBL-1761 — Updating CBL .Net Core 3.1 PR Validation and Jenkins job
-
CBL-1714 — Refactor POSIX error domain codes to be platform independent
-
CBL-1692 — Add UWP PR validation Part 2 (build everything from source and make a GitHub action)
-
CBL-1666 — Allow apps to trigger SQLite index optimization directly
-
CBL-1650 — CBL doesn’t purge channel removals when removal revision already exists in CBL
-
CBL-1565 — Ensure c4log_enableFatalExceptionBacktrace is called
-
CBL-1308 — Allow to remove query listener or any listeners directly from token
-
CBL-1232 — Support function to change the kC4ReplicatorOptionProgressLevel
-
CBL-1118 — Update SimpleInjector to version 5 and edit nuspec to restrict it’s version < 6
-
CBL-911 — Couchbase Lite Java replication hangs when using DEBUG console + file logging on Windows
-
CBL-718 — API: Arg to Database.inBatch should be able to throw
-
CBL-680 — Public API for SQL++ array_agg() aggregation function
API Changes
This content introduces the changes made to the Couchbase Lite for C#.Net API for release 3.0.15.
Starting from this release Couchbase Lite for C#.Net requires Visual Studio 2019+ and uses .Net Core 3.1 (updating from .Net Core 2.0).
Breaking Change
The function ATAN2(x, y), which returns the principal value of the arc tangent of y/x, now becomes ATAN2(y, x); that is, the arguments are reversed in line with common notation.
Removed
Activate
We have removed the method Activate()
from all platform support libraries except Support.Android
(Xamarin Android)
EnableTextLogging()
We have removed the obsolete method EnableTextLogging()
from all the platform support libraries.
ResetCheckpoint
The method
ResetCheckpoint()
has been removed.
Use the reset:
argument when starting the replicator instead.
SetLogLevel()
We have removed the method
Database.setLogLevel()
Use
Database.log.console
instead:
Database.Compact
We have removed the method
Database.compact().
Use the method
Database.PerformMaintenance() and the enum
MaintenanceType
instead
Deprecated API
Match
We will remove
Match
at the next major release.
You should plan to switch to using the alternative
FullTextFunction.match(indexName:)
at the earliest opportunity.
Before
var whereClause =
FullTextExpression.Index("nameFTSIndex").Match("'querystring'");
using (var query = QueryBuilder.Select(SelectResult.Expression(Meta.ID))
.From(DataSource.Database(db))
.Where(whereClause)) {
foreach (var result in query.Execute()) {
Console.WriteLine($"Document id {result.GetString(0)}");
}
}
After
var whereClause =
FullTextFunction.Match("nameFTSIndex"),"'querystring'"); (1)
using (var query =
QueryBuilder.Select(SelectResult.Expression(Meta.ID))
.From(DataSource.Database(db))
.Where(whereClause)) {
foreach (var result in query.Execute()) {
Console.WriteLine($"Document id {result.GetString(0)}");
}
}
1 | Here we use FullTextFunction.match(indexName:) to build the query |
IsNullOrMissing
We will remove
isNullOrMissing
You should plan to switch to using the alternative
IsNotValued()
at the earliest opportunity.
NotNullOrMissing
We will remove
notNullOrMissing.
You should plan to switch to using the alternative
isValued()
at the earliest opportunity.
| isNotValued()
Fixed Issues
-
CBL-2583 — Replication unable to continue after termination between rev and ack
-
CBL-2579 — 409 retry can result in invalid remote ancestor ID
-
CBL-2478 — Tear down DBAccess on stopped instead of on release
-
CBL-2304 — CBL core fleece exception: incompatible duplicate scope
-
CBL-2191 — kHasAttachments flag may be lost in Conflict Resolver
-
CBL-2102 — Memory leak when calling MutableArrayObject.AddBlob
-
CBL-1722 — POSIX 32 (Broken Pipe) appears to crash application
-
CBL-1660 — Not all debug logging is compiled out of release builds
-
CBL-1438 — WSA codes not properly handled by bio_return_value
-
CBL-1354 — finding euclidean distance, square euclidean distance rounding the precision value
-
CBL-1310 — app crashing while fetching the prediction query result
-
CBL-1225 — Testfest : unshare the docs does not replicate to CBL
-
CBL-862 — CBL 2.7 and later doesn’t catch Illegal top-level key like "_id"
-
CBL-708 — Conflicting revision bodies are not removed after resolution
-
CBL-462 — Continuous push attempts to replicate purged documents
-
CBL-220 — Windows cannot handle dates before 1970 with C API
Deprecated in this Release
Items (features and-or functionality) are marked as deprecated when a more current, and usually enhanced, alternative is available.
Whilst the deprecated item will remain usable, it is no longer supported, and will be removed in a future release — see also: Removed in this Release You should plan to move to an alternative, supported, solution as soon as practical.
None for this release.
-
The [Database.Compact()] method is deprecated (as of 2.8), instead use Database.PerformMaintenance().