From: Jeff Davis Date: Wed, 15 Jul 2026 19:34:20 +0000 (-0700) Subject: Fix like_fixed_prefix_ci() selectivity. X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=94e1b104f8db88837e5ef13a6692dad746e3690f;p=thirdparty%2Fpostgresql.git 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 --- 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);