DQL Strict Mode
DQL_STRICT_MODE=false
), Ditto is more flexible and will infer the CRDT type based on the document’s shape:Differ
API for calculating diffs between query results.
This API can be used with a store observer to understand how its results change
over successive callbacks. The Differ
API provides a way to track changes in
the data and can be used to optimize data synchronization and conflict resolution.Differ API documentation.Feature | Description | Example |
---|---|---|
UNSET clause | Remove fields from documents | UPDATE orders UNSET items.abc WHERE _id = 'my-id' |
CAST function | Explicitly convert between data types | SELECT * FROM products WHERE CAST(price AS INT) > 10 |
USE IDS clause | Direct document retrieval by ID | SELECT * FROM products USE IDS '123', '456' |
SIMILAR TO | Pattern matching expressions | SELECT * FROM products WHERE name SIMILAR TO '%phone%' |
Runtime expressions | Use expressions in object/array construction | UPDATE products SET metadata = { 'updated_at': current_timestamp() } |
Counters | Support for legacy compatible counter type | UPDATE products APPLY in_stock PN_INCREMENT BY 1.0 |
->
) are deprecated. Read more.DELETE
to remove documents.DQL_STRICT_MODE
as a system parameter to opt-out of requiring collection definitions (#16573)network_use_nextgen_multihop_stack
(#16370)persistenceDirectory
parameter now throws a DittoError
with code store/persistence-directory-locked
instead of only logging an error. This change prevents constructing a non-functional instance as Ditto does require separate configurations for this parameter when multiple instances are instantiated. (#12336) Added: Error code store/persistence-directory-locked
to the DittoError
class. (#12336) Added: property SmallPeerInfo.syncScope
to replace the now deprecated methods SmallPeerInfo.getSyncScope()
and Ditto.smallPeerInfo.setSyncScope()
. (#15579) Deprecated: Methods SmallPeerInfo.getSyncScope()
and SmallPeerInfo.setSyncScope()
, use the SmallPeerInfo.syncScope
property instead. (#15579) Added: Method transaction()
on Store
allowing a DQL transaction to be performed. (#15800) Added: Transaction
representing an active DQL transaction. (#15800) Added: TransactionInfo
encapsulating information about a transaction. (#15800) Added: TransactionCompletionAction
representing an action to be taken upon completing a transaction: Commit or Rollback. (#15800) Added: An opt-in Android foreground service which allows Ditto to sync in the background. (#16097) Added: ditto.observeTransportConditions()
API for React Native that will allow developers to be aware transports conditions changes, like shutting down bluetooth. (#16518) Added: class Diff
to represent diffs produced by the Differ
. (#16723) Added: class Differ
, which calculates diffs between query results. This can be used with a store observer to understand how its results change over successive callbacks. (#16723) Added: More detailed messages about network problems are logged when authentication fails (#SEC-124) Changed: Unify dedicated TCP servers across different transports (Multicast, mDNS, and WiFi Aware) by utilizing a single static TCP server implementation (#TRANS-131)SDK>React Native Install Guide
SDK>Configuring Collection Sync
startSync()
is called USER_COLLECTION_SYNC_SCOPES
cannot be updated without
closing and reopening a new Ditto instance. This will be resolved in the next release. For more information
see Updating Sync Scopes
Sync Scope | Purpose |
---|---|
”AllPeers” (default) | Sync with both Ditto Server and other Small Peers. This is the default behavior for all collections. |
”BigPeerOnly” | Sync only with Ditto Server (Big Peer). Do no sync with other Small Peers. |
”SmallPeersOnly” | Sync only with other Small Peers. Do not sync with Ditto Server. |
”LocalPeerOnly” | Do not sync this collection to Ditto Server or other Small Peers. |
local_mesh_orders
to only sync with other small peers in the mesh and not with Ditto Serverusing the SmallPeersOnly
sync scope.ditto.store.registerObserver(...)
) will now run multi-threaded on all platforms (except for in Web Browsers)
by default. Prior to 4.10.0
all store observers would run on the same thread which could lead to performance issues for applications
with multiple store observers. Users may see performance improvements on applications using more than one store observer, especially during
high-volume usage.Ditto guarantees order sequencing for a single observer. Because observers now run in parallel there is not a guarantee for order
sequencing between observers. This behavior change should not have an impact on your application. If you have concerns or questions
about this behavior change reach out to Ditto’s Customer Support.To reset Ditto to only use a single thread for all Ditto observers use the following system parameter. For instruction on how to set
a system parameter in your specific SDK see SDK>Customizing System Settings
LIKE
operatorLIKE
operator can now be used for pattern matching of string values.DQL>Operator Expressions
Pattern | Meaning |
---|---|
% | Matches zero or more characters (like .* in regex) |
_ | Matches exactly one character (like . in regex) |
object_keys(object)
: Returns an array
with all the keys in the given object
.object_values(object)
: Returns an array
with all the values in object
.DQL>Operator Expressions
LIMIT
, OFFSET
and ORDER BY
in EVICT
and UPDATE
statements.DQL Exampledittoffi_query_result_item_free()
and ditto_clear_presence_callback()
functions in React Native. (#SDKS-555)customAuthURL
and allow authenticating with a custom authentication service instead of the Ditto cloud. (#15904)object_keys
and object_values
scalar DQL functions. (#QE-73)
Peer
type to the correct spelling dittoSdkVersion
from the previous, incorrect spelling dittoSDKVersion
. (#SDKS-176)