From: | Ruslan A Dautkhanov <rusland(at)scn(dot)ru> |
---|---|
To: | Joe Conway <mail(at)joeconway(dot)com> |
Cc: | pgsql-bugs(at)postgresql(dot)org |
Subject: | Re: Creating server-side functions: one simple error |
Date: | 2002-10-10 09:42:31 |
Message-ID: | 3DA54B87.A1929305@scn.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
Joe Conway wrote:
> Ruslan A Dautkhanov wrote:
> > Btw, how I can convert TEXT field to a CString one? I had tried to use
> > char *cnum = PG_GETARG_CSTRING(0) instead of
> > text tnum = PG_GETARG_NAME(0), but it's not worked properly. Is any function
> > to convert text object to a null-terminated string??? Thanks again.
> >
>
> I like to use the following macros:
>
> /* convert C string to text pointer */
> #define GET_TEXT(cstrp) \
> DatumGetTextP(DirectFunctionCall1(textin, CStringGetDatum(cstrp)))
> /* convert text pointer to C string */
> #define GET_STR(textp) \
> DatumGetCString(DirectFunctionCall1(textout, PointerGetDatum(textp)))
>
> then you can do, e.g.
> char *cnum = GET_STR(PG_GETARG_TEXT_P(0));
Thanks, this worked good. I had finished testing of creating
server-side functions and starts creating my business-oriented things on
SPI, and I have trap again - I can't translate datetime column, which
pass to my procedure. I must convert it to UNIX 1970-seconds counter for
my internal needs, but I havn't found _any_ PG_GETARG_* function in fmgr.h,
which can read time types as procedure's arguments. Sorry for this question,
but PG_GETARG_* function is not documented anywhere...
---
best regards,
Ruslan A Dautkhanov rusland(at)scn(dot)ru
From | Date | Subject | |
---|---|---|---|
Next Message | Elielson Fontanezi | 2002-10-10 11:28:17 | user name lost from dictionary |
Previous Message | Joe Conway | 2002-10-10 04:14:19 | Re: Creating server-side functions: one simple error |