Hi

I checked this patch, and it working very well

I found only two issue - I am not sure if it is issue

with data from https://wiki.postgresql.org/wiki/Grouping_Sets

postgres=# select name, place, sum(count), grouping(name), grouping(place)
from cars group by rollup(name, place);
 name  |   place    |  sum  | grouping | grouping
-------+------------+-------+----------+----------
 bmw   | czech rep. |   100 |        0 |        0
 bmw   | germany    |  1000 |        0 |        0
 bmw   |            |  1100 |        0 |        1
 opel  | czech rep. |  7000 |        0 |        0
 opel  | germany    |  7000 |        0 |        0
 opel  |            | 14000 |        0 |        1
 skoda | czech rep. | 10000 |        0 |        0
 skoda | germany    |  5000 |        0 |        0
 skoda |            | 15000 |        0 |        1
       |            | 30100 |        1 |        1
(10 rows)

* redundant sets should be ignored

postgres=# select name, place, sum(count), grouping(name), grouping(place)
from cars group by rollup(name, place), name;
 name  |   place    |  sum  | grouping | grouping
-------+------------+-------+----------+----------
 bmw   | czech rep. |   100 |        0 |        0
 bmw   | germany    |  1000 |        0 |        0
 bmw   |            |  1100 |        0 |        1
 bmw   |            |  1100 |        0 |        1
 opel  | czech rep. |  7000 |        0 |        0
 opel  | germany    |  7000 |        0 |        0
 opel  |            | 14000 |        0 |        1
 opel  |            | 14000 |        0 |        1
 skoda | czech rep. | 10000 |        0 |        0
 skoda | germany    |  5000 |        0 |        0
 skoda |            | 15000 |        0 |        1
 skoda |            | 15000 |        0 |        1
(12 rows)

It duplicate rows

postgres=# explain select name, place, sum(count), grouping(name),
grouping(place) from cars group by rollup(name, place), name;
                               QUERY PLAN
------------------------------------------------------------------------
 GroupAggregate  (cost=10000000001.14..10000000001.38 rows=18 width=68)
   Grouping Sets: (name, place), (name), (name)
   ->  Sort  (cost=10000000001.14..10000000001.15 rows=6 width=68)
         Sort Key: name, place
         ->  Seq Scan on cars  (cost=0.00..1.06 rows=6 width=68)
 Planning time: 0.235 ms
(6 rows)

postgres=# select name, place, sum(count), grouping(name), grouping(place)
from cars group by grouping sets((name, place), (name), (name),(place), ());
 name  |   place    |  sum  | grouping | grouping
-------+------------+-------+----------+----------
 bmw   | czech rep. |   100 |        0 |        0
 bmw   | germany    |  1000 |        0 |        0
 bmw   |            |  1100 |        0 |        1
 bmw   |            |  1100 |        0 |        1
 opel  | czech rep. |  7000 |        0 |        0
 opel  | germany    |  7000 |        0 |        0
 opel  |            | 14000 |        0 |        1
 opel  |            | 14000 |        0 |        1
 skoda | czech rep. | 10000 |        0 |        0
 skoda | germany    |  5000 |        0 |        0
 skoda |            | 15000 |        0 |        1
 skoda |            | 15000 |        0 |        1
       |            | 30100 |        1 |        1
       | czech rep. | 17100 |        1 |        0
       | germany    | 13000 |        1 |        0
(15 rows)

Fantastic work

Regards

Pavel




2014-08-25 7:21 GMT+02:00 Andrew Gierth <and...@tao11.riddles.org.uk>:

> Here is the new version of our grouping sets patch. This version
> supersedes the previous post.
>
> We believe the functionality of this version to be substantially
> complete, providing all the standard grouping set features except T434
> (GROUP BY DISTINCT).  (Additional tweaks, such as extra variants on
> GROUPING(), could be added for compatibility with other databases.)
>
> Since the debate regarding reserved keywords has not produced any
> useful answer, the main patch here makes CUBE and ROLLUP into
> col_name_reserved keywords, but a separate small patch is attached to
> make them unreserved_keywords instead.
>
> So there are now 5 files:
>
> gsp1.patch         - phase 1 code patch (full syntax, limited
> functionality)
> gsp2.patch         - phase 2 code patch (adds full functionality using the
>                      new chained aggregate mechanism)
> gsp-doc.patch      - docs
> gsp-contrib.patch  - quote "cube" in contrib/cube and
> contrib/earthdistance,
>                      intended primarily for testing pending a decision on
>                      renaming contrib/cube or unreserving keywords
> gsp-u.patch        - proposed method to unreserve CUBE and ROLLUP
>
> --
> Andrew (irc:RhodiumToad)
>
>
>
> --
> Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-hackers
>
>

Reply via email to