-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
Replace placeholders in ScalarSubqueries #5216
Conversation
@NGA-TRAN PTAL as well. |
There was a problem hiding this 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) => { |
There was a problem hiding this comment.
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
Though now that I write that, perhaps it should 🤔
There was a problem hiding this comment.
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...
There was a problem hiding this comment.
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)
}
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. |
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.