| From: | Emi Lu <emilu(at)encs(dot)concordia(dot)ca> |
|---|---|
| To: | pgsql-sql(at)postgresql(dot)org |
| Cc: | Marcin Stępnicki <mstepnicki(at)gmail(dot)com> |
| Subject: | Re: alter column from varchar(32) to varchar(255) without view re-creation |
| Date: | 2009-05-14 18:33:41 |
| Message-ID: | 4A0C6405.20609@encs.concordia.ca |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | 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
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Rob Sargent | 2009-05-18 04:04:46 | Extrapolating performance expectation |
| Previous Message | Rob Sargent | 2009-05-14 15:44:02 | Re: update from join |