"Michael Enke" <michael.enke (AT) wincor-nixdorf (DOT) com> writes:
Quote:
I created a C function:
extern Datum test_arg(PG_FUNCTION_ARGS);
PG_FUNCTION_INFO_V1(test_arg);
Datum test_arg(PG_FUNCTION_ARGS) {
elog(INFO, "arg: %s", VARDATA(PG_GETARG_TEXT_P(0)));
PG_RETURN_INT16(0); |
The VARDATA of a TEXT datum is not a C string; in particular it is not
guaranteed to be null-terminated. This is an error in your code not
a bug.
The usual way to get a C string from a TEXT datum is to call textout,
eg
str = DatumGetCString(DirectFunctionCall1(textout, datumval));
regards, tom lane
---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend