Re: Keyword classifications

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-hackers(at)postgresql(dot)org
Subject: Re: Keyword classifications
Date: 2016-01-01 19:06:06
Message-ID: 3858.1451675166@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

I wrote:
> Now, one line of thought here is that flatten_reloptions() is out of its
> mind to not be worrying about quoting the reloption values. And perhaps
> it is, but I think if we go that direction, we may be fighting similar
> fires for awhile to come. psql's describe.c, for example, doesn't worry
> about quoting anything when printing reloptions, and there's likely
> similar code in third-party clients. Also, a solution like this would
> do nothing for existing dump files.

> The other line of thought is that we're already making an effort to allow
> any keyword to appear as the value of a def_arg, and maybe we should try
> to make that work 100% instead of only 90%.

After further thought I believe that the right thing to do is pursue both
these lines of attack. Adding quoting in flatten_reloptions() seems like
a safely back-patchable fix for the original complaint, and it's really
necessary anyway for reloption values that don't look like either an
identifier or a number. The grammar allows any arbitrary string constant
to be the original form of a reloption, and we have no good reason to
assume that extension modules will constrain their custom reloptions to
be one or the other. (I'm thinking we'd better be prepared to
double-quote the option names, too, just in case.)

The grammar fixes seem like a good thing to do in the long run, too,
but there's little need to risk back-patching it since accepting
col_name_keywords without quoting would be mostly a convenience issue.

regards, tom lane

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Simon Riggs 2016-01-02 00:50:15 WIP: Failover Slots
Previous Message Neil Tiffin 2016-01-01 18:23:50 Re: strange behaviour of psql \e command