Skip site navigation (1) Skip section navigation (2)

Proposed patch for sequence-renaming problems

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-patches(at)postgreSQL(dot)org
Subject: Proposed patch for sequence-renaming problems
Date: 2005-09-27 22:46:55
Message-ID: (view raw, whole thread or download thread mbox)
Lists: pgsql-hackerspgsql-patches
Attached is a fully-worked-out patch to make SERIAL column default
expressions refer to the target sequence with a "regclass" literal
instead of a "text" literal.  Since the regclass literal is actually
just an OID, it is impervious to renamings and schema changes of
the target sequence.  This fixes the long-standing hazard of renaming
a serial column's sequence, as well as the recently added hazard of
renaming the schema the sequence is in; and it lets us get rid of a
very klugy solution in ALTER TABLE SET SCHEMA.

I've arranged for stored regclass literals to create dependencies on
the referenced relation, which provides useful improvements even for
handwritten defaults: given

	create sequence myseq;
	create table foo (f1 int default nextval('myseq'::regclass));

the system will not allow myseq to be dropped while the default
expression remains.  (This also ensures that pg_dump will emit the
sequence before the table.)

The patch also fixes a couple of places where code was still looking
at the deprecated pg_attrdef.adsrc column, instead of reverse-compiling
pg_attrdef.adbin.  This ensures that psql's \d command shows the
up-to-date form of a column default.  (That should have happened quite
some time ago; not sure why it was overlooked.)

I propose applying this to fix the open issue that ALTER SCHEMA RENAME
breaks serial columns.  Comments, objections?

			regards, tom lane

Attachment: seq-regclass.patch.gz
Description: application/octet-stream (9.0 KB)


pgsql-hackers by date

Next:From: Tom LaneDate: 2005-09-27 22:53:13
Subject: Re: \d on database with a lot of tables is slow
Previous:From: Jim C. NasbyDate: 2005-09-27 22:46:26
Subject: Re: \d on database with a lot of tables is slow

pgsql-patches by date

Next:From: Bruce MomjianDate: 2005-09-27 23:44:20
Subject: Re: Proposed patch for sequence-renaming problems
Previous:From: Martijn van OosterhoutDate: 2005-09-27 17:54:44
Subject: Re: [HACKERS] \x output blowing up

Privacy Policy | About PostgreSQL
Copyright © 1996-2017 The PostgreSQL Global Development Group