Jeff Davis <jdavis-pgsql@empires.org> writes:
> Developers: am I mistaken about libpq copying the entire query before
> sending it to the backend? Is there a reason that libpq wouldn't just
> send it along to the backend?
That's a feature, not a bug. libpq marshals whole messages before
sending them so that it can be sure it doesn't have a problem with
a half-sent message. The only way out of such a problem would be to
drop the connection, because there's no way to regain message boundary
sync with the backend.
If your SQL queries are so long as to pose a memory threat by
themselves, you might want to rethink your approach anyway. I'd
expect such things to hit bottlenecks all over the place. In particular
the backend is quite certain to make multiple copies of any long literal
constant during parsing/planning.
regards, tom lane