On Wed, Mar 7, 2012 at 11:45 AM, Mike Blackwell <mike.blackwell@rrd.com> wrote:
>
> works for me -- what version are you on?
>
> merlin
>
> ------
>
> [wcs1459@aclnx-cisp01 ~]$ psql --version
> psql (PostgreSQL) 9.1.1
> contains support for command-line editing
>
>
> [wcs1459@aclnx-cisp01 ~]$ cat x
> create table a (
> id serial,
> stuff text,
> more_stuff text
> );
>
> create table a_audit (
> id serial,
> a_old a,
> a_new a
> );
>
> alter table a add column even_more_stuff boolean not null default false;
>
>
> [wcs1459@aclnx-cisp01 ~]$ psql -f x
> psql:x:5: NOTICE: CREATE TABLE will create implicit sequence "a_id_seq" for
> serial column "a.id"
> CREATE TABLE
> psql:x:11: NOTICE: CREATE TABLE will create implicit sequence
> "a_audit_id_seq" for serial column "a_audit.id"
> CREATE TABLE
> psql:x:13: ERROR: cannot alter table "a" because column "a_audit.a_new"
> uses its row type
aha! that's not what you posted last time. you appended 'not null
default false'; which inexplicably breaks the ALTER.
try this:
ALTER TABLE a ADD COLUMN even_more_stuff text not null;
ALTER TABLE a ALTER even_more_stuff set default false;
ALTER TABLE a DROP COLUMN even_more_stuff;
ALTER TABLE a ADD COLUMN even_more_stuff boolean not null default false;
(this really looks like a bug in postgres, cc-ing to bugs)
merlin