Обсуждение: BUG #16835: btree index does not work for where clause using 'foo%'

Поиск
Список
Период
Сортировка

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

От
PG Bug reporting form
Дата:
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.


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

От
Tom Lane
Дата:
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



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

От
"Zhang, Hongyan"
Дата:

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, 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

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

От
luis.roberto@siscobra.com.br
Дата:
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%'

.style1 {font-family: "Times New Roman";}

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]


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

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

От
"Zhang, Hongyan"
Дата:

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]

 

 



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