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
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 |