Andreas Seltenreich <[email protected]> writes:
> the following statement triggers an assertion in tsearch:
> select ts_delete(array_to_tsvector('{smith,smith,smith}'::text[]),
> '{smith,smith}'::text[]);
> -- TRAP: FailedAssertion("!(k == indices_count)", File: "tsvector_op.c",
> Line: 511)
Confirmed here. I notice that the output of array_to_tsvector() is
already fishy in this example:
regression=# select array_to_tsvector('{smith,smith,smith}'::text[]);
array_to_tsvector
-------------------------
'smith' 'smith' 'smith'
(1 row)
Shouldn't those have been merged together? You certainly don't get
results like that from other tsvector-producing operations:
regression=# select to_tsvector('smith smith smith');
to_tsvector
---------------
'smith':1,2,3
(1 row)
regression=# select 'smith smith smith'::tsvector;
tsvector
----------
'smith'
(1 row)
However, that does not seem to be the proximate cause of the crash
in ts_delete, because this non-duplicated case still crashes:
select ts_delete(array_to_tsvector('{smith,smithx,smithy}'::text[]),
'{smith,smith}'::text[]);
It kinda looks like you need more than one deletion request for
the first entry in the sorted tsvector, because for example
{smith,foo,toolbox} works but not {smith,too,toolbox}.
I'm thinking there are two distinct bugs here.
regards, tom lane
--
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers