refactor(rust): Remove duplicated code for expression output order resolution #24605
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.
The pushdown/pullup stages of expression order resolution currently exist as 2 separate functions with duplicate logic. This is not ideal, as it causes duplication of expression order rules, some of which can be extremely complex.
This PR eliminates one of the codepaths, making it so that we use a single codepath for both.
Detail
The intuition is that you can achieve the effect of
is_output_ordered()
by simply callingget_observable_orders()
(renamed fromget_frame_observing
) with the output ordering ofColumn(_)
nodes set toO::Independent
/O::None
instead ofO::Frame
. This effectively disables theErr(FrameOrderObserved)
short-circuiting, ensuring that the result will always beOk(observable_orders)
.