[Data] Fix broken LogicalOperator abstraction barrier in projection pushdown rule#58683
Merged
bveeramani merged 1 commit intomasterfrom Nov 17, 2025
Merged
[Data] Fix broken LogicalOperator abstraction barrier in projection pushdown rule#58683bveeramani merged 1 commit intomasterfrom
LogicalOperator abstraction barrier in projection pushdown rule#58683bveeramani merged 1 commit intomasterfrom
Conversation
Signed-off-by: Balaji Veeramani <bveeramani@berkeley.edu>
Contributor
There was a problem hiding this comment.
Code Review
This pull request correctly refactors the projection pushdown rule to respect the LogicalOperator abstraction barrier. By replacing direct access to the private _cached_output_metadata.schema attribute with a call to the public infer_schema() method, the code becomes more robust and maintainable. This change aligns with good object-oriented design principles and reduces the risk of future breakage due to internal implementation changes. The fix is clean, targeted, and I approve of the change.
LogicalOperator abstraction barrier in predication pushdown ruleLogicalOperator abstraction barrier in projection pushdown rule
goutamvenkat-anyscale
approved these changes
Nov 17, 2025
Aydin-ab
pushed a commit
to Aydin-ab/ray-aydin
that referenced
this pull request
Nov 19, 2025
…n pushdown rule (ray-project#58683) ## Description The projection pushdown rule was directly accessing `_cached_output_metadata.schema`, which breaks abstraction barriers by reaching into private implementation details. This violates encapsulation and makes the code fragile to internal changes. This PR fixes the issue by using the proper `infer_schema()` method instead, which provides a clean public interface for accessing schema information. This respects the operator's abstraction and ensures we get the correct schema through the intended API. ## Additional information The change is in `projection_pushdown.py:342` where we now call `input_op.infer_schema()` instead of directly accessing `input_op._cached_output_metadata.schema`. Signed-off-by: Balaji Veeramani <bveeramani@berkeley.edu> Signed-off-by: Aydin Abiar <aydin@anyscale.com>
wxwmd
pushed a commit
to wxwmd/ray
that referenced
this pull request
Nov 24, 2025
…n pushdown rule (ray-project#58683) ## Description The projection pushdown rule was directly accessing `_cached_output_metadata.schema`, which breaks abstraction barriers by reaching into private implementation details. This violates encapsulation and makes the code fragile to internal changes. This PR fixes the issue by using the proper `infer_schema()` method instead, which provides a clean public interface for accessing schema information. This respects the operator's abstraction and ensures we get the correct schema through the intended API. ## Additional information The change is in `projection_pushdown.py:342` where we now call `input_op.infer_schema()` instead of directly accessing `input_op._cached_output_metadata.schema`. Signed-off-by: Balaji Veeramani <bveeramani@berkeley.edu> Signed-off-by: xiaowen.wxw <wxw403883@alibaba-inc.com>
ykdojo
pushed a commit
to ykdojo/ray
that referenced
this pull request
Nov 27, 2025
…n pushdown rule (ray-project#58683) ## Description The projection pushdown rule was directly accessing `_cached_output_metadata.schema`, which breaks abstraction barriers by reaching into private implementation details. This violates encapsulation and makes the code fragile to internal changes. This PR fixes the issue by using the proper `infer_schema()` method instead, which provides a clean public interface for accessing schema information. This respects the operator's abstraction and ensures we get the correct schema through the intended API. ## Additional information The change is in `projection_pushdown.py:342` where we now call `input_op.infer_schema()` instead of directly accessing `input_op._cached_output_metadata.schema`. Signed-off-by: Balaji Veeramani <bveeramani@berkeley.edu> Signed-off-by: YK <1811651+ykdojo@users.noreply.github.com>
SheldonTsen
pushed a commit
to SheldonTsen/ray
that referenced
this pull request
Dec 1, 2025
…n pushdown rule (ray-project#58683) ## Description The projection pushdown rule was directly accessing `_cached_output_metadata.schema`, which breaks abstraction barriers by reaching into private implementation details. This violates encapsulation and makes the code fragile to internal changes. This PR fixes the issue by using the proper `infer_schema()` method instead, which provides a clean public interface for accessing schema information. This respects the operator's abstraction and ensures we get the correct schema through the intended API. ## Additional information The change is in `projection_pushdown.py:342` where we now call `input_op.infer_schema()` instead of directly accessing `input_op._cached_output_metadata.schema`. Signed-off-by: Balaji Veeramani <bveeramani@berkeley.edu>
Future-Outlier
pushed a commit
to Future-Outlier/ray
that referenced
this pull request
Dec 7, 2025
…n pushdown rule (ray-project#58683) ## Description The projection pushdown rule was directly accessing `_cached_output_metadata.schema`, which breaks abstraction barriers by reaching into private implementation details. This violates encapsulation and makes the code fragile to internal changes. This PR fixes the issue by using the proper `infer_schema()` method instead, which provides a clean public interface for accessing schema information. This respects the operator's abstraction and ensures we get the correct schema through the intended API. ## Additional information The change is in `projection_pushdown.py:342` where we now call `input_op.infer_schema()` instead of directly accessing `input_op._cached_output_metadata.schema`. Signed-off-by: Balaji Veeramani <bveeramani@berkeley.edu> Signed-off-by: Future-Outlier <eric901201@gmail.com>
peterxcli
pushed a commit
to peterxcli/ray
that referenced
this pull request
Feb 25, 2026
…n pushdown rule (ray-project#58683) ## Description The projection pushdown rule was directly accessing `_cached_output_metadata.schema`, which breaks abstraction barriers by reaching into private implementation details. This violates encapsulation and makes the code fragile to internal changes. This PR fixes the issue by using the proper `infer_schema()` method instead, which provides a clean public interface for accessing schema information. This respects the operator's abstraction and ensures we get the correct schema through the intended API. ## Additional information The change is in `projection_pushdown.py:342` where we now call `input_op.infer_schema()` instead of directly accessing `input_op._cached_output_metadata.schema`. Signed-off-by: Balaji Veeramani <bveeramani@berkeley.edu> Signed-off-by: peterxcli <peterxcli@gmail.com>
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.
Description
The projection pushdown rule was directly accessing
_cached_output_metadata.schema, which breaks abstraction barriers by reaching into private implementation details. This violates encapsulation and makes the code fragile to internal changes.This PR fixes the issue by using the proper
infer_schema()method instead, which provides a clean public interface for accessing schema information. This respects the operator's abstraction and ensures we get the correct schema through the intended API.Additional information
The change is in
projection_pushdown.py:342where we now callinput_op.infer_schema()instead of directly accessinginput_op._cached_output_metadata.schema.