Lists: | pgsql-admin |
---|
From: | Keaton Adams <kadams(at)mxlogic(dot)com> |
---|---|
To: | pgsql-admin(at)postgresql(dot)org |
Subject: | ALTER TABLE - ALTER COLUMN question |
Date: | 2007-05-29 20:42:13 |
Message-ID: | 1180471333.19986.13.camel@MXLRMT-208.corp.mxlogic.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-admin |
When I issue an alter table ..... alter column command, the table
contents are copied from the old structure to the new, correct? So I
need 2x the table space available so the old and new tables can exist at
the same time? PostgreSQL doesn't use an in-place alter-table for these
types of changes, correct?
In this example the created and msg_datetime columns are currently
defined as TIMESTAMP WITHOUT TIME ZONE and no default. If the alter
table for these changes is not in-place then I would want to run it as a
single alter with all of the changes, such as this, instead of
individual alters for each change, correct? (Because each individual
alter would require another table copy?)
ALTER TABLE my_table ALTER COLUMN created TYPE TIMESTAMP WITH TIME
ZONE,
ALTER COLUMN created SET DEFAULT ('now'::text)::TIMESTAMP(6) WITH
TIME ZONE,
ALTER COLUMN msg_datetime TYPE TIMESTAMP WITH TIME ZONE,
ALTER COLUMN msg_datetime SET DEFAULT ('now'::text)::TIMESTAMP(6) WITH
TIME ZONE;
Thanks,
Keaton
From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | kadams(at)mxlogic(dot)com |
Cc: | pgsql-admin(at)postgresql(dot)org |
Subject: | Re: ALTER TABLE - ALTER COLUMN question |
Date: | 2007-05-29 21:16:59 |
Message-ID: | 17811.1180473419@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-admin |
Keaton Adams <kadams(at)mxlogic(dot)com> writes:
> In this example the created and msg_datetime columns are currently
> defined as TIMESTAMP WITHOUT TIME ZONE and no default. If the alter
> table for these changes is not in-place then I would want to run it as a
> single alter with all of the changes, such as this, instead of
> individual alters for each change, correct? (Because each individual
> alter would require another table copy?)
That's why ALTER TABLE has the ability to do more than one thing in
parallel ...
regards, tom lane
From: | Keaton Adams <kadams(at)mxlogic(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | pgsql-admin(at)postgresql(dot)org |
Subject: | Re: ALTER TABLE - ALTER COLUMN question |
Date: | 2007-05-29 21:19:59 |
Message-ID: | 1180473599.19986.15.camel@MXLRMT-208.corp.mxlogic.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-admin |
After I sent my request I found the notes related to ALTER TABLE on page
1,331 of the 8.1 manual, so that helped to explain it. Your reply to my
post confirmed what I thought I was reading.
Thanks for the reply,
Keaton
On Tue, 2007-05-29 at 17:16 -0400, Tom Lane wrote:
> Keaton Adams <kadams(at)mxlogic(dot)com> writes:
> > In this example the created and msg_datetime columns are currently
> > defined as TIMESTAMP WITHOUT TIME ZONE and no default. If the alter
> > table for these changes is not in-place then I would want to run it as a
> > single alter with all of the changes, such as this, instead of
> > individual alters for each change, correct? (Because each individual
> > alter would require another table copy?)
>
> That's why ALTER TABLE has the ability to do more than one thing in
> parallel ...
>
> regards, tom lane