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

Replace placeholders in ScalarSubqueries #5216

Merged
merged 3 commits into from
Feb 8, 2023

Conversation

avantgardnerio
Copy link
Contributor

Which issue does this PR close?

Closes #5215.

Rationale for this change

Described in issue.

What changes are included in this PR?

Replace parameters in scalar subqueries.

Are these changes tested?

With an integration test, yes.

Are there any user-facing changes?

Scalar subqueries with parameters should work.

@avantgardnerio avantgardnerio requested a review from alamb February 7, 2023 18:30
@github-actions github-actions bot added logical-expr Logical plan and expressions sql SQL Planner labels Feb 7, 2023
@avantgardnerio
Copy link
Contributor Author

@NGA-TRAN PTAL as well.

Copy link
Contributor

@alamb alamb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM -- thanks @avantgardnerio !

Ok(Expr::Literal(value.clone()))
} else {
Ok(expr)
Expr::ScalarSubquery(qry) => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

I double checked this recursion doesn't happen automatically during the walk

https://github.com/apache/arrow-datafusion/blob/e222bd627b6e7974133364fed4600d74b4da6811/datafusion/expr/src/expr_rewriter.rs#L132

Though now that I write that, perhaps it should 🤔

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where are you suggesting the recursion goes? self.expressions()? I'm happy to file a new PR to do it a better way...

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was thinking that the recursion into ScalarSubquery would happen as part of the ExprRewriter itself -- aka https://github.com/apache/arrow-datafusion/blob/e222bd627b6e7974133364fed4600d74b4da6811/datafusion/expr/src/expr_rewriter.rs#L132

 Expr::ScalarSubquery(_) => self.clone(), 

Instead of self.clone() it would be something like you have in this PR

 Expr::ScalarSubquery(qry) => self.clone(), 
     let rewritten_subquery = somehow_rewrite_all_exprs_in_query(rewriter)
     Expr::ScalarSubquery(rewritten_subquery)
}

@avantgardnerio avantgardnerio merged commit b4cf60a into apache:master Feb 8, 2023
@avantgardnerio avantgardnerio deleted the bg_subquery_param branch February 8, 2023 15:42
@ursabot
Copy link

ursabot commented Feb 8, 2023

Benchmark runs are scheduled for baseline = f0c6719 and contender = b4cf60a. b4cf60a is a master commit associated with this PR. Results will be available as each benchmark for each run completes.
Conbench compare runs links:
[Skipped ⚠️ Benchmarking of arrow-datafusion-commits is not supported on ec2-t3-xlarge-us-east-2] ec2-t3-xlarge-us-east-2
[Skipped ⚠️ Benchmarking of arrow-datafusion-commits is not supported on test-mac-arm] test-mac-arm
[Skipped ⚠️ Benchmarking of arrow-datafusion-commits is not supported on ursa-i9-9960x] ursa-i9-9960x
[Skipped ⚠️ Benchmarking of arrow-datafusion-commits is not supported on ursa-thinkcentre-m75q] ursa-thinkcentre-m75q
Buildkite builds:
Supported benchmarks:
ec2-t3-xlarge-us-east-2: Supported benchmark langs: Python, R. Runs only benchmarks with cloud = True
test-mac-arm: Supported benchmark langs: C++, Python, R
ursa-i9-9960x: Supported benchmark langs: Python, R, JavaScript
ursa-thinkcentre-m75q: Supported benchmark langs: C++, Java

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
logical-expr Logical plan and expressions sql SQL Planner
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Placeholder values are not replaced in ScalarSubqueries
3 participants