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 по дате отправления: