Commit da53be2
committed
Repair logic for reordering grouping sets optimization.
The logic in reorder_grouping_sets to order grouping set elements to
match a pre-specified sort ordering was defective, resulting in
unnecessary sort nodes (though the query output would still be
correct). Repair, simplifying the code a little, and add a test.
Per report from Richard Guo, though I didn't use their patch. Original
bug seems to have been my fault.
Backpatch back to 9.5 where grouping sets were introduced.
Discussion: https://postgr.es/m/CAN_9JTzyjGcUjiBHxLsgqfk7PkdLGXiM=pwM+=ph2LsWw0WO1A@mail.gmail.com1 parent c000a47 commit da53be2
File tree
3 files changed
+34
-21
lines changed- src
- backend/optimizer/plan
- test/regress
- expected
- sql
3 files changed
+34
-21
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3530 | 3530 | | |
3531 | 3531 | | |
3532 | 3532 | | |
3533 | | - | |
3534 | 3533 | | |
3535 | 3534 | | |
3536 | 3535 | | |
| |||
3540 | 3539 | | |
3541 | 3540 | | |
3542 | 3541 | | |
3543 | | - | |
| 3542 | + | |
| 3543 | + | |
3544 | 3544 | | |
3545 | | - | |
3546 | | - | |
3547 | | - | |
3548 | | - | |
| 3545 | + | |
| 3546 | + | |
3549 | 3547 | | |
3550 | | - | |
3551 | | - | |
3552 | | - | |
3553 | | - | |
3554 | | - | |
3555 | | - | |
3556 | | - | |
3557 | | - | |
3558 | | - | |
3559 | | - | |
3560 | | - | |
| 3548 | + | |
| 3549 | + | |
| 3550 | + | |
| 3551 | + | |
3561 | 3552 | | |
3562 | | - | |
3563 | | - | |
| 3553 | + | |
3564 | 3554 | | |
3565 | | - | |
| 3555 | + | |
| 3556 | + | |
| 3557 | + | |
3566 | 3558 | | |
3567 | 3559 | | |
3568 | 3560 | | |
| 3561 | + | |
| 3562 | + | |
| 3563 | + | |
| 3564 | + | |
| 3565 | + | |
| 3566 | + | |
3569 | 3567 | | |
3570 | 3568 | | |
3571 | | - | |
3572 | 3569 | | |
3573 | 3570 | | |
3574 | 3571 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
637 | 637 | | |
638 | 638 | | |
639 | 639 | | |
| 640 | + | |
| 641 | + | |
| 642 | + | |
| 643 | + | |
| 644 | + | |
| 645 | + | |
| 646 | + | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
640 | 653 | | |
641 | 654 | | |
642 | 655 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
213 | 213 | | |
214 | 214 | | |
215 | 215 | | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
216 | 219 | | |
217 | 220 | | |
218 | 221 | | |
| |||
0 commit comments