BUG #18636: I am seeing a difference in behavior between 13.12 and 15.6 for full text searching

Started by PG Bug reporting formover 1 year ago2 messagesbugs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

The following bug has been logged on the website:

Bug reference: 18636
Logged by: Glenn Cipolla
Email address: glenncipolla@gmail.com
PostgreSQL version: 13.12
Operating system: Ubuntu 11.4
Description:

The following query

select to_tsvector('simple','RG147SW RG14 Greenham Road Newbury West
Berkshire')
@@ to_tsquery('simple', 'gree,west:*');

Returns false in PG 15.6, but returns true in pg 13.12. In 15.6 the code
returns 'gree:* <-> 'west':*.
In 13.12 it returns 'gree:* & 'west':*

This article says the 13.12 behavior was a bug that was fixed in 14.x
(https://akorotkov.github.io/blog/2021/05/22/pg-14-query-parsing/).

I have a dev team about to change their code to handle the new <->. Before
they do that, I would like a confirmation that this functionality is
1. A bug
2. The new functionality will not change back in newer versions. Do you
intent to stick with the <-> return value?

Thanks,
Glenn

#2Laurenz Albe
laurenz.albe@cybertec.at
In reply to: PG Bug reporting form (#1)
Re: BUG #18636: I am seeing a difference in behavior between 13.12 and 15.6 for full text searching

On Fri, 2024-09-27 at 13:28 +0000, PG Bug reporting form wrote:

The following bug has been logged on the website:

Bug reference: 18636
Logged by: Glenn Cipolla
Email address: glenncipolla@gmail.com
PostgreSQL version: 13.12
Operating system: Ubuntu 11.4
Description:

The following query

select to_tsvector('simple','RG147SW RG14 Greenham Road Newbury West
Berkshire')
@@ to_tsquery('simple', 'gree,west:*');

Returns false in PG 15.6, but returns true in pg 13.12. In 15.6 the code
returns 'gree:* <-> 'west':*.
In 13.12 it returns 'gree:* & 'west':*

This article says the 13.12 behavior was a bug that was fixed in 14.x
(https://akorotkov.github.io/blog/2021/05/22/pg-14-query-parsing/).

I have a dev team about to change their code to handle the new <->. Before
they do that, I would like a confirmation that this functionality is
1. A bug
2. The new functionality will not change back in newer versions. Do you
intent to stick with the <-> return value?

We intend to stick with the way it works now... unless somebody comes
up with a very good reason why that behavior is buggy and worth the
compatibility pain the fix incurs.

From the commit message, the reason for 0c4f355c6a was that

to_tsquery('simple', 'pg_class catalog')

used to return

'( pg & class ) <-> catalog'

That is nonsensical, because both "pg" and "class" would have to
occur right before "catalog", which cannot be.

That seemed buggy enough to warrant a compatibility break.

We cannot promise that no more bugs will be found whose fixes will
break compatibility, but we have every intention not to introduce
incompatibilities wantonly.

Yours,
Laurenz Albe