mirror of
https://github.com/postgres/postgres.git
synced 2026-10-28 02:33:10 +03:00
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
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user