----- Original Message ----- > From: Tom Lane <tgl@xxxxxxxxxxxxx> > To: Paul Jones <pbj@xxxxxxxxxx> > Cc: "pavel.stehule@xxxxxxxxx" <pavel.stehule@xxxxxxxxx>; "pgsql-general@xxxxxxxxxxxxxx" <pgsql-general@xxxxxxxxxxxxxx> > Sent: Thursday, May 29, 2014 11:32 AM > Subject: Re: [GENERAL] Code for user-defined type > > Paul Jones <pbj@xxxxxxxxxx> writes: > >> 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. > > That probably means you're stomping on memory that doesn't belong to > you. > > pallocs per se should not be a problem for COPY --- it does a context > reset per row. And even if it didn't, you'd not likely be running out > of memory after a mere thousand rows. However, a buffer-overrun type > of coding error would be probabilistic as to when it became obvious > via a core dump; some of the time you'd be stomping on memory that > was unused anyway. > > regards, tom lane Ok, I am going to recompile with --enable-cassert and give cstring_to_text/text_to_cstring another try to see if I can track down what's going wrong. I'm letting internal routines do all the work so it's probably something bad I'm passing to them. PJ >