Skip to content

keep residual where clause in join predicate pushdown#442

Merged
samwillis merged 5 commits intomainfrom
samwillis/keep-residule-where-in-join-pushdown
Aug 26, 2025
Merged

keep residual where clause in join predicate pushdown#442
samwillis merged 5 commits intomainfrom
samwillis/keep-residule-where-in-join-pushdown

Conversation

@samwillis
Copy link
Collaborator

This modifies the optimiser to keep a residual copy of the where clause in place when pushing a predicate down into a left/right/full join ensuring that the semantics of the query are maintained.

The residual where close is marked as such in the IR so that it is not repeatedly pushed down during the recursive optimisation.

@samwillis samwillis requested a review from kevin-dp August 25, 2025 11:16
@changeset-bot
Copy link

changeset-bot bot commented Aug 25, 2025

🦋 Changeset detected

Latest commit: ccf7974

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

This PR includes changesets to release 8 packages
Name Type
@tanstack/db Patch
@tanstack/electric-db-collection Patch
@tanstack/query-db-collection Patch
@tanstack/react-db Patch
@tanstack/solid-db Patch
@tanstack/svelte-db Patch
@tanstack/trailbase-db-collection Patch
@tanstack/vue-db 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

@pkg-pr-new
Copy link

pkg-pr-new bot commented Aug 25, 2025

More templates

@tanstack/db

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

@tanstack/db-ivm

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

@tanstack/electric-db-collection

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

@tanstack/query-db-collection

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

@tanstack/react-db

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

@tanstack/solid-db

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

@tanstack/svelte-db

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

@tanstack/trailbase-db-collection

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

@tanstack/vue-db

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

commit: ccf7974

@github-actions
Copy link
Contributor

github-actions bot commented Aug 25, 2025

Size Change: +379 B (+0.61%)

Total Size: 62.9 kB

Filename Size Change
./packages/db/dist/esm/query/compiler/group-by.js 2.06 kB +20 B (+0.98%)
./packages/db/dist/esm/query/compiler/index.js 2.15 kB +14 B (+0.66%)
./packages/db/dist/esm/query/ir.js 466 B +148 B (+46.54%) 🚨
./packages/db/dist/esm/query/optimizer.js 2.63 kB +197 B (+8.09%) 🔍
ℹ️ View Unchanged
Filename Size
./packages/db/dist/esm/change-events.js 1.13 kB
./packages/db/dist/esm/collection.js 10.6 kB
./packages/db/dist/esm/deferred.js 230 B
./packages/db/dist/esm/errors.js 3 kB
./packages/db/dist/esm/index.js 1.52 kB
./packages/db/dist/esm/indexes/auto-index.js 745 B
./packages/db/dist/esm/indexes/base-index.js 605 B
./packages/db/dist/esm/indexes/btree-index.js 1.74 kB
./packages/db/dist/esm/indexes/lazy-index.js 1.25 kB
./packages/db/dist/esm/local-only.js 827 B
./packages/db/dist/esm/local-storage.js 2.03 kB
./packages/db/dist/esm/optimistic-action.js 294 B
./packages/db/dist/esm/proxy.js 4.19 kB
./packages/db/dist/esm/query/builder/functions.js 575 B
./packages/db/dist/esm/query/builder/index.js 3.79 kB
./packages/db/dist/esm/query/builder/ref-proxy.js 890 B
./packages/db/dist/esm/query/compiler/evaluators.js 1.48 kB
./packages/db/dist/esm/query/compiler/expressions.js 631 B
./packages/db/dist/esm/query/compiler/joins.js 2.36 kB
./packages/db/dist/esm/query/compiler/order-by.js 1.17 kB
./packages/db/dist/esm/query/compiler/select.js 655 B
./packages/db/dist/esm/query/live-query-collection.js 3.65 kB
./packages/db/dist/esm/SortedMap.js 1.24 kB
./packages/db/dist/esm/transactions.js 2.29 kB
./packages/db/dist/esm/utils.js 419 B
./packages/db/dist/esm/utils/btree.js 6.02 kB
./packages/db/dist/esm/utils/comparison.js 718 B
./packages/db/dist/esm/utils/index-optimization.js 1.62 kB

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

@github-actions
Copy link
Contributor

github-actions bot commented Aug 25, 2025

Size Change: 0 B

Total Size: 1.16 kB

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

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

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Tests in this file were wrong...

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Tests added here fail before we then fix the optimiser

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Even though this is testing the internal of the ir and optimiser i think it's important to check we add the residual flag correctly.

Copy link
Contributor

@kevin-dp kevin-dp left a comment

Choose a reason for hiding this comment

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

Reviewed the changes and everything seems fine. I'm wondering why we needs two versions of the split function though.

@samwillis samwillis requested a review from kevin-dp August 25, 2025 16:08
Copy link
Contributor

@kevin-dp kevin-dp left a comment

Choose a reason for hiding this comment

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

Brill, thanks!

@samwillis samwillis merged commit 79c95a3 into main Aug 26, 2025
9 of 10 checks passed
@samwillis samwillis deleted the samwillis/keep-residule-where-in-join-pushdown branch August 26, 2025 10:25
@github-actions github-actions bot mentioned this pull request Aug 26, 2025
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