2013/8/30 David Johnston <pol...@yahoo.com>

> Andres Freund-3 wrote
> > On 2013-08-30 06:34:47 -0700, David Johnston wrote:
> >> Tom Lane-2 wrote
> >> >> I was one who sent a bug report - this error is not too dangerous,
> but
> >> it
> >> >> is hidden, and difficult to find, if you don't know what can be
> >> happen.
> >> >> Same as bug with plpgsql and SQL identifier collisions. If you
> >> >> understand,
> >> >> then you can protect self well and  simply. If not, then it is a
> magic
> >> >> error. So still I am thing so best solution is
> >> >
> >> >> a) a warning when detect ORDER BY in variadic aggregates
> >> >
> >> > Such a warning would never be tolerated by users, because it would
> >> appear
> >> > even when the query is perfectly correct.
> >> >
> >> >> b) disallow ORDER BY in variadic aggregates in classic syntax, and
> >> enable
> >> >> it only in WITHIN GROUP syntax where is safe ,
> >> >
> >> > And we're *not* inventing randomly different syntax for variadic
> >> > aggregates.  That ship sailed when we did it this way for regular
> >> > functions.
> >>
> >> In the example case the problem is that ORDER BY constant is a valid, if
> >> not-very-useful, construct.  Can we warn on this specific usage and thus
> >> mitigate many of the potential avenues of mis-use?
> >
> > That doesn't help against something like »SELECT string_agg(somecol
> > ORDER BY bar, separator)« where separator is a column.
> >
> >> If we alter syntax for mitigation purposes I'd want to consider
> requiring
> >> parentheses around the columns that belong to the ORDER BY instead of
> >> using
> >> the full extended syntax of WITHIN GROUP.
> >
> > I think that ship has sailed. The syntax is there and it's not going
> > away. Requiring different syntaxes for variadic/nonvariadic usages is
> > going to be a way much bigger pitfall for users.
>
> Neither suggestion (nor any suggestion I would imagine) is going to "solve"
> the problem.  The goal is to minimize the size of the exposure.
>
> For the second ORDER BY (col1, col2) suggestion it would be added and
> recommended so those using that syntax would have less to worry about.
>  This
> would apply to ALL invocations, not just variadic.
>

you cannot use this syntax - probably, because (col1, col2) is same as
ROW(col1, col2) and this syntax is supported now. So there is a collision.
I had a same idea, but I don't think so it is possible

Regards

Pavel


>
> David J.
>
>
>
>
>
>
> --
> View this message in context:
> http://postgresql.1045698.n5.nabble.com/Variadic-aggregates-vs-project-policy-tp5768980p5769119.html
> Sent from the PostgreSQL - hackers mailing list archive at Nabble.com.
>
>
> --
> Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-hackers
>

Reply via email to