>>>>> "Tom" == Tom Lane <t...@sss.pgh.pa.us> 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 (pgsql-hackers@postgresql.org)
To make changes to your subscription:

Reply via email to