Skip to content

Conversation

kevin-dp
Copy link
Contributor

@kevin-dp kevin-dp commented Oct 1, 2025

This PR is a follow up on #617 and modifies the Electric collection to handle predicates that are being pushed down to the Electric collection.

Copy link

changeset-bot bot commented Oct 1, 2025

🦋 Changeset detected

Latest commit: c9a8721

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 2 packages
Name Type
@tanstack/electric-db-collection Patch
@tanstack/db-example-react-todo Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@kevin-dp kevin-dp force-pushed the kevin/pred-pushdown-to-sync-db branch from aa2e623 to 2ae236f Compare October 6, 2025 12:17
@kevin-dp kevin-dp force-pushed the kevin/pred-pushdown-to-sync-electric-coll branch from d66c54e to 71cef08 Compare October 6, 2025 13:57
Copy link

pkg-pr-new bot commented Oct 6, 2025

More templates

@tanstack/angular-db

npm i https://pkg.pr.new/@tanstack/angular-db@618

@tanstack/db

npm i https://pkg.pr.new/@tanstack/db@618

@tanstack/db-ivm

npm i https://pkg.pr.new/@tanstack/db-ivm@618

@tanstack/electric-db-collection

npm i https://pkg.pr.new/@tanstack/electric-db-collection@618

@tanstack/query-db-collection

npm i https://pkg.pr.new/@tanstack/query-db-collection@618

@tanstack/react-db

npm i https://pkg.pr.new/@tanstack/react-db@618

@tanstack/rxdb-db-collection

npm i https://pkg.pr.new/@tanstack/rxdb-db-collection@618

@tanstack/solid-db

npm i https://pkg.pr.new/@tanstack/solid-db@618

@tanstack/svelte-db

npm i https://pkg.pr.new/@tanstack/svelte-db@618

@tanstack/trailbase-db-collection

npm i https://pkg.pr.new/@tanstack/trailbase-db-collection@618

@tanstack/vue-db

npm i https://pkg.pr.new/@tanstack/vue-db@618

commit: c9a8721

Copy link
Contributor

github-actions bot commented Oct 6, 2025

Size Change: 0 B

Total Size: 76.9 kB

ℹ️ View Unchanged
Filename Size
./packages/db/dist/esm/collection/change-events.js 963 B
./packages/db/dist/esm/collection/changes.js 1.01 kB
./packages/db/dist/esm/collection/events.js 660 B
./packages/db/dist/esm/collection/index.js 3.31 kB
./packages/db/dist/esm/collection/indexes.js 1.16 kB
./packages/db/dist/esm/collection/lifecycle.js 1.8 kB
./packages/db/dist/esm/collection/mutations.js 2.52 kB
./packages/db/dist/esm/collection/state.js 3.79 kB
./packages/db/dist/esm/collection/subscription.js 1.83 kB
./packages/db/dist/esm/collection/sync.js 1.68 kB
./packages/db/dist/esm/deferred.js 230 B
./packages/db/dist/esm/errors.js 3.1 kB
./packages/db/dist/esm/index.js 1.58 kB
./packages/db/dist/esm/indexes/auto-index.js 794 B
./packages/db/dist/esm/indexes/base-index.js 835 B
./packages/db/dist/esm/indexes/btree-index.js 2 kB
./packages/db/dist/esm/indexes/lazy-index.js 1.21 kB
./packages/db/dist/esm/indexes/reverse-index.js 577 B
./packages/db/dist/esm/local-only.js 967 B
./packages/db/dist/esm/local-storage.js 2.33 kB
./packages/db/dist/esm/optimistic-action.js 294 B
./packages/db/dist/esm/proxy.js 3.86 kB
./packages/db/dist/esm/query/builder/functions.js 615 B
./packages/db/dist/esm/query/builder/index.js 4.04 kB
./packages/db/dist/esm/query/builder/ref-proxy.js 938 B
./packages/db/dist/esm/query/compiler/evaluators.js 1.55 kB
./packages/db/dist/esm/query/compiler/expressions.js 760 B
./packages/db/dist/esm/query/compiler/group-by.js 2.04 kB
./packages/db/dist/esm/query/compiler/index.js 2.04 kB
./packages/db/dist/esm/query/compiler/joins.js 2.52 kB
./packages/db/dist/esm/query/compiler/order-by.js 1.21 kB
./packages/db/dist/esm/query/compiler/select.js 1.28 kB
./packages/db/dist/esm/query/ir.js 785 B
./packages/db/dist/esm/query/live-query-collection.js 340 B
./packages/db/dist/esm/query/live/collection-config-builder.js 3.03 kB
./packages/db/dist/esm/query/live/collection-subscriber.js 1.92 kB
./packages/db/dist/esm/query/optimizer.js 3.26 kB
./packages/db/dist/esm/SortedMap.js 1.24 kB
./packages/db/dist/esm/transactions.js 3 kB
./packages/db/dist/esm/utils.js 1.01 kB
./packages/db/dist/esm/utils/browser-polyfills.js 365 B
./packages/db/dist/esm/utils/btree.js 6.01 kB
./packages/db/dist/esm/utils/comparison.js 754 B
./packages/db/dist/esm/utils/index-optimization.js 1.73 kB

compressed-size-action::db-package-size

Copy link
Contributor

github-actions bot commented Oct 6, 2025

Size Change: 0 B

Total Size: 1.46 kB

ℹ️ View Unchanged
Filename Size
./packages/react-db/dist/esm/index.js 152 B
./packages/react-db/dist/esm/useLiveQuery.js 1.31 kB

compressed-size-action::react-db-package-size

@kevin-dp kevin-dp requested a review from samwillis October 6, 2025 14:59
@kevin-dp kevin-dp force-pushed the kevin/pred-pushdown-to-sync-db branch from 91ea051 to 3493f6d Compare October 7, 2025 09:33
Base automatically changed from kevin/pred-pushdown-to-sync-db to main October 7, 2025 10:17
@kevin-dp kevin-dp force-pushed the kevin/pred-pushdown-to-sync-electric-coll branch from 49f1f59 to dd337d8 Compare October 7, 2025 10:20
clause: IR.OrderByClause,
params: Array<unknown>
): string {
// TODO: what to do with stringSort and locale?
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This raises the question on if we have the wrong default in DB, should we default to lexical sort?

Comment on lines +840 to +846
// After receiving Bob and Charlie, the collection now has 3 users (Alice + Bob + Charlie)
// but it still requests 2 more... TODO: check if this is correct?
expect(callArgs(1)).toMatchObject({
limit: 2,
orderBy: `age NULLS FIRST`,
})
})
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@kevin-dp not sure why it does this

…ests

These tests have a known issue with unhandled rejection warnings that exists
in the main branch. The test functionality works correctly, but vitest reports
unhandled rejections when testing timeout behavior with fake timers.

The tests properly validate that timeouts occur and are handled, but the
setTimeout callback in awaitMatch creates promise rejections that vitest
flags as unhandled, even though they are properly caught by the test assertions.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants