Re: BUG #14745: to_tsvector(regconfig, json[b]) is NOT immutable

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: 007reader(at)gmail(dot)com
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #14745: to_tsvector(regconfig, json[b]) is NOT immutable
Date: 2017-07-16 18:29:45
Message-ID: 9162.1500229785@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

007reader(at)gmail(dot)com writes:
> According to https://www.postgresql.org/about/news/1763/ Beta 2 marked
> to_tsvector(regconfig, json[b]) immutable, but it still doesn't work, at
> least in the docker version of Beta 2. Here is the result:

> create table test (j JSON, jb JSONB);
> CREATE TABLE

> create index j_ixd on test using gin(to_tsvector(j));
> ERROR: functions in index expression must be marked IMMUTABLE

> create index jb_ixd on test using gin(to_tsvector(jb));
> ERROR: functions in index expression must be marked IMMUTABLE

Um, but that's not the two-argument version of to_tsvector.
You need something like

regression=# create index j_ixd on test using gin(to_tsvector('english', j));
CREATE INDEX
regression=# create index j_ixd2 on test using gin(to_tsvector('english', jb));
CREATE INDEX

The point here is that the single-argument versions are affected by
the configuration setting default_text_search_config, so they can't
be used in an index. Nailing down which tsconfig to use makes them
indexable.

regards, tom lane

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Jeff Janes 2017-07-16 18:31:05 Re: BUG #14745: to_tsvector(regconfig, json[b]) is NOT immutable
Previous Message 007reader 2017-07-16 18:10:04 BUG #14745: to_tsvector(regconfig, json[b]) is NOT immutable