Re: Replace some cstring_to_text to cstring_to_text_with_len
От | Dagfinn Ilmari Mannsåker |
---|---|
Тема | Re: Replace some cstring_to_text to cstring_to_text_with_len |
Дата | |
Msg-id | 87cyz3pd8r.fsf@wibble.ilmari.org обсуждение исходный текст |
Ответ на | Re: Replace some cstring_to_text to cstring_to_text_with_len (Andrew Dunstan <andrew@dunslane.net>) |
Ответы |
Re: Replace some cstring_to_text to cstring_to_text_with_len
|
Список | pgsql-hackers |
Andrew Dunstan <andrew@dunslane.net> writes: > On 2023-08-31 Th 07:41, John Naylor wrote: >> >> On Thu, Aug 31, 2023 at 6:07 PM Ranier Vilela <ranier.vf@gmail.com> wrote: >> > >> > Em qui., 31 de ago. de 2023 às 00:22, Michael Paquier >> <michael@paquier.xyz> escreveu: >> >> >> >> On Wed, Aug 30, 2023 at 03:00:13PM -0300, Ranier Vilela wrote: >> >> > cstring_to_text has a small overhead, because call strlen for >> >> > pointer to char parameter. >> >> > >> >> > Is it worth the effort to avoid this, where do we know the size >> of the >> >> > parameter? >> >> >> >> Are there workloads where this matters? >> > >> > None, but note this change has the same spirit of 8b26769bc. >> >> - return cstring_to_text(""); >> + return cstring_to_text_with_len("", 0); >> >> This looks worse, so we'd better be getting something in return. > > > I agree this is a bit ugly. I wonder if we'd be better off creating a > function that returned an empty text value, so we'd just avoid > converting the empty cstring altogether and say: > > return empty_text(); Or we could generalise it for any string literal (of which there are slightly more¹ non-empty than empty in calls to cstring_to_text(_with_len)): #define literal_to_text(str) cstring_to_text_with_len("" str "", sizeof(str)-1) [1]: ~/src/postgresql $ rg 'cstring_to_text(_with_len)?\("[^"]+"' | wc -l 17 ~/src/postgresql $ rg 'cstring_to_text(_with_len)?\(""' | wc -l 15 - ilmari
В списке pgsql-hackers по дате отправления: