forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commitbe45be9
committed
Implement GROUP BY DISTINCT
With grouping sets, it's possible that some of the grouping sets areduplicate. This is especially common with CUBE and ROLLUP clauses. Forexample GROUP BY CUBE (a,b), CUBE (b,c) is equivalent to GROUP BY GROUPING SETS ( (a, b, c), (a, b, c), (a, b, c), (a, b), (a, b), (a, b), (a), (a), (a), (c, a), (c, a), (c, a), (c), (b, c), (b), () )Some of the grouping sets are calculated multiple times, which is mostlyunnecessary. This commit implements a new GROUP BY DISTINCT feature, asdefined in the SQL standard, which eliminates the duplicate sets.Author: Vik FearingReviewed-by: Erik Rijkers, Georgios Kokolatos, Tomas VondraDiscussion:https://postgr.es/m/bf3805a8-d7d1-ae61-fece-761b7ff41ecc@postgresfriends.org1 parentcd91de0 commitbe45be9
File tree
18 files changed
+333
-27
lines changed- doc/src/sgml
- ref
- src
- backend
- catalog
- nodes
- optimizer/plan
- parser
- utils/adt
- include
- nodes
- parser
- test/regress
- expected
- sql
18 files changed
+333
-27
lines changedLines changed: 54 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
1372 | 1372 |
| |
1373 | 1373 |
| |
1374 | 1374 |
| |
| 1375 | + | |
| 1376 | + | |
| 1377 | + | |
| 1378 | + | |
| 1379 | + | |
| 1380 | + | |
| 1381 | + | |
| 1382 | + | |
| 1383 | + | |
| 1384 | + | |
| 1385 | + | |
| 1386 | + | |
| 1387 | + | |
| 1388 | + | |
| 1389 | + | |
| 1390 | + | |
| 1391 | + | |
| 1392 | + | |
| 1393 | + | |
| 1394 | + | |
| 1395 | + | |
| 1396 | + | |
| 1397 | + | |
| 1398 | + | |
| 1399 | + | |
| 1400 | + | |
| 1401 | + | |
| 1402 | + | |
| 1403 | + | |
| 1404 | + | |
| 1405 | + | |
| 1406 | + | |
| 1407 | + | |
| 1408 | + | |
| 1409 | + | |
| 1410 | + | |
| 1411 | + | |
| 1412 | + | |
| 1413 | + | |
| 1414 | + | |
| 1415 | + | |
| 1416 | + | |
| 1417 | + | |
| 1418 | + | |
| 1419 | + | |
| 1420 | + | |
| 1421 | + | |
| 1422 | + | |
| 1423 | + | |
1375 | 1424 |
| |
1376 | 1425 |
| |
1377 | 1426 |
| |
| |||
1560 | 1609 |
| |
1561 | 1610 |
| |
1562 | 1611 |
| |
| 1612 | + | |
| 1613 | + | |
| 1614 | + | |
| 1615 | + | |
1563 | 1616 |
| |
1564 | 1617 |
| |
| 1618 | + | |
1565 | 1619 |
| |
1566 | 1620 |
| |
1567 | 1621 |
| |
|
Lines changed: 6 additions & 3 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
37 | 37 |
| |
38 | 38 |
| |
39 | 39 |
| |
40 |
| - | |
| 40 | + | |
41 | 41 |
| |
42 | 42 |
| |
43 | 43 |
| |
| |||
778 | 778 |
| |
779 | 779 |
| |
780 | 780 |
| |
781 |
| - | |
| 781 | + | |
782 | 782 |
| |
783 | 783 |
| |
784 | 784 |
| |
| |||
802 | 802 |
| |
803 | 803 |
| |
804 | 804 |
| |
805 |
| - | |
| 805 | + | |
| 806 | + | |
| 807 | + | |
| 808 | + | |
806 | 809 |
| |
807 | 810 |
| |
808 | 811 |
| |
|
Lines changed: 1 addition & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
482 | 482 |
| |
483 | 483 |
| |
484 | 484 |
| |
485 |
| - | |
| 485 | + | |
486 | 486 |
| |
487 | 487 |
| |
488 | 488 |
| |
|
Lines changed: 2 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
3135 | 3135 |
| |
3136 | 3136 |
| |
3137 | 3137 |
| |
| 3138 | + | |
3138 | 3139 |
| |
3139 | 3140 |
| |
3140 | 3141 |
| |
| |||
3221 | 3222 |
| |
3222 | 3223 |
| |
3223 | 3224 |
| |
| 3225 | + | |
3224 | 3226 |
| |
3225 | 3227 |
| |
3226 | 3228 |
| |
|
Lines changed: 2 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
977 | 977 |
| |
978 | 978 |
| |
979 | 979 |
| |
| 980 | + | |
980 | 981 |
| |
981 | 982 |
| |
982 | 983 |
| |
| |||
1053 | 1054 |
| |
1054 | 1055 |
| |
1055 | 1056 |
| |
| 1057 | + | |
1056 | 1058 |
| |
1057 | 1059 |
| |
1058 | 1060 |
| |
|
Lines changed: 16 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
1506 | 1506 |
| |
1507 | 1507 |
| |
1508 | 1508 |
| |
| 1509 | + | |
| 1510 | + | |
| 1511 | + | |
| 1512 | + | |
| 1513 | + | |
| 1514 | + | |
| 1515 | + | |
| 1516 | + | |
| 1517 | + | |
| 1518 | + | |
| 1519 | + | |
| 1520 | + | |
| 1521 | + | |
| 1522 | + | |
| 1523 | + | |
| 1524 | + | |
1509 | 1525 |
| |
1510 | 1526 |
| |
1511 | 1527 |
| |
|
Lines changed: 2 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
2771 | 2771 |
| |
2772 | 2772 |
| |
2773 | 2773 |
| |
| 2774 | + | |
2774 | 2775 |
| |
2775 | 2776 |
| |
2776 | 2777 |
| |
| |||
2996 | 2997 |
| |
2997 | 2998 |
| |
2998 | 2999 |
| |
| 3000 | + | |
2999 | 3001 |
| |
3000 | 3002 |
| |
3001 | 3003 |
| |
|
Lines changed: 1 addition & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
271 | 271 |
| |
272 | 272 |
| |
273 | 273 |
| |
| 274 | + | |
274 | 275 |
| |
275 | 276 |
| |
276 | 277 |
| |
|
Lines changed: 1 addition & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
2442 | 2442 |
| |
2443 | 2443 |
| |
2444 | 2444 |
| |
2445 |
| - | |
| 2445 | + | |
2446 | 2446 |
| |
2447 | 2447 |
| |
2448 | 2448 |
| |
|
Lines changed: 1 addition & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
1264 | 1264 |
| |
1265 | 1265 |
| |
1266 | 1266 |
| |
| 1267 | + | |
1267 | 1268 |
| |
1268 | 1269 |
| |
1269 | 1270 |
| |
|
Lines changed: 42 additions & 17 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
134 | 134 |
| |
135 | 135 |
| |
136 | 136 |
| |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
137 | 144 |
| |
138 | 145 |
| |
139 | 146 |
| |
| |||
250 | 257 |
| |
251 | 258 |
| |
252 | 259 |
| |
| 260 | + | |
| 261 | + | |
253 | 262 |
| |
254 | 263 |
| |
255 | 264 |
| |
| |||
405 | 414 |
| |
406 | 415 |
| |
407 | 416 |
| |
408 |
| - | |
| 417 | + | |
409 | 418 |
| |
410 | 419 |
| |
411 | 420 |
| |
| |||
418 | 427 |
| |
419 | 428 |
| |
420 | 429 |
| |
| 430 | + | |
421 | 431 |
| |
422 | 432 |
| |
423 | 433 |
| |
| |||
443 | 453 |
| |
444 | 454 |
| |
445 | 455 |
| |
446 |
| - | |
| 456 | + | |
447 | 457 |
| |
448 | 458 |
| |
449 | 459 |
| |
| |||
11294 | 11304 |
| |
11295 | 11305 |
| |
11296 | 11306 |
| |
11297 |
| - | |
| 11307 | + | |
| 11308 | + | |
11298 | 11309 |
| |
11299 | 11310 |
| |
11300 | 11311 |
| |
| |||
11309 | 11320 |
| |
11310 | 11321 |
| |
11311 | 11322 |
| |
11312 |
| - | |
| 11323 | + | |
| 11324 | + | |
11313 | 11325 |
| |
11314 | 11326 |
| |
11315 | 11327 |
| |
| |||
11334 | 11346 |
| |
11335 | 11347 |
| |
11336 | 11348 |
| |
11337 |
| - | |
| 11349 | + | |
11338 | 11350 |
| |
11339 |
| - | |
| 11351 | + | |
11340 | 11352 |
| |
11341 |
| - | |
| 11353 | + | |
11342 | 11354 |
| |
11343 |
| - | |
| 11355 | + | |
11344 | 11356 |
| |
11345 |
| - | |
| 11357 | + | |
11346 | 11358 |
| |
11347 |
| - | |
| 11359 | + | |
11348 | 11360 |
| |
11349 | 11361 |
| |
11350 | 11362 |
| |
| |||
11542 | 11554 |
| |
11543 | 11555 |
| |
11544 | 11556 |
| |
11545 |
| - | |
11546 |
| - | |
11547 |
| - | |
11548 |
| - | |
| 11557 | + | |
| 11558 | + | |
| 11559 | + | |
| 11560 | + | |
11549 | 11561 |
| |
11550 | 11562 |
| |
11551 | 11563 |
| |
| |||
11771 | 11783 |
| |
11772 | 11784 |
| |
11773 | 11785 |
| |
11774 |
| - | |
11775 |
| - | |
| 11786 | + | |
| 11787 | + | |
| 11788 | + | |
| 11789 | + | |
| 11790 | + | |
| 11791 | + | |
| 11792 | + | |
| 11793 | + | |
| 11794 | + | |
| 11795 | + | |
| 11796 | + | |
| 11797 | + | |
| 11798 | + | |
| 11799 | + | |
11776 | 11800 |
| |
11777 | 11801 |
| |
11778 | 11802 |
| |
| |||
15145 | 15169 |
| |
15146 | 15170 |
| |
15147 | 15171 |
| |
15148 |
| - | |
| 15172 | + | |
| 15173 | + | |
15149 | 15174 |
| |
15150 | 15175 |
| |
15151 | 15176 |
| |
|
0 commit comments
Comments
(0)