Re: BUG #14518: FTS index not triggered when using function to provide the tsquery

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: grau(dot)fran(at)gmail(dot)com
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #14518: FTS index not triggered when using function to provide the tsquery
Date: 2017-01-27 13:53:51
Message-ID: 27964.1485525231@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

grau(dot)fran(at)gmail(dot)com writes:
> But I need to run the query through a function to generate a custom tsquery
> sometimes. So if I run:
> SELECT pub.publication_id
> FROM publication pub
> WHERE
> pub.fts @@ x_get_tsquery('Omnis')

> "Seq Scan on publication pub (cost=0.00..5939.89 rows=50 width=8)"
> " Filter: (fts @@ x_get_tsquery('Omnis'::text))"

> As you can see it uses a sequential scan... not good.

Most likely you've marked that function volatile (or allowed it to be so
marked by default). That disables using it in an index condition,
because the planner has to assume that the function's result might change
for every row. You need to mark it stable or immutable instead, per
https://www.postgresql.org/docs/devel/static/xfunc-volatility.html

regards, tom lane

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Francisco Grau 2017-01-27 13:58:31 Re: BUG #14518: FTS index not triggered when using function to provide the tsquery
Previous Message grau.fran 2017-01-27 10:39:39 BUG #14518: FTS index not triggered when using function to provide the tsquery