note about syntax for fillfactor patch

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-hackers(at)postgreSQL(dot)org
Subject: note about syntax for fillfactor patch
Date: 2006-07-02 16:06:48
Message-ID: 11822.1151856408@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

I see that the just-applied fillfactor patch has changed the syntax
for CREATE TABLE to replace

OptWithOids:
WITH OIDS { $$ = MUST_HAVE_OIDS; }
| WITHOUT OIDS { $$ = MUST_NOT_HAVE_OIDS; }
| /*EMPTY*/ { $$ = DEFAULT_OIDS; }
;

with

OptWith:
WITH OIDS { $$ = list_make1(defWithOids(true)); }
| WITHOUT OIDS { $$ = list_make1(defWithOids(false)); }
| WITH definition { $$ = $2; }
| WITH OIDS WITH definition { $$ = lappend($4, defWithOids(true)); }
| WITHOUT OIDS WITH definition { $$ = lappend($4, defWithOids(false)); }
| /*EMPTY*/ { $$ = NIL; }
;

The latter seems seriously grotty: it forces the user to remember an
arbitrary choice about the order in which the two WITHs can be written,
and using the same WITH keyword to introduce two different things seems
ugly. However, the implementation is such that OIDS can also be
specified in the "definition" option list:

regression=# create table foot(f1 int) with (oids, fillfactor);
CREATE TABLE
regression=# create table foot0(f1 int) with (oids=0, fillfactor);
CREATE TABLE
regression=# select relname,relhasoids from pg_class order by oid desc limit 2;
relname | relhasoids
---------+------------
foot0 | f
foot | t
(2 rows)

regression=#

(hm, I wonder why it's not complaining about the bogus fillfactor
specification...)

I propose that we change the syntax to be

WITH OIDS
| WITHOUT OIDS
| WITH (definition)
| /*EMPTY*/

and say that if you want to specify both OIDS and another option you
have to write "oids" or "oids=false" in the definition list.

This gets rid of the hazard that someone might try to specify
conflicting oids options in the hardwired part of the syntax and
in the definition list, and lets the hardwired syntax be deprecated
and perhaps someday removed.

Any objections?

regards, tom lane

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruce Momjian 2006-07-02 16:23:39 Re: ADD/DROPS INHERIT (actually INHERIT / NO INHERIT)
Previous Message Karsten Hilbert 2006-07-02 10:37:20 Re: different sort order in windows and linux version