Peter Eisentraut <peter_e@gmx.net> writes:
>>>> They are all correct: UNDER is the new SQL99 syntax, INHERITS is the
>>>> traditional Postgres syntax.
>>
>> Current docs do appear to be erroneous: they claim the UNDER phrase goes
>> where INHERIT does, which is not what the grammar thinks. I haven't
>> looked at SQL99 to see which is right.
> The grammar appears to be correct to the extent that SQL99 wants the UNDER
> before the column list, so I corrected the documentation at that point.
> However, the syntax as a whole is not SQL99-compliant.
Hmm. After looking at the SQL99 syntax, it seems that what we've done
with our grammar is to take the old INHERITS functionality and plaster
a vaguely-SQL-like syntax on it. I have to wonder whether this is a
good idea. I think it'll get in the way when and if we want to offer
true SQL99 UNDER behavior, which is only marginally related to INHERITS.
(In particular, SQL99 seems to want an explicit specification of the
structured type that's being inherited.)
I am strongly inclined to rip out the pseudo-UNDER clause and support
only the old-style INHERITS syntax for 7.1. UNDER is adding no
functionality and I think we will eventually regret using an SQL keyword
for non-SQL semantics.
Comments?
regards, tom lane