mateusgra escreveu: > #include "postgres.h" > > #include "utils/builtins.h" > > /* convert C string to text pointer */ > #define PG_TEXT_GET_STR(textp_) \ > DatumGetCString(DirectFunctionCall1(textout, PointerGetDatum(textp_))) > #define PG_STR_GET_TEXT(str_) \ > DatumGetTextP(DirectFunctionCall1(textin, CStringGetDatum(str_))) > #define PG_REPLACE_STR(str_, substr_, replacestr_) \ > PG_TEXT_GET_STR(DirectFunctionCall3(replace_text, \ > > PG_STR_GET_TEXT(str_), \ > > PG_STR_GET_TEXT(substr_), \ > > PG_STR_GET_TEXT(replacestr_))) > As funções DirectFunctionCallX() sempre retornam Datum. Portanto, não precisa converter de text para Datum. Utilize:
#define PG_STR_GET_TEXT(str_) \ DirectFunctionCall1(textin, CStringGetDatum(str_)) #define PG_REPLACE_STR(str_, substr_, replacestr_) \ DirectFunctionCall3(replace_text, \ PG_STR_GET_TEXT(str_), \ PG_STR_GET_TEXT(substr_), \ PG_STR_GET_TEXT(replacestr_)) -- Euler Taveira de Oliveira http://www.timbira.com/ _______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral