Re: BUG #10316: Alter table rename fails if the "new name" starts with '_'

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: BUG #10316: Alter table rename fails if the "new name" starts with '_'
Дата
Msg-id 1488.1400090330@sss.pgh.pa.us
обсуждение исходный текст
Ответ на BUG #10316: Alter table rename fails if the "new name" starts with '_'  (parthibanp2@gmail.com)
Список pgsql-bugs
parthibanp2@gmail.com writes:
> -- I have created one new table with name t1

> test=# \d
> No relations found.
> test=# create table t1 (name varchar(10));
> CREATE TABLE

> -- After that i tried to rename 't1' table as '_t1', now the Postgres server
> saying '_t1' is already exists. i'm sure there is no other table in the
> database other than 't1'.

> test=# alter table t1 rename to _t1;
> ERROR:  type "_t1" already exists

Note it's saying *type* _t1 already exists.  This is the internal name
of the type t1[], that is, arrays of the rowtype of t1.  In general,
our convention for the internal name of an array type is to prepend
a _ to the name of its element type.  (There's some logic to choose
a different name if this name is already taken, but that doesn't help
you when it's the array type that got there first.)

> -- Now i renaming table from 't1' to '__t1' and again i renaming from '__t1'
> to '_t1' now its working.

You could have renamed to anything else and then back to _t1; the trick is
just that the table's rowtype and array type have to get renamed out of
the way first.  By and large, though, it's probably best to avoid using
table names that begin with an underscore in PG, since you'll tend to
hit this kind of conflict with rowtype names if you do that.

            regards, tom lane

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

Предыдущее
От: Tim Channell
Дата:
Сообщение: Re: BUG #10315: Transactions seem to be releasing locks early?
Следующее
От: David G Johnston
Дата:
Сообщение: Re: BUG #10315: Transactions seem to be releasing locks early?