Re: Variadic aggregates vs. project policy

From: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
To: David Johnston <polobo(at)yahoo(dot)com>
Cc: PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Variadic aggregates vs. project policy
Date: 2013-08-30 14:05:44
Message-ID: CAFj8pRAXZEB6BEDT=EOfsoeQwxwZy19Xu46gY=hMA5fBPcJcag@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

2013/8/30 David Johnston <polobo(at)yahoo(dot)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(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-hackers
>

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2013-08-30 14:13:01 Re: Variadic aggregates vs. project policy
Previous Message David Johnston 2013-08-30 14:02:11 Re: Variadic aggregates vs. project policy