>>>>> "Tom" == Tom Lane <[email protected]> writes:
Tom> 2. For an ordered set function, n must equal aggnfixedargs. We
Tom> treat all n fixed arguments as contributing to the aggregate's
Tom> result collation, but ignore the sort arguments.
>> That doesn't work for getting a sensible collation out of
>> percentile_disc applied to a collatable type. (Which admittedly is
>> an extension to the spec, which allows only numeric and interval,
>> but it seems to me to be worth having.)
Tom> Meh. I don't think you can have that and also have the behavior
Tom> that multiple ORDER BY items aren't constrained to have the same
Tom> collation; at least not without some rule that amounts to a
Tom> special case for percentile_disc, which I'd resist.
What the submitted patch does (as discussed in the comment in
parse_collate) is to treat the sort argument as contributing to the
collation only if there is exactly one sort arg.
Consider a construct like:
select max(common_val)
from (select mode() within group (order by textcol) as common_val
from ... group by othercol) s;
(the same arguments for percentile_disc also apply to mode() and to
any other ordered set function that returns a value chosen from its
input sorted set)
Having this sort of thing not preserve the collation of textcol (or
fail) would be, IMO, surprising and undesirable.
--
Andrew (irc:RhodiumToad)
--
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers