forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commit08f1e1f
committed
Make setrefs.c match by ressortgroupref even for plain Vars.
Previously, we skipped using search_indexed_tlist_for_sortgroupref()if the tlist expression being sought in the child plan node was merelya Var. This is purely an optimization, based on the theory thatsearch_indexed_tlist_for_var() is faster, and one copy of a Var shouldbe as good as another. However, the GROUPING SETS patch broke thelatter assumption: grouping columns containing the "same" Var cansometimes have different outputs, as shown in the test case added here.So do it the hard way whenever a ressortgroupref marking exists.(If this seems like a bottleneck, we could imagine building a tlist indexdata structure for ressortgroupref values, as we do for Vars. But I'lllet that idea go until there's some evidence it's worthwhile.)Back-patch to 9.6. The problem also exists in 9.5 where GROUPING SETScame in, but this patch is insufficient to resolve the problem in 9.5:there is some obscure dependency on the upper-planner-pathificationwork that happened in 9.6. Given that this is such a weird corner case,and no end users have complained about it, it doesn't seem worth the workto develop a fix for 9.5.Patch by me, per a report from Heikki Linnakangas. (This does not fixHeikki's original complaint, just the follow-on one.)Discussion:https://postgr.es/m/aefc657e-edb2-64d5-6df1-a0828f6e9104@iki.fi1 parent74d2c0d commit08f1e1f
File tree
3 files changed
+43
-4
lines changed- src
- backend/optimizer/plan
- test/regress
- expected
- sql
3 files changed
+43
-4
lines changedLines changed: 3 additions & 4 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
1744 | 1744 |
| |
1745 | 1745 |
| |
1746 | 1746 |
| |
1747 |
| - | |
1748 |
| - | |
| 1747 | + | |
| 1748 | + | |
1749 | 1749 |
| |
1750 | 1750 |
| |
1751 | 1751 |
| |
| |||
2113 | 2113 |
| |
2114 | 2114 |
| |
2115 | 2115 |
| |
2116 |
| - | |
2117 | 2116 |
| |
2118 | 2117 |
| |
2119 | 2118 |
| |
| |||
2644 | 2643 |
| |
2645 | 2644 |
| |
2646 | 2645 |
| |
2647 |
| - | |
| 2646 | + | |
2648 | 2647 |
| |
2649 | 2648 |
| |
2650 | 2649 |
| |
|
Lines changed: 29 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
360 | 360 |
| |
361 | 361 |
| |
362 | 362 |
| |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
363 | 392 |
| |
364 | 393 |
| |
365 | 394 |
| |
|
Lines changed: 11 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
141 | 141 |
| |
142 | 142 |
| |
143 | 143 |
| |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
144 | 155 |
| |
145 | 156 |
| |
146 | 157 |
| |
|
0 commit comments
Comments
(0)