Обсуждение: Making a varchar bigger

Поиск
Список
Период
Сортировка

Making a varchar bigger

От
Derik Barclay
Дата:
Hello Group,

I've run into a bit of a problem, I have a varchar(6) field that I now need to
have as a varchar(12).

I am relatively new to postgres and am unsure how best to do this. What I
would like to do is alter the meta-data directly. Change the value of
atttypmod in pg_attribute directly. Initial tests look good, however I am
unsure how safe this is. Or what else needs to be done? does it need to be
re-indexed?

I have looked at the sections on renaming/changing columns, though this is
more a solid an option, I am dealing with millions of records and the
downtime for the backfill is not acceptable.

I found some old post in here hinting at doing this, however the links in them
are now dead.

--
Givex - http://www.givex.com/
Derik Barclay <dbarclay@givex.com>, Systems Software Engineer
+1 416 350 9660
+1 416 250 9661 (fax)

Re: Making a varchar bigger

От
Derik Barclay
Дата:
Specificaly I am looking at executing something like this:

UPDATE pg_attribute SET atttypmod = 16 where attname = 'x' AND attrelid =
(select pg_class.oid from pg_class where relname = 'mytable');

On December 23, 2004 05:13 pm, Derik Barclay wrote:
> Hello Group,
>
> I've run into a bit of a problem, I have a varchar(6) field that I now need
> to have as a varchar(12).
>
> I am relatively new to postgres and am unsure how best to do this. What I
> would like to do is alter the meta-data directly. Change the value of
> atttypmod in pg_attribute directly. Initial tests look good, however I am
> unsure how safe this is. Or what else needs to be done? does it need to be
> re-indexed?
>
> I have looked at the sections on renaming/changing columns, though this is
> more a solid an option, I am dealing with millions of records and the
> downtime for the backfill is not acceptable.
>
> I found some old post in here hinting at doing this, however the links in
> them are now dead.

--
Givex - http://www.givex.com/
Derik Barclay <dbarclay@givex.com>, Systems Software Engineer
+1 416 350 9660
+1 416 250 9661 (fax)

Re: Making a varchar bigger

От
Tom Lane
Дата:
Derik Barclay <dbarclay@givex.com> writes:
> Specificaly I am looking at executing something like this:
> UPDATE pg_attribute SET atttypmod = 16 where attname = 'x' AND attrelid =
> (select pg_class.oid from pg_class where relname = 'mytable');

If you have any indexes or views referencing this column, then it's a
bit harder.  But for the table itself I believe that will work.

            regards, tom lane

Re: Making a varchar bigger

От
Derik Barclay
Дата:
It is combined with another field to form an index.
Does that mean a re-indexing will be required? or are there other issues?

On December 30, 2004 11:03 pm, Tom Lane wrote:
> Derik Barclay <dbarclay@givex.com> writes:
> > Specificaly I am looking at executing something like this:
> > UPDATE pg_attribute SET atttypmod = 16 where attname = 'x' AND attrelid =
> > (select pg_class.oid from pg_class where relname = 'mytable');
>
> If you have any indexes or views referencing this column, then it's a
> bit harder.  But for the table itself I believe that will work.
>
>    regards, tom lane

--
Givex - http://www.givex.com/
Derik Barclay <dbarclay@givex.com>, Systems Software Engineer
+1 416 350 9660
+1 416 250 9661 (fax)

Re: Making a varchar bigger

От
Tom Lane
Дата:
Derik Barclay <dbarclay@givex.com> writes:
> On December 30, 2004 11:03 pm, Tom Lane wrote:
>> If you have any indexes or views referencing this column, then it's a
>> bit harder.  But for the table itself I believe that will work.

> It is combined with another field to form an index.
> Does that mean a re-indexing will be required? or are there other issues?

No, I'm just thinking you should update atttypmod for the index column.

            regards, tom lane