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.