"Yury Don" <yura@vpcit.ru> writes:
> mdb=# create table tmp (id integer not null primary key, t tsvector, i
> integer);
> CREATE TABLE
> mdb=# insert into tmp values (1, 'word', 66);
> INSERT 0 1
> mdb=# create index tmp_idx on tmp using gin (t, i);
> CREATE INDEX
> mdb=# insert into tmp values (2, 'word', 86);
> INSERT 0 1
> mdb=# set enable_seqscan to off;
> mdb=# select * from tmp where t @@ 'word' and i =66;
> id | t | i
> ----+--------+----
> 1 | 'word' | 66
> 2 | 'word' | 86
> (2 rows)
Ick. I can reproduce this here using CVS HEAD, and I notice that
it starts to give the right answer after "VACUUM tmp". I infer that
what is broken is the checks of tuples in the pending-insert list.
I don't have time to look closer right now --- Oleg, Teodor, can you
look at this?
(In the meantime, you can probably work around it by disabling
fastupdate on these indexes.)
regards, tom lane