>>>>> "Tom" == Tom Lane <tgl@sss.pgh.pa.us> writes:
Tom> 2. For an ordered set function, n must equal aggnfixedargs. WeTom> treat all n fixed arguments as contributing to
theaggregate'sTom> 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
admittedlyis>> 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 behaviorTom> that multiple ORDER BY items aren't
constrainedto have the sameTom> collation; at least not without some rule that amounts to aTom> 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)