Hi,

Well, I got psql to do it's thing, eventually.  I've tested it for pretty
much everything, including \e, \g, \r, \i.  
The one problem that I have had is that after about the third '\i long.sql',
I get a core dump, because sprintf moaned about string size complications.
The way I have structured it, memory is reallocated (re- malloc'd, not
realloc'd) every time the query is extended.  I suspect that this is very
inefficient, and probably causing the system to hooch after loading long.sql
three times.  The main thought that I have had is to extend the query buffer
in blocks of about 8k or 16k.  I presume that once working with set memory
sizes, the memory usage will be substantially more efficient.  Ideas?

Also, what's the deal with realloc?  I tried it a couple of times, but it
really screwed me around (hence the re- malloc'ing).  Or is it just a Bad
Move to use realloc?

MikeA


Wed, 21 Jul 1999 10:04:39 +0200
"Ansley, Michael" <Michael.Ansley@intec.co.za>
psql & query string length
"Ansley, Michael" <Michael.Ansley@intec.co.za> writes:
> The way I have structured it, memory is reallocated (re- malloc'd, not
> realloc'd) every time the query is extended.  I suspect that this is very
> inefficient,

Probably.  You should normally expand by a significant amount each time
you reallocate an expansible buffer, just to avoid making too many
demands on malloc.  The method I favor is to double the buffer size at
each realloc step.

> and probably causing the system to hooch after loading long.sql
> three times.

... but not doing so shouldn't cause a coredump.  I bet a plain old
bug is involved here, like writing past the end of the space you do
have allocated.

> Also, what's the deal with realloc?  I tried it a couple of times, but it
> really screwed me around (hence the re- malloc'ing).  Or is it just a Bad
> Move to use realloc?

realloc is perfectly fine ... see above for more likely theory.

On some old pre-ANSI-standard machines, realloc(NULL, ...) does not
work, so for portability's sake you ought to only use realloc to
increase the size of an existing buffer.

			regards, tom lane

Wed, 21 Jul 1999 10:42:43 -0400
Tom Lane <tgl@sss.pgh.pa.us>
Re: [HACKERS] psql & query string length 