Honor |=> captures on composite THEN / IF / LOOP nodes#163
Merged
Conversation
Copilot
AI
changed the title
[WIP] Fix silent dropping of name in composite nodes with capture operator
Honor May 23, 2026
|=> captures on composite THEN / IF / LOOP nodes
Agent-Logs-Url: https://github.com/microsoft/pg_durable/sessions/463a5788-1ad3-4da6-b9a8-761a3c8a82fb Co-authored-by: pinodeca <32303022+pinodeca@users.noreply.github.com>
4acff1b to
78df040
Compare
Contributor
|
Reviewed with GPT-5.5 in GitHub Copilot. No blocking findings. The composite-node capture change looks consistent with existing named-result handling for JOIN/RACE/HTTP/SIGNAL, and the rebase conflict in Validated locally: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
|=>/df.as()could bind to a composite node because PostgreSQL operators are left-associative, but composite executors were not writing their final value into the named-results map. That made downstream$namereferences fail at runtime even though the capture appeared to succeed.Runtime behavior
THENstore the right-hand result whenresult_nameis set.IFstore the selected branch result whenresult_nameis set.LOOPstore its terminal result, includingdf.break(...)values, whenresult_nameis set.Regression coverage
|=> 'decision'binds to the outerTHENnode and the captured value is referenced in a downstreamdf.if(...).IFnode directly and using$decision.*downstream.LOOPnode directly and consuming the loop’s final JSON result downstream.Result
|=>: the final computed result is available for later substitution under the requested name.Example: