Re: [BUGS] Creating server-side functions: one simple error

2002-10-11 Thread Ruslan A Dautkhanov

Tom Lane wrote:

> Ruslan A Dautkhanov <[EMAIL PROTECTED]> writes:
> > 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.
>
> Not all the GETARG functions are in fmgr.h, only the most widely used
> types.  See utils/timestamp.h.

Hi! Yes, you right, it's works well - I'm using PG_GETARG_TIMESTAMPTZ()
from utils/timestamp.h. But I have another problem when I try to compile procedure
with my own library, which used C++-like things. More exactly, problem begins
when I include .h file - it's not compiled since it used C++ constructions.
That is why I had renamed .c file to .cc - gcc understand source as C++ code now.
After this I have no problems in my header files, but have many in PG's
header files, for example:
1.In file included from /usr/home/rd/postgresql/src/include/executor/spi.h:22,
 from remain_time.cc:2:
  /usr/home/rd/postgresql/src/include/nodes/primnodes.h:529: syntax error before 
`using'

2.In file included from /usr/home/rd/postgresql/src/include/nodes/relation.h:18,
 from /usr/home/rd/postgresql/src/include/executor/spi.h:23,
 from remain_time.cc:2:
  /usr/home/rd/postgresql/src/include/nodes/parsenodes.h:967: syntax error before 
`typename'
  ... (other similar errors on different parsenodes.h's lines)

... other errors on PG's headers when I tries to create procedure as C++ function.
Is this mean, that PostgreSQL not C++-ready for compiling server-side functions, 
doesn't it?
Is any methods exists for compiling procedure in C++ (namespace modifications etc)??
Thanks for your help.


---
  best regards,
Ruslan A Dautkhanov   [EMAIL PROTECTED]



smime.p7s
Description: S/MIME Cryptographic Signature


Re: [BUGS] Creating server-side functions: one simple error

2002-10-11 Thread elein
This will not work if there is no EOS on the data portion of the
string.  Text fields are not usually stored with the EOS on them,
are they?

elein
[EMAIL PROTECTED]

On Wednesday 09 October 2002 21:14, 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));
>
> BTW, there are lots of good examples of C functions in contrib.
>
> HTH,
>
> Joe
>
>
> ---(end of broadcast)---
> TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

---(end of broadcast)---
TIP 6: Have you searched our list archives?

http://archives.postgresql.org



Re: [BUGS] Creating server-side functions: one simple error

2002-10-11 Thread Peter Eisentraut
Ruslan A Dautkhanov writes:

> Is this mean, that PostgreSQL not C++-ready for compiling server-side
> functions, doesn't it?

PostgreSQL is written in C and does not claim to be compilable by a C++
compiler.  That includes the header files.

> Is any methods exists for compiling procedure in
> C++ (namespace modifications etc)?? Thanks for your help.

Make a small wrapper that you compile with a C compiler and put the actual
C++ implementation into a separate file.  Maybe you could make a complete
C++ language handler out of that.

-- 
Peter Eisentraut   [EMAIL PROTECTED]


---(end of broadcast)---
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]