Re: alter column from varchar(32) to varchar(255) without view re-creation

Поиск
Список
Период
Сортировка
От Emi Lu
Тема Re: alter column from varchar(32) to varchar(255) without view re-creation
Дата
Msg-id 4A0C6405.20609@encs.concordia.ca
обсуждение исходный текст
Ответ на Re: alter column from varchar(32) to varchar(255) without view re-creation  (Emi Lu <emilu@encs.concordia.ca>)
Список pgsql-sql
Emi Lu wrote:
>>> PostgreSQL 8.0.15.
>>> Is there a way that I can easily alter column type from varchar(32) to
>>> varchar(255) but do not have to worry about views dependent on it?
> 
>> You should test it carefully and it is considered a bad practice -
>> I'll probably get sued for recommending this :-), but you may try:
>>
>> SELECT * from pg_attribute where attname = 'colname' and  attrelid =
>> (SELECT oid FROM pg_class WHERE relname='_tablename');
>>
>> UPDATE pg_attribute set atttypmod = 4+_new_length_in_your_case_255
>> where attrelid = _attrelid_from_above_ and attname = 'colname';

Tried this, it worked for table but not view.

E.g.,
====================================================
T1(col1 varchar(64)... );
create view v1 as select * from T1;


update pg_attribute set atttypmod = 4+ 128 where ....
\d T1   col1  varchar(128) ============== [OK]

\d v1   col1  varchar(64)  ============== [did not change?]

So, it does not really update all dependencies?

Thanks a lot!

--
Lu Ying






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

Предыдущее
От: Rob Sargent
Дата:
Сообщение: Re: update from join
Следующее
От: Rob Sargent
Дата:
Сообщение: Extrapolating performance expectation