forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commit74dae41
committed
Fix two latent(?) bugs in equivclass.c.
get_eclass_for_sort_expr() computes expr_relids and nullable_relidsearly on, even though they won't be needed unless we make a newEquivalenceClass, which we often don't. Aside from the probably-minorinefficiency, there's a memory management problem: these bitmapsets willbe built in the caller's context, leading to dangling pointers if thatis shorter-lived than root->planner_cxt. This would be a live bug ifget_eclass_for_sort_expr() could be called with create_it = true duringGEQO join planning. So far as I can find, the core code never doesthat, but it's hard to be sure that no extensions do, especially sincethe comments make it clear that that's supposed to be a supported case.Fix by not computing these values until we've switched into planner_cxtto build the new EquivalenceClass.generate_join_implied_equalities() uses inner_rel->relids to look uprelevant eclasses, but it ought to be using nominal_inner_relids.This is presently harmless because a child RelOptInfo will always haveexactly the same eclass_indexes as its topmost parent; but that mightnot be true forever, and anyway it makes the code confusing.The first of these is old (introduced by me inf3b3b8d), so back-patchto all supported branches. The second only dates to v13, but we mightas well back-patch it to keep the code looking similar across branches.Discussion:https://postgr.es/m/1508010.1601832581@sss.pgh.pa.us1 parentdb7c7b8 commit74dae41
1 file changed
+6
-6
lines changedLines changed: 6 additions & 6 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
600 | 600 |
| |
601 | 601 |
| |
602 | 602 |
| |
603 |
| - | |
604 |
| - | |
605 |
| - | |
606 |
| - | |
607 |
| - | |
608 |
| - | |
609 | 603 |
| |
610 | 604 |
| |
611 | 605 |
| |
| |||
682 | 676 |
| |
683 | 677 |
| |
684 | 678 |
| |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
685 | 685 |
| |
686 | 686 |
| |
687 | 687 |
| |
|
0 commit comments
Comments
(0)