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
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral