(2010/03/03 14:26), Robert Haas wrote:
> 2010/3/2 KaiGai Kohei<kaigai@ak.jp.nec.com>:
>> Is it an expected behavior?
>>
>> postgres=> CREATE SEQUENCE s;
>> CREATE SEQUENCE
>> postgres=> ALTER TABLE s RENAME sequence_name TO abcd;
>> ALTER TABLE
>>
>> postgres=> CREATE TABLE t (a int primary key, b text);
>> NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "t_pkey" for table "t"
>> CREATE TABLE
>> postgres=> ALTER TABLE t_pkey RENAME a TO xyz;
>> ALTER TABLE
>>
>> The documentation says:
>> http://developer.postgresql.org/pgdocs/postgres/sql-altertable.html
>>
>> :
>> RENAME
>> The RENAME forms change the name of a table (or an index, sequence, or view) or
>> the name of an individual column in a table. There is no effect on the stored data.
>>
>> It seems to me the renameatt() should check relkind of the specified relation, and
>> raise an error if relkind != RELKIND_RELATION.
>
> Are we talking about renameatt() or RenameRelation()? Letting
> RenameRelation() rename whatever seems fairly harmless; renameatt(),
> on the other hand, should probably refuse to allow this:
>
> CREATE SEQUENCE foo;
> ALTER TABLE foo RENAME COLUMN is_cycled TO bob;
>
> ...because that's just weird. Tables, indexes, and views make sense,
> but the attributes of a sequence should be nailed down I think;
> they're basically system properties.
I'm talking about renameatt(), not RenameRelation().
If our perspective is these are a type of system properties, we should
be able to reference these attributes with same name, so it is not harmless
to allow renaming these attributes.
I also agree that it makes sense to allow renaming attributes of tables
and views. But I don't know whether it makes sense to allow it on indexs,
like sequence and toast relations.
Thanks,
--
KaiGai Kohei <kaigai@ak.jp.nec.com>