Обсуждение: pstrdup(TextDatumGetCString(foo)) ?

Поиск
Список
Период
Сортировка

pstrdup(TextDatumGetCString(foo)) ?

От
Chapman Flack
Дата:
I am encountering, here and there, an idiom like
 pstrdup(TextDatumGetCString(foo))

or a pre-8.4 version,
 pstrdup(DatumGetCString(DirectFunctionCall1(textout, foo)))

It's leading me to question my sanity because it appears to me
that both text_to_cstring (underlying TextDatumGetCString) and
textout already return a string palloc'd in the current context,
and that pstrdup (without any change of context) can't be accomplishing
anything. I'm probably missing something crucial, but what?

-Chap



Re: pstrdup(TextDatumGetCString(foo)) ?

От
Tom Lane
Дата:
Chapman Flack <chap@anastigmatix.net> writes:
> I am encountering, here and there, an idiom like
>   pstrdup(TextDatumGetCString(foo))

> or a pre-8.4 version,

>   pstrdup(DatumGetCString(DirectFunctionCall1(textout, foo)))

> It's leading me to question my sanity because it appears to me
> that both text_to_cstring (underlying TextDatumGetCString) and
> textout already return a string palloc'd in the current context,
> and that pstrdup (without any change of context) can't be accomplishing
> anything. I'm probably missing something crucial, but what?

No, you're right: pstrdup in that context is a useless waste of cycles and
memory.

A quick grep in the current PG sources shows me only two occurrences of
the former, both in the same function and both doubtless introduced by
the same misinformed author.  I find no occurrences of the latter.
        regards, tom lane