postgres.git / summary / log / commit / refs
commit 94e1b104f8db88837e5ef13a6692dad746e3690f
Author: Jeff Davis <jdavis@postgresql.org>
Date: Wed Jul 15 19:34:20 2026 +0000
Fix like_fixed_prefix_ci() selectivity.
A wrong calculation introduced by 9c8de15969 could cause trailing
characters from the prefix to be passed to like_selectivity() rather
than just the "rest".
Discussion: https://postgr.es/m/c7334a7a44243d2e4ec5e83747589908b3787491.camel@j-davis.com
Backpatch-through: 19
src/backend/utils/adt/like_support.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/backend/utils/adt/like_support.c b/src/backend/utils/adt/like_support.c
index 4c8db9147ee..e354360a8e6 100644
--- a/src/backend/utils/adt/like_support.c
+++ b/src/backend/utils/adt/like_support.c
@@ -1150,12 +1150,12 @@ like_fixed_prefix_ci(Const *patt_const, Oid collation, Const **prefix_const,
if (rest_selec != NULL)
{
- int wrestlen = wpattlen - wmatch_pos;
+ int wrestlen = wpattlen - wpos;
char *rest;
int rest_mblen;
rest = palloc(pg_database_encoding_max_length() * wrestlen + 1);
- rest_mblen = pg_wchar2mb_with_len(&wpatt[wmatch_pos], rest, wrestlen);
+ rest_mblen = pg_wchar2mb_with_len(&wpatt[wpos], rest, wrestlen);
*rest_selec = like_selectivity(rest, rest_mblen, true);
pfree(rest);
[parent: 95c1b8ec7773]