2014-05-29 18:04 GMT+02:00 Paul Jones <p...@cmicdo.com>:

> On Wed, May 28, 2014 at 10:51:43AM +0200, Pavel Stehule wrote:
> >
> > Hello
> >
> >
> > 2014-05-27 20:30 GMT+02:00 Paul Jones <p...@cmicdo.com>:
> >
> > > I have written a user-defined type that allows direct import and
> printing
> > > of
> > > DB2 timestamps.It does correctly import and export DB2 timestamps,
> > > butI'm wondering ifsomeone could tell me if I made anymistakes in
> > > the C code, particularly w.r.t. memory leaks or non-portableconstructs.
> > >
> > >
> > > I'm doing this on 9.3.4.
> > >
> > > Thanks,
> >
> > There is one issue DirectFunctionCall takes a parameters converted to
> Datum
> > and returns Datum
> >
> > You should to use a macros XGetDatum and DatumGetX
> >
> > In this case
> >
> >         newDate = DatumGetTimestamp(DirectFunctionCall2(to_timestamp,
> >                                      CStringGetDatum(date_txt),
> > CStringGetDatum(cstring_to_text(nls_date_format))));
> >
> >                 PG_RETURN_TIMESTAMP(newDate);
> >
> >
> >
> > There is inconsistency in types - Timestamp and Timestamptz -
>
> Thanks, Pavel!
>
> I used the proper XGetDatum and DatumGetX and was able to get it to work
> properly.  However, I since discovered that I probably should not use
> "cstring_to_text" because of the palloc's it does.  The problem comes
> when doing "\copy table from file".  After about 1000 rows, the backend
> dies with SEGV, I think because of too many pallocs being created in
> the copy transaction.
>
> I rewrote it so that the format string is turned into a text at .so load
> time,
> and then converted the input string into a local text.
>

too many pallocs should not fail on SEGV (I am thinking, but can be
fallible).

For extension development is good idea use postgres backend compiled with
--enable-cassert option.

It can do a extra tests of memery usage, and can show some other information

Regards

Pavel


>
> PJ
>

Reply via email to