Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SPARK-48693][SQL] Simplify and unify toString of Invoke and StaticInvoke #47066

Closed
wants to merge 10 commits into from

Conversation

yaooqinn
Copy link
Member

What changes were proposed in this pull request?

The StaticInvoke class is used extensively by RuntimeReplacable expressions, due to its ugly string representation, a plan with multiple or nested StaticInvoke is hard to read.

This PR overrides StaticInvoke's toString method to improve its readability.

 Project [left(c7#x, 2) AS left(c7, 2)#x, left(c8#x, 2) AS left(c8, 2)#x, left(v#x, 3) AS left(v, 3)#x, left(s#x, 2) AS left(s, 2)#x]
 +- SubqueryAlias spark_catalog.default.char_tbl4
-   +- Project [staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, c7#x, 7, tru
e, false, true) AS c7#x, staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, c8#
x, 8, true, false, true) AS c8#x, v#x, s#x]
+   +- Project [static_invoke(CharVarcharCodegenUtils.readSidePadding(c7#x, 7)) AS c7#x, static_invoke(CharVarcharCodegenUtils.readSideP
adding(c8#x, 8)) AS c8#x, v#x, s#x]

In contrast, the Invoke's toString is overly simple, losing its child's string representations.

Why are the changes needed?

improve plan readability and consistency

Does this PR introduce any user-facing change?

Yes, a plan containing StaticInvoke will change its string representation.

How was this patch tested?

existing modified tests

Was this patch authored or co-authored using generative AI tooling?

no

@yaooqinn yaooqinn marked this pull request as draft June 24, 2024 05:30
@github-actions github-actions bot added the SQL label Jun 24, 2024
@yaooqinn yaooqinn marked this pull request as ready for review June 24, 2024 10:47
@yaooqinn
Copy link
Member Author

@yaooqinn yaooqinn closed this in 8c4ca7e Jun 25, 2024
@yaooqinn yaooqinn deleted the SPARK-48693 branch June 25, 2024 10:36
@yaooqinn
Copy link
Member Author

Merged to master, thank you all.

attilapiros pushed a commit to attilapiros/spark that referenced this pull request Oct 4, 2024
…voke

### What changes were proposed in this pull request?

The `StaticInvoke` class is used extensively by `RuntimeReplacable` expressions, due to its ugly string representation, a plan with multiple or nested `StaticInvoke` is hard to read.

This PR overrides `StaticInvoke`'s toString method to improve its readability.

```diff
 Project [left(c7#x, 2) AS left(c7, 2)#x, left(c8#x, 2) AS left(c8, 2)#x, left(v#x, 3) AS left(v, 3)#x, left(s#x, 2) AS left(s, 2)#x]
 +- SubqueryAlias spark_catalog.default.char_tbl4
-   +- Project [staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, c7#x, 7, tru
e, false, true) AS c7#x, staticinvoke(class org.apache.spark.sql.catalyst.util.CharVarcharCodegenUtils, StringType, readSidePadding, c8#
x, 8, true, false, true) AS c8#x, v#x, s#x]
+   +- Project [static_invoke(CharVarcharCodegenUtils.readSidePadding(c7#x, 7)) AS c7#x, static_invoke(CharVarcharCodegenUtils.readSideP
adding(c8#x, 8)) AS c8#x, v#x, s#x]
```

In contrast, the `Invoke`'s toString is overly simple, losing its child's string representations.

### Why are the changes needed?

improve plan readability and consistency

### Does this PR introduce _any_ user-facing change?

Yes, a plan containing `StaticInvoke` will change its string representation.

### How was this patch tested?

existing modified tests

### Was this patch authored or co-authored using generative AI tooling?

no

Closes apache#47066 from yaooqinn/SPARK-48693.

Authored-by: Kent Yao <[email protected]>
Signed-off-by: Kent Yao <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants