Re: Memory exhaustion on large query

Brice André <brice@famille-andre.be>

From: Brice André <brice@famille-andre.be>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: pgsql-sql@postgresql.org
Date: 2021-12-14T03:31:19Z
Lists: pgsql-sql
Many thanks for your help.

A call to PQsetSingleRowMode just after PQsendQueryPrepared solved my issue.

Regards,
Brice

Le dim. 12 déc. 2021 à 19:43, Tom Lane <tgl@sss.pgh.pa.us> a écrit :

> =?UTF-8?B?QnJpY2UgQW5kcsOp?= <brice@famille-andre.be> writes:
> > The content of the table is so huge that, if PQsendQueryPrepared
> retrieves
> > all data, or if postgresql engine is creating temp file with all data,
> the
> > query cannot succeed (I have no enough RAM or disk space to copy the
> whole
> > data). But I was expecting that using PQsendQueryPrepared and PQgetResult
> > would avoid this by returning one result at a time.
>
> You're confusing asynchronous mode with single-row mode.  Async mode,
> per se, doesn't change memory consumption; it just lets you do something
> else while waiting for the query result.  You are (I suppose) missing
> a call to PQsetSingleRowMode --- see
>
> https://www.postgresql.org/docs/current/libpq-single-row-mode.html
>
>                         regards, tom lane
>