-
Notifications
You must be signed in to change notification settings - Fork 3.8k
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
release-22.1: opt: fixup CTE stats on placeholder queries #100455
Conversation
Thanks for opening a backport. Please check the backport criteria before merging:
If some of the basic criteria cannot be satisfied, ensure that the exceptional criteria are satisfied within.
Add a brief release justification to the body of your PR to justify this backport. Some other things to consider:
|
During optbuilder phase we copy the initial expressions stats into the fake-rel but this value can change when placeholders are assigned so add code in AssignPlaceholders to rebuild the cte if the stats change. Fixes: cockroachdb#99389 Epic: none Release note (sql change): Prepared statements using placeholders in recursive CTEs sometimes did not re-optimize correctly after plugging in the parameters leading to poor plan choices, this has been fixed.
0cd7857
to
5fa8491
Compare
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.
Reviewed 4 of 4 files at r1, all commit messages.
Reviewable status: complete! 1 of 0 LGTMs obtained (waiting on @cucaroach)
The only think I'm kind of concerned about this this question from blathers: "What did we do to ensure that a user that doesn’t know & care about this backport, has no idea that it happened?" Stats changes can cause unexpected plan changes even if they are a clear improvement in the general case. Do you think we need a session setting? I'm willing to be convinced we don't, but just want to make sure we thought about it.... |
Good point! I offer only these weak arguments:
|
Yea, if there's no customer depending on this in 22.1 maybe we can just skip the backport altogether for now? We can always reopen it if needed. Thanks! |
Closing, per discussion, if customer needs this they can change app to not use placeholders or upgrade to 22.2. |
Backport 1/1 commits from #100327.
/cc @cockroachdb/release
Backport 1/1 commits from #99433.
/cc @cockroachdb/release
During optbuilder phase we copy the initial expressions stats into the
fake-rel but this value can change when placeholders are assigned so add
code in AssignPlaceholders to rebuild the cte if the stats change.
Fixes: #99389
Epic: none
Release note: none