Thread: BUG #5561: Tsearch across schemas

BUG #5561: Tsearch across schemas

From
"Satish Kumar"
Date:
The following bug has been logged online:

Bug reference:      5561
Logged by:          Satish Kumar
Email address:      satish.kumar@icasework.com
PostgreSQL version: 8.2
Operating system:   Ubuntu 9.04
Description:        Tsearch across schemas
Details:

Hi,

We decided to use gist text search on two columns in our database (both on
different tables) and hence decided we required the tsearch2.sql
functionalities. We ran tsearch2.sql and create index across 5 schemas.

CREATE INDEX case_attributes_text ON case_attributes USING gist
(to_tsvector(value));

CREATE INDEX appl_categories_cat1 ON appl_categories USING gist
(to_tsvector(category1));

Thing seems to work fine until we encounter an occasion error message when
running our application and trying to insert into the appl_categories or
case_attributes table.

SEVERE: org.postgresql.util.PSQLException: ERROR: No tsearch cfg with id
698563
org.postgresql.util.PSQLException: ERROR: No tsearch cfg with id 698563

On further investigation we found out the OID 698563 was on pg_ts_cfg table
of a different schema.

Is there a known issue where even though we are passing in the right
search_path to point to the right schema, the index might fail to look into
the right schema for updating itself?

Regards,

Satish
iCasework Ltd.

Re: BUG #5561: Tsearch across schemas

From
Tom Lane
Date:
"Satish Kumar" <satish.kumar@icasework.com> writes:
> We decided to use gist text search on two columns in our database (both on
> different tables) and hence decided we required the tsearch2.sql
> functionalities. We ran tsearch2.sql and create index across 5 schemas.

> CREATE INDEX case_attributes_text ON case_attributes USING gist
> (to_tsvector(value));

> CREATE INDEX appl_categories_cat1 ON appl_categories USING gist
> (to_tsvector(category1));

> Thing seems to work fine until we encounter an occasion error message when
> running our application and trying to insert into the appl_categories or
> case_attributes table.

> SEVERE: org.postgresql.util.PSQLException: ERROR: No tsearch cfg with id
> 698563
> org.postgresql.util.PSQLException: ERROR: No tsearch cfg with id 698563

> On further investigation we found out the OID 698563 was on pg_ts_cfg table
> of a different schema.

contrib/tsearch2 is not designed to be used that way.  You should have
only one copy of the tsearch2 functions and tables, not one in every
schema.  I don't know whether there are bugs if you try to make use of
the tsearch2 functionality from a table in a different schema from where
the tsearch2 functions are --- but if there are, we might make an effort
to fix them.  The case you describe above is just not going to be
supportable.

            regards, tom lane