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

Responder a