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]