Generating Huge String?

Started by Steffen Nielsenalmost 24 years ago3 messageshackers
Jump to latest
#1Steffen Nielsen
styf@cs.auc.dk

I have tried using chunks technique when creating huge string for a stored
procedure (C code). I work like charm for small string, but when i create
large strings i get a "server closed the connection unexpectedly" :-( I use
palloc and repalloc for memory handling. Note! I made a standard C program
that just keept on making the chunk larger (read string), i never did crash
any. So what is postgres doing? (ps. the same happens if I use standard malloc
an realloc)

Any ideas why? (No continues block of memory is large enough or?)
And how does one normally handle Large strings in postgres?

\Steffen Nielsen

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Steffen Nielsen (#1)
Re: Generating Huge String?

Steffen Nielsen <styf@cs.auc.dk> writes:

I have tried using chunks technique when creating huge string for a stored
procedure (C code). I work like charm for small string, but when i create
large strings i get a "server closed the connection unexpectedly" :-(

Look for bugs in your code ;-). I'd bet it's scribbling on memory that
doesn't belong to it.

And how does one normally handle Large strings in postgres?

The StringInfo functions are moderately convenient in most cases.

regards, tom lane

#3Steffen Nielsen
styf@cs.auc.dk
In reply to: Tom Lane (#2)
Re: Generating Huge String?

Hi!

I checked out the StringInfo functions, they are basicly the same as the
Chunks functions I use, but I'll use the others instead even thought I don't
think they will help me on my problem. But anyway, I've checked out the malloc
and realloc function, and believe that they won't allow allocation into an
allready occopied memory area (at least on freebsd).

But if not, maybe I should create a new Chunk (malloc again, and copy; But
that would probably lead to heavy fragmentation of the memory) if realloc
can't allocate more continuos memory space?

Sorry if these question seem trivially, I'm a C newbie :-)

/Steffen Nielsen

Quoting Tom Lane <tgl@sss.pgh.pa.us>:

Show quoted text

Steffen Nielsen <styf@cs.auc.dk> writes:

I have tried using chunks technique when creating huge string for a stored

procedure (C code). I work like charm for small string, but when i create

large strings i get a "server closed the connection unexpectedly" :-(

Look for bugs in your code ;-). I'd bet it's scribbling on memory that
doesn't belong to it.

And how does one normally handle Large strings in postgres?

The StringInfo functions are moderately convenient in most cases.

regards, tom lane