Re: [BUGS] Running queries on inherited tables
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Michael Richards <miker@scifair.acadiau.ca>
Cc: pgsql-sql@postgreSQL.org, pgsql-bugs@postgreSQL.org
Date: 1999-09-13T00:00:10Z
Lists: pgsql-bugs
Michael Richards <miker@scifair.acadiau.ca> writes: > On Sun, 12 Sep 1999, Tom Lane wrote: >> You have to say "alter table cities*", I believe, otherwise only cities >> is changed. Which is pretty broken --- if inheritance means anything, >> then it ought to mean that the alteration is *inherently* applied to all >> the child tables too, and you shouldn't have the option. > Would this be a simple change in parsing the statement to see if it has > any children and translate the statement accordingly? Yes, I think it would be a reasonably localized change, assuming that no one objected. (I suppose somewhere out there is someone who thinks the current behavior is a good idea ;-).) >> (mostly from Chris Bitmead, I think). ALTER TABLE really needs a >> reimplementation from the ground up, but I dunno when anyone will get > Considering how often Alter table is used, would it be reasonable to rip > out all the alter table code and just have it do a select into;drop;rename That would be a good route to a reimplementation, actually. Want to have a go at it? > Of course I wouldn't want to do this on a 5Gb table... There's probably not much choice. The current implementation avoids touching the data at all, but that is precisely the source of most of its bugs and limitations. I think most of the cases that we currently can't handle would involve changing all the tuples, and at that point select-into-a-new-table is probably really the preferred technique compared to trying to do it in-place. (In-place, you'd have to do a VACUUM to get back the extra 5Gb after the transformation is done, since you surely don't want to overwrite the old tuples before commit.) regards, tom lane