Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@tanstack/db@0.5.0
Minor Changes
Implement 3-valued logic (true/false/unknown) for all comparison and logical operators. (#765)
Queries with null/undefined values now behave consistently with SQL databases, where UNKNOWN results exclude rows from WHERE clauses.
Breaking Change: This changes the behavior of
WHEREandHAVINGclauses when dealing withnullandundefinedvalues.Example 1: Equality checks with null
Previously, this query would return all persons with
age = null:With 3-valued logic,
eq(anything, null)evaluates tonull(UNKNOWN) and is filtered out. UseisNull()instead:Example 2: Comparisons with null values
Previously, this query would return persons with
age < 18ORage = null:With 3-valued logic,
lt(null, 18)evaluates tonull(UNKNOWN) and is filtered out. The same applies toundefinedvalues. To include null values, combine withisNull():Patch Changes
Add optional compareOptions to collection configuration. (#763)
Add expression helper utilities for parsing LoadSubsetOptions in queryFn. (#763)
When using
syncMode: 'on-demand', TanStack DB now provides helper functions to easily parse where clauses, orderBy, and limit predicates into your API's format:parseWhereExpression: Parse where clauses with custom handlers for each operatorparseOrderByExpression: Parse order by into simple array formatextractSimpleComparisons: Extract simple AND-ed filtersparseLoadSubsetOptions: Convenience function to parse all options at oncewalkExpression,extractFieldPath,extractValue: Lower-level helpersExample:
This eliminates the need to manually traverse expression AST trees when implementing predicate push-down.
Fix Uint8Array/Buffer comparison to work by content instead of reference. This enables proper equality checks for binary IDs like ULIDs in WHERE clauses using the
eqfunction. (#779)Add predicate comparison and merging utilities (isWhereSubset, intersectWherePredicates, unionWherePredicates, and related functions) to support predicate push-down in collection sync operations, enabling efficient tracking of loaded data ranges and preventing redundant server requests. Includes performance optimizations for large primitive IN predicates and full support for Date objects in equality, range, and IN clause comparisons. (#763)
Add support for orderBy and limit in currentStateAsChanges function (#763)
Adds an onDeduplicate callback on the DeduplicatedLoadSubset class which is called when a loadSubset call is deduplicated (#763)
Updated dependencies [
7aedf12,28f81b5]:@tanstack/electric-db-collection@0.2.0
Minor Changes
Add timeout support to electricCollectionOptions matching strategies. You can now specify a custom timeout when returning txids from mutation handlers (onInsert, onUpdate, onDelete). (#798)
Previously, users could only customize timeouts when manually calling
collection.utils.awaitTxId(), but not when using the automatic txid matching strategy.Example:
The timeout parameter is optional and defaults to 5000ms when not specified. It works with both single txids and arrays of txids.
Patch Changes
Fix array txid handling in electric collection handlers. When returning
{ txid: [txid1, txid2] }from anonInsert,onUpdate, oronDeletehandler, the system would timeout withTimeoutWaitingForTxIdErrorinstead of properly waiting for all txids. The bug was caused by passing array indices as timeout parameters when callingawaitTxIdvia.map(). (#795)Handle predicates that are pushed down. (#763)
Updated dependencies [
243a35a,f9d11fc,7aedf12,28f81b5,28f81b5,f6ac7ea,01093a7]:@tanstack/angular-db@0.1.26
Patch Changes
243a35a,f9d11fc,7aedf12,28f81b5,28f81b5,f6ac7ea,01093a7]:@tanstack/db-ivm@0.1.13
Patch Changes
Fix Uint8Array/Buffer comparison to work by content instead of reference. This enables proper equality checks for binary IDs like ULIDs in WHERE clauses using the
eqfunction. (#779)Fix bug with setWindow on ordered queries that have no limit. (#763)
@tanstack/offline-transactions@1.0.0
Patch Changes
243a35a,f9d11fc,7aedf12,28f81b5,28f81b5,f6ac7ea,01093a7]:@tanstack/powersync-db-collection@0.1.4
Patch Changes
243a35a,f9d11fc,7aedf12,28f81b5,28f81b5,f6ac7ea,01093a7]:@tanstack/query-db-collection@1.0.0
Patch Changes
Add expression helper utilities for parsing LoadSubsetOptions in queryFn. (#763)
When using
syncMode: 'on-demand', TanStack DB now provides helper functions to easily parse where clauses, orderBy, and limit predicates into your API's format:parseWhereExpression: Parse where clauses with custom handlers for each operatorparseOrderByExpression: Parse order by into simple array formatextractSimpleComparisons: Extract simple AND-ed filtersparseLoadSubsetOptions: Convenience function to parse all options at oncewalkExpression,extractFieldPath,extractValue: Lower-level helpersExample:
This eliminates the need to manually traverse expression AST trees when implementing predicate push-down.
Handle pushed-down predicates (#763)
Updated dependencies [
243a35a,f9d11fc,7aedf12,28f81b5,28f81b5,f6ac7ea,01093a7]:@tanstack/react-db@0.1.44
Patch Changes
243a35a,f9d11fc,7aedf12,28f81b5,28f81b5,f6ac7ea,01093a7]:@tanstack/rxdb-db-collection@0.1.32
Patch Changes
243a35a,f9d11fc,7aedf12,28f81b5,28f81b5,f6ac7ea,01093a7]:@tanstack/solid-db@0.1.43
Patch Changes
243a35a,f9d11fc,7aedf12,28f81b5,28f81b5,f6ac7ea,01093a7]:@tanstack/svelte-db@0.1.43
Patch Changes
243a35a,f9d11fc,7aedf12,28f81b5,28f81b5,f6ac7ea,01093a7]:@tanstack/trailbase-db-collection@0.1.44
Patch Changes
243a35a,f9d11fc,7aedf12,28f81b5,28f81b5,f6ac7ea,01093a7]:@tanstack/vue-db@0.0.76
Patch Changes
243a35a,f9d11fc,7aedf12,28f81b5,28f81b5,f6ac7ea,01093a7]:@tanstack/db-example-react-todo@0.1.24
Patch Changes
1afb027,f9d11fc,58f119a,8f746db,7aceffa]:@tanstack/db-collection-e2e@0.0.2
Patch Changes
1afb027,243a35a,f9d11fc,58f119a,7aedf12,28f81b5,28f81b5,8f746db,7aceffa,f6ac7ea,01093a7]: