I decided to play a bit with 8.3-b4. I did a fresh install from source,
fresh initdb, and created a single test table (about 700K rows) to play
with in-core FTS:
> Welcome to psql 8.3beta4, the PostgreSQL interactive terminal.
>
> hannes=> \d fts
> Table "public.fts"
> Column | Type | Modifiers
> --------+----------+--------------------------------------------------
> id | integer | not null default nextval('fts_id_seq'::regclass)
> text | text | not null
> tsv | tsvector |
> Indexes:
> "pk_fts" PRIMARY KEY, btree (id)
>
>
> hannes=> CREATE INDEX CONCURRENTLY "ts_fts_tsv" ON "public"."fts" USING gin ("tsv");
> ERROR: item pointer (0,1) alreadt exists
I was able to reproduce that error a few times, but not always. It seems
it only happens with CONCURRENTLY.
After creating a GIST index instead of GIN I tried to cluster on that:
> hannes=> CLUSTER fts USING ts_fts_tsv;
> ERROR: could not create unique index "pk_fts"
> DETAIL: Table contains duplicated values.
So duplicate values in my PK column?
> hannes=> SET enable_indexscan = off;
> SET
> hannes=>
> hannes=> SELECT
> hannes-> f.id,
> hannes-> COUNT(f.id)
> hannes-> FROM
> hannes-> public.fts f
> hannes-> GROUP BY
> hannes-> f.id
> hannes-> HAVING
> hannes-> COUNT(f.id) > 1;
> id | count
> ----+-------
> (0 rows)
Where are they?
I'm a bit short of time and will probably not find time to debug this
further until next weekend, sorry.
--
Best regards,
Hannes Dorbath