On Thu, 6 Mar 2003, Bruce Momjian wrote:
> Tom Lane wrote:
> > Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > > Tom Lane wrote:
> > >> Personally I'm not sold on the sensefulness of the TODO item to begin
> > >> with.
> >
> > > The current code just drops any index that inludes the dropped column,
> > > even if the column is the second column in a multi-column index. Does
> > > that seem OK to you?
> >
> > What's wrong with it? Any unique constraint the index might have
> > carried is no longer interesting, so there's no semantic reason for
> > treating the index as an independent object. And queries that might
> > have referenced the column aren't going to work anymore, so the query
> > mix changes and hence the index setup will really need rethinking anyhow.
>
> I do see the confusion argument, but I also see cases where folks are
> losing the use of an index for single-column lookups. Others?
If I had table x:
create table dev (major int,minor int
);
and I CREATEd UNIQUE INDEX ON dev(major,minor), and then dropped col
minor, postgresql would silently create a new index on dev(major), or even
worse, use the existing index which has satellite data haunting from
minor? That would really be strange.
What if I noticed that I need to change type of b to int8 in the early
design stages? I drop col b and then add again col b with type int8, and
CREATE new UNIQUE INDEX ON dev(major, minor). Perhaps I don't even notice
that I have (redundant) index still on major, which only eats CPU time and
disk space.
--
Antti Haapala