feat(sql): support IN clauses in streaming SQL - #2495
#2495feat(sql): support IN clauses in streaming SQL#2495NightVibes33 wants to merge 4 commits intogetdozer:maingetdozer/dozer:mainfrom NightVibes33:fix-in-clause-streaming-sqlNightVibes33/dozer:fix-in-clause-streaming-sqlCopy head branch name to clipboard
Conversation
76f7f46 to
28ef863
Compare
28ef863 to
f1ff98b
Compare
|
Coverage update for commit |
|
Coverage update for commit |
|
Coverage update for commit |
/claim #1659
Summary
IN/NOT INlists and mark the expression output nullableINlist streaming semantics for non-matching inserts, false-to-true updates, true-to-true updates, true-to-false updates, and deletesexpr IN (SELECT one_column ...)filters into an inner join against a deduplicated derived subquery, reusing the existing join/set processors instead of adding a parallel membership engineANDpredicates and reject invalid multi-columnINsubqueriesIN,IN (SELECT ...), retained predicates, duplicate inner rows, membership deletes, outer-row updates, and late membership insertsIssue coverage
This covers literal
INlists in selection predicates, including the update/delete behavior described in the issue, and streamingIN (SELECT ...)subqueries with membership semantics.The subquery path rewrites into Dozer's existing streaming inner join plus a deduplicated derived subquery. That keeps runtime behavior aligned with the established join/product pipeline while preventing duplicate right-side rows from duplicating left-side output.
Verification
rustfmt --edition 2021 --check dozer-sql/expression/src/execution.rs dozer-sql/expression/src/in_list.rs dozer-sql/src/builder/mod.rs dozer-sql/src/expression/tests/in_list.rs dozer-sql/src/product/set/set_factory.rs dozer-sql/src/tests/builder_test.rsgit diff --checkgit show --check --stat HEAD