BUG #16835: btree index does not work for where clause using 'foo%'

Started by PG Bug reporting formabout 5 years ago5 messagesbugs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

The following bug has been logged on the website:

Bug reference: 16835
Logged by: Hongyan (Heather) Zhang
Email address: zhangh3@aetna.com
PostgreSQL version: 11.9
Operating system: aurora postgres 11
Description:

https://www.postgresql.org/docs/11/indexes-types.html, according to this
page, btree index is supposed to work for where clause col like 'foo%', but
does not work for me. we are on aurora postgres 11, I also tested on
postgres 11, it does not work either.

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: PG Bug reporting form (#1)
Re: BUG #16835: btree index does not work for where clause using 'foo%'

PG Bug reporting form <noreply@postgresql.org> writes:

https://www.postgresql.org/docs/11/indexes-types.html, according to this
page, btree index is supposed to work for where clause col like 'foo%', but
does not work for me. we are on aurora postgres 11, I also tested on
postgres 11, it does not work either.

As the manual explains, that will not work by default unless your
database locale is C (which is an uncommon default nowadays).

It's also possible that Aurora has changed something that keeps
it from working, but I'd investigate the locale angle first.

regards, tom lane

#3Zhang, Hongyan
ZhangH3@aetna.com
In reply to: Tom Lane (#2)
Re: [EXTERNAL] Re: BUG #16835: btree index does not work for where clause using 'foo%'

Thanks, Tom.
Locale is en_US.UTF-8.

Is there plan to alter that behavior to allow index in non C locale?

From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Friday, January 22, 2021 at 10:52 AM
To: "Zhang, Hongyan" <ZhangH3@aetna.com>
Cc: "pgsql-bugs@lists.postgresql.org" <pgsql-bugs@lists.postgresql.org>
Subject: [EXTERNAL] Re: BUG #16835: btree index does not work for where clause using 'foo%'

**** External Email - Use Caution ****

PG Bug reporting form <noreply@postgresql.org> writes:

https://www.postgresql.org/docs/11/indexes-types.html&lt;https://www.postgresql.org/docs/11/indexes-types.html&gt;, according to this
page, btree index is supposed to work for where clause col like 'foo%', but
does not work for me. we are on aurora postgres 11, I also tested on
postgres 11, it does not work either.

As the manual explains, that will not work by default unless your
database locale is C (which is an uncommon default nowadays).

It's also possible that Aurora has changed something that keeps
it from working, but I'd investigate the locale angle first.

regards, tom lane

NOTICE TO RECIPIENT OF INFORMATION:
This e-mail may contain confidential or privileged information. If you think you have received this e-mail in error, please advise the sender by reply e-mail and then delete this e-mail immediately.

This e-mail may also contain protected health information (PHI) with information about sensitive medical conditions, including, but not limited to, treatment for substance use disorders, behavioral health, HIV/AIDS, or pregnancy. This type of information may be protected by various federal and/or state laws which prohibit any further disclosure without the express written consent of the person to whom it pertains or as otherwise permitted by law. Any unauthorized further disclosure may be considered a violation of federal and/or state law. A general authorization for the release of medical or other information may NOT be sufficient consent for release of this type of information.

Thank you. Aetna

#4Noname
luis.roberto@siscobra.com.br
In reply to: Zhang, Hongyan (#3)
Re: [EXTERNAL] Re: BUG #16835: btree index does not work for where clause using 'foo%'

De: "Zhang, Hongyan" <ZhangH3@aetna.com>
Para: "Tom Lane" <tgl@sss.pgh.pa.us>
Cc: "pgsql-bugs" <pgsql-bugs@lists.postgresql.org>
Enviadas: Sexta-feira, 22 de janeiro de 2021 16:07:22
Assunto: Re: [EXTERNAL] Re: BUG #16835: btree index does not work for where clause using 'foo%'

Thanks, Tom.

Locale is en_US.UTF-8.

Is there plan to alter that behavior to allow index in non C locale?

According to documentation: " However, if your database does not use the C locale you will need to create the index with a special operator class to support indexing of pattern-matching queries;"

So you'll have to create the index with a specific operator class.

You can use:.

CREATE INDEX tbl_col_text_pattern_ops_idx ON tbl(col text_pattern_ops) [1]https://stackoverflow.com/questions/1566717/postgresql-like-query-performance-variations

[1]: https://stackoverflow.com/questions/1566717/postgresql-like-query-performance-variations

#5Zhang, Hongyan
ZhangH3@aetna.com
In reply to: Noname (#4)
Re: [EXTERNAL] Re: BUG #16835: btree index does not work for where clause using 'foo%'

Thanks, Luis

From: "luis.roberto@siscobra.com.br" <luis.roberto@siscobra.com.br>
Date: Friday, January 22, 2021 at 1:28 PM
To: "Zhang, Hongyan" <ZhangH3@aetna.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, pgsql-bugs <pgsql-bugs@lists.postgresql.org>
Subject: Re: [EXTERNAL] Re: BUG #16835: btree index does not work for where clause using 'foo%'

**** External Email - Use Caution ****
________________________________
De: "Zhang, Hongyan" <ZhangH3@aetna.com>
Para: "Tom Lane" <tgl@sss.pgh.pa.us>
Cc: "pgsql-bugs" <pgsql-bugs@lists.postgresql.org>
Enviadas: Sexta-feira, 22 de janeiro de 2021 16:07:22
Assunto: Re: [EXTERNAL] Re: BUG #16835: btree index does not work for where clause using 'foo%'

Thanks, Tom.
Locale is en_US.UTF-8.

Is there plan to alter that behavior to allow index in non C locale?

According to documentation: "However, if your database does not use the C locale you will need to create the index with a special operator class to support indexing of pattern-matching queries;"

So you'll have to create the index with a specific operator class.

You can use:.

CREATE INDEX tbl_col_text_pattern_ops_idx ON tbl(col text_pattern_ops) [1]https://stackoverflow.com/questions/1566717/postgresql-like-query-performance-variations&lt;https://stackoverflow.com/questions/1566717/postgresql-like-query-performance-variations&gt;

[1]: https://stackoverflow.com/questions/1566717/postgresql-like-query-performance-variations&lt;https://stackoverflow.com/questions/1566717/postgresql-like-query-performance-variations&gt;

NOTICE TO RECIPIENT OF INFORMATION:
This e-mail may contain confidential or privileged information. If you think you have received this e-mail in error, please advise the sender by reply e-mail and then delete this e-mail immediately.

This e-mail may also contain protected health information (PHI) with information about sensitive medical conditions, including, but not limited to, treatment for substance use disorders, behavioral health, HIV/AIDS, or pregnancy. This type of information may be protected by various federal and/or state laws which prohibit any further disclosure without the express written consent of the person to whom it pertains or as otherwise permitted by law. Any unauthorized further disclosure may be considered a violation of federal and/or state law. A general authorization for the release of medical or other information may NOT be sufficient consent for release of this type of information.

Thank you. Aetna