2017-04-22 11:30 GMT+02:00 Simon Riggs <si...@2ndquadrant.com>:

> On 21 April 2017 at 01:21, Tomas Vondra <tomas.von...@2ndquadrant.com>
> wrote:
> > On 04/21/2017 12:13 AM, Tom Lane wrote:
> >>
> >> Alvaro Herrera <alvhe...@2ndquadrant.com> writes:
> >>>
> >>> Simon just pointed out that having the WITH clause appear in the middle
> >>> of the CREATE STATISTICS command looks odd; apparently somebody else
> >>> already complained on list about the same.  Other commands put the WITH
> >>> clause at the end, so perhaps we should do likewise in the new command.
> >>
> >>
> >>> Here's a patch to implement that.  I verified that if I change
> >>> qualified_name to qualified_name_list, bison does not complain about
> >>> conflicts, so this new syntax should support extension to multiple
> >>> relations without a problem.
> >>
> >>
> >> Yeah, WITH is fully reserved, so as long as the clause looks like
> >> WITH ( stuff... ) you're pretty much gonna be able to drop it
> >> wherever you want.
> >>
> >>> Discuss.
> >>
> >>
> >> +1 for WITH at the end; the existing syntax looks weird to me too.
> >>
> >
> > -1 from me
> >
> > I like the current syntax more, and  WHERE ... WITH seems a bit weird to
> me.
> > But more importantly, one thing Dean probably considered when proposing
> the
> > current syntax was that we may add support for partial statistics, pretty
> > much like partial indexes. And we don't allow WITH at the end (after
> WHERE)
> > for indexes:
> >
> > test=# create index on t (a) where a < 100 with (fillfactor=10);
> > ERROR:  syntax error at or near "with"
> > LINE 1: create index on t (a) where a < 100 with (fillfactor=10);
> >                                             ^
> > test=# create index on t (a) with (fillfactor=10) where a < 100;
>
> OK, didn't know about WHERE clause; makes sense.
>
> Currently WITH is supported in two places, which feels definitely
> wrong. The WITH clause is used elsewhere to provide optional
> parameters, and if there are none present it is optional.
>
> OK, so lets try...
>
> 1.
> No keyword at all, just list of statistics we store (i.e. just lose the
> WITH)
> CREATE STATISTICS s1 (dependencies, ndistinct) ON (a, b) FROM t1 WHERE
> partial-stuff;
>
> and if there are options, use the WITH for the optional parameters like
> this
> CREATE STATISTICS s1 (dependencies, ndistinct) WITH (options) ON (a,
> b) FROM t1 WHERE partial-stuff;
>
> 2.
> USING keyword, no brackets
> CREATE STATISTICS s1 USING (dependencies, ndistinct) ON (a, b) FROM t1
> WHERE partial-stuff;
>
> and if there are options, use the WITH for the optional parameters like
> this
> CREATE STATISTICS s1 USING (dependencies, ndistinct) WITH (options) ON
> (a, b) FROM t1 WHERE partial-stuff;
>
>
> I think I like (2)
>

+1

Regards

Pavel


>
> --
> Simon Riggs                http://www.2ndQuadrant.com/
> PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
>
>
> --
> 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