Thread: Creating indeces on existing tables...

Creating indeces on existing tables...

From
"Steve Wolfe"
Date:
  OK, one of my tables was getting duplicate entries, and I thought I'd
create a unique index on a particular field.  So, I created the index:


domains=# create unique index idx_domain_name on domain (domain_name);
CREATE

Then, tried a vaccum:

domains=# vacuum analyze;
NOTICE:  Index idx_domain_name: NUMBER OF INDEX' TUPLES (305) IS NOT THE
SAME AS HEAP' (311).
        Recreate the index.
VACUUM

  Huh?  So, I dropped the index, did a vacuum analyze, recreated the index,
tried a vacuum, same thing.

  So, I did a pg_dump, edited the dump file to create the index with the
table, and dropped/restored the database.  It worked, but I'm puzzled why
the origianal attempt didn't work.  It's Postgres 7.0.2.

steve



Re: Creating indeces on existing tables...

From
Hiroshi Inoue
Date:
Steve Wolfe wrote:
>
>   OK, one of my tables was getting duplicate entries, and I thought I'd
> create a unique index on a particular field.  So, I created the index:
>
> domains=# create unique index idx_domain_name on domain (domain_name);
> CREATE
>
> Then, tried a vaccum:
>
> domains=# vacuum analyze;
> NOTICE:  Index idx_domain_name: NUMBER OF INDEX' TUPLES (305) IS NOT THE
> SAME AS HEAP' (311).
>         Recreate the index.
> VACUUM
>

This is a known bug.
Probably there's a long transaction somewhere.
It is fixed in 7.1.

Regards,
Hiroshi Inoue