Обсуждение: Increasing the length of a VARCHAR column without table rewrite

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

Increasing the length of a VARCHAR column without table rewrite

От
"Eric Comeau"
Дата:
ALTER TABLE .... ALTER column TYPE varchar(xxx)

We need to increase the length of a varchar(256) column in two of our
largest tables preferrably to TEXT.

Is there a way to do this without having to go through a complete table
rewrite?

I have googled and seen the todo on the wiki, but I'm wondering if we are
increasing the length of a varchar column can we manually modify the system
catalogs to increase the length?

http://wiki.postgresql.org/wiki/Todo#ALTER


Version: PG 8.1.17

Thanks,
Eric




Re: Increasing the length of a VARCHAR column without table rewrite

От
Lewis Kapell
Дата:
Eric,

Is the table in question so large that you can't afford the time it
would take to perform ALTER COLUMN TYPE?

I definitely would not go poking around in system catalogs and changing
things there.  Not unless you *want* to trash your database...  The fact
that 'todo' has not yet been implemented suggests that it is not a
simple matter of changing one attribute in a system catalog.

Lewis


Eric Comeau wrote:
> ALTER TABLE .... ALTER column TYPE varchar(xxx)
>
> We need to increase the length of a varchar(256) column in two of our
> largest tables preferrably to TEXT.
>
> Is there a way to do this without having to go through a complete table
> rewrite?
>
> I have googled and seen the todo on the wiki, but I'm wondering if we are
> increasing the length of a varchar column can we manually modify the system
> catalogs to increase the length?
>
> http://wiki.postgresql.org/wiki/Todo#ALTER
>
>
> Version: PG 8.1.17
>
> Thanks,
> Eric
>
>
>
>


Re: Increasing the length of a VARCHAR column without table rewrite

От
Alvaro Herrera
Дата:
Lewis Kapell wrote:
> Eric,
>
> Is the table in question so large that you can't afford the time it
> would take to perform ALTER COLUMN TYPE?
>
> I definitely would not go poking around in system catalogs and
> changing things there.  Not unless you *want* to trash your
> database...  The fact that 'todo' has not yet been implemented
> suggests that it is not a simple matter of changing one attribute in
> a system catalog.

Well, it is (in this case at least) -- the problem is that we want a
general solution, not one that only applies to the particular problem of
widening a column's max length.

(When playing with this, however, note that the modified table may need
a toast table that may not be there).

--
Alvaro Herrera                                http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.