Search Postgresql Archives

Re: Weird behaviour of ROLLUP/GROUPING

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Le mer. 16 janv. 2019 à 17:40, Andrew Gierth <andrew@xxxxxxxxxxxxxxxxxxxx> a écrit :
>>>>> "Andrew" == Andrew Gierth <andrew@xxxxxxxxxxxxxxxxxxxx> writes:
>>>>> "Guillaume" == Guillaume Lelarge <guillaume@xxxxxxxxxxxx> writes:

 Guillaume> CASE grouping(to_char(b, 'MMYYYY'))

 Guillaume> ERROR:  arguments to GROUPING must be grouping expressions of the
 Guillaume> associated query level
 Guillaume> LINE 3: CASE grouping(to_char(b, 'MMYYYY')) WHEN 1 THEN 'some date' ...

 Guillaume> AFAICT, both queries should behave the same, though their
 Guillaume> actual behaviours are quite opposite. Working fine for the
 Guillaume> first, erroring out on the second.

 Guillaume> Does anyone has any idea what's going on here?

 Andrew> Not yet. But I will find out, since it seems to be a bug.

It is definitely a bug, to do with assignment of collations. It
specifically happens when you use GROUPING which contains any
subexpression of a collatable type, inside a CASE expr WHEN clause,
since that assigns collations to the _expression_ much earlier in parsing
than the rest of the query, so the code that validates GROUPING ends up
trying to compare an _expression_ which has had collations assigned to it
to one which has not, and so it thinks they differ.

I will see about fixing this, somehow.


Thanks a lot.


--
Guillaume.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux