-
Notifications
You must be signed in to change notification settings - Fork 3.7k
[fix](expr) refractor create_tree_from_thrift to avoid stack overflow #18214
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
Conversation
…ent stack overflow
|
run buildall |
|
clang-tidy review says "All clean, LGTM! 👍" |
|
clang-tidy review says "All clean, LGTM! 👍" |
|
run buildall |
yangzhg
left a comment
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
|
PR approved by at least one committer and no changes requested. |
|
PR approved by anyone and no changes requested. |
|
run buildall |
|
clang-tidy review says "All clean, LGTM! 👍" |
yangzhg
left a comment
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
Proposed changes
Issue Number: close #18036
Problem summary
Big depth of expression tree make BE stack overflow.
In pr(#17314) we already try to limit the depth of expression tree.
Unfortunately pr(#17314) limit the depth in prepare stage, we already stack overflow in init stage, because of recursive call of create_tree_from_thrift.
So we refractor create_tree_from_thrift use non-recursive traversal, to prevent stack overflow.
How to reproduce it in master?
We should set
rewrite_or_to_in_predicate_thresholdto a large value before reproduce like issure (#18036)Checklist(Required)
Further comments
If this is a relatively large or complex change, kick off the discussion at dev@doris.apache.org by explaining why you chose the solution you did and what alternatives you considered, etc...