plsample: Use TextDatumGetCString() for text-to-CString conversion

Replace the outdated DatumGetCString(DirectFunctionCall1(textout, ...))
pattern with TextDatumGetCString(). The macro is the modern, more
efficient way to convert a text Datum to a C string as it avoids
unnecessary function call machinery and handles detoasting internally.

Since plsample serves as reference code for extension authors, it
should follow current idiomatic practices.

Author: Amul Sul <sulamul@gmail.com>
Discussion: https://postgr.es/m/CAAJ_b95-xMvUN1PEqxv8y6g-A-8k+fSgyv20kSZc9eF1wZAUPg@mail.gmail.com
This commit is contained in:
Fujii Masao 2026-04-21 08:37:17 +09:00
parent f0ac6d494b
commit f1cfb48efb

View file

@ -21,6 +21,7 @@
#include "commands/trigger.h"
#include "executor/spi.h"
#include "funcapi.h"
#include "utils/builtins.h"
#include "utils/fmgrprotos.h"
#include "utils/lsyscache.h"
#include "utils/syscache.h"
@ -128,7 +129,7 @@ plsample_func_handler(PG_FUNCTION_ARGS)
if (isnull)
elog(ERROR, "could not find source text of function \"%s\"",
proname);
source = DatumGetCString(DirectFunctionCall1(textout, ret));
source = TextDatumGetCString(ret);
ereport(NOTICE,
(errmsg("source text of function \"%s\": %s",
proname, source)));
@ -244,7 +245,7 @@ plsample_trigger_handler(PG_FUNCTION_ARGS)
if (isnull)
elog(ERROR, "could not find source text of function \"%s\"",
proname);
source = DatumGetCString(DirectFunctionCall1(textout, ret));
source = TextDatumGetCString(ret);
ereport(NOTICE,
(errmsg("source text of function \"%s\": %s",
proname, source)));