On 3/13/15 6:48 AM, Robert Haas wrote:
> On Wed, Mar 11, 2015 at 5:36 PM, Jim Nasby <Jim.Nasby@bluetreble.com> wrote:
>> The thing is, ()s are actually an odd-duck. Very little supports it, and
>> while COPY allows it they're not required. EXPLAIN is a different story,
>> because that's not WITH; we're actually using () *instead of* WITH.
>
> Generally, I think the commands that don't have () are the older ones,
> and those that do have it are the newer ones: EXPLAIN, VERBOSE, the
> newest of our three COPY syntaxes, CREATE MATERIALIZED VIEW, foreign
> data wrappers, servers, and foreign tables. The older stuff like
> CREATE DATABASE and REINDEX that uses ad-hoc syntax instead is a real
> pain in the neck: every time you want to add an option, you've got to
> add new parser rules and keywords, which is bad for the overall
> efficiency of parsing. So I think this argument is exactly backwards:
> parenthesized options are the newer, better way to do this sort of
> thing.
Yeah, that doesn't sound like a good tradeoff compared to making people
type some extra ()s. :(
We should at least support ()s on the other commands though, so that
we're consistent.
--
Jim Nasby, Data Architect, Blue Treble Consulting
Data in Trouble? Get it in Treble! http://BlueTreble.com