On Sun, Apr 13, 2025 at 3:23 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: > create function fx(p_summa bigint) returns text immutable strict > return ltrim(to_char(p_summa, '999 999 999 999 999 999 999 999')); > > explain analyze select fx(i) from generate_series(1,1000000) as i(i); > > you arrive at the rude discovery that 0dca5d68d is about 50% slower > than 0dca5d68d^, because the old implementation builds a plan for fx() > only once and then re-uses it throughout the query.
I agree that we should do something about this. I haven't reviewed your patches but the approach sounds broadly reasonable.
I can confirm that all tests passed, and patched code is about 5% faster than the current master (tested on my slower notebook). So it should to fix performance regression where it was it against pg17 (it was about 2%) (tested without assertions)