Re: ALTER TABLE can NOT use set (OIDS=true)

Поиск
Список
Период
Сортировка
От David G. Johnston
Тема Re: ALTER TABLE can NOT use set (OIDS=true)
Дата
Msg-id CAKFQuwYkS3cr+hB=vPVdYPmLuuTsoNwx3v-C+zvtJ0hsYW-aQw@mail.gmail.com
обсуждение исходный текст
Ответ на ALTER TABLE can NOT use set (OIDS=true)  (自己 <zoulx1982@163.com>)
Список pgsql-bugs
On Thu, May 19, 2016 at 2:47 AM, =E8=87=AA=E5=B7=B1 <zoulx1982@163.com> wro=
te:

> Hi,
>     I create a table, and then i want to add oid column, but only can use
> "set with oids", not use "set (oids =3D true)"
>     while create table support both. Is this a problem?
>
>     Here is is my testcase, thank you.
> postgres=3D# create table x(a int) with(oids =3D false);
> CREATE TABLE
> postgres=3D# alter table x set(fillfactor =3D 90);
> ALTER TABLE
> postgres=3D# alter table x set (oids =3D true);
> ERROR:  unrecognized parameter "oids"
> postgres=3D#
> postgres=3D# alter table x set with oids;
> ALTER TABLE
> postgres=3D#
>

=E2=80=8BNot according to the documentation.

http://www.postgresql.org/docs/current/static/sql-altertable.html

The specific difference you are encountering, is that the "SET ( ... )"
syntax is strictly limited to storage parameters.  The presence or absence
of OIDs is not considered a storage parameter.

ALTER TABLE:
SET WITH OIDS
SET WITHOUT OIDS
=E2=80=8BSET ( storage_parameter =3D value [, ... ] )

CREATE TABLE:
[ WITH ( storage_parameter [=3D value] [, ... ] ) | WITH OIDS | WITHOUT OID=
S ]

While this may not be an example of consistency it is correctly documented
and fails quickly when done incorrectly.  It doesn't seem worth improving
simply for the sake of consistency - and I suspect that we our choice of
syntax is largely or completely guided by the SQL standard.

David J.

В списке pgsql-bugs по дате отправления:

Предыдущее
От: virendra@idyllic-software.com
Дата:
Сообщение: BUG #14150: Attempted to delete invisible tuple
Следующее
От: Tom Lane
Дата:
Сообщение: Re: BUG #14149: when use LATERAL functions with IMMUTABLE called multiple times