Re: Retrieving query results
Igor Korot <ikorot01@gmail.com>
From: Igor Korot <ikorot01@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Michael Paquier <michael.paquier@gmail.com>,
pgsql-general <pgsql-general@postgresql.org>
Date: 2017-08-24T13:47:42Z
Lists: pgsql-general
Hi, guys, On Thu, Aug 24, 2017 at 8:51 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote: > Michael Paquier <michael.paquier@gmail.com> writes: >> On Wed, Aug 23, 2017 at 3:19 AM, Igor Korot <ikorot01@gmail.com> wrote: >>> [quote] >>> PQntuples >>> >>> Returns the number of rows (tuples) in the query result. Because it >>> returns an integer result, large result sets might overflow the return >>> value on 32-bit operating systems. >>> >>> int PQntuples(const PGresult *res); >>> [/quote] >>> >>> Is there another way to not to overflow the result? > >> Not really with the existing API. > > Actually, that documentation note is pretty beside-the-point, if not > outright wrong. The real issue here is that libpq's internal row counter > is also a plain int. As are the rownumber arguments to PQgetvalue and so > on. While we could widen that internal counter, it's useless to do so > as long as these API choices prevent applications from dealing with > resultsets of more than 2G rows. > > I think what we need is to (1) introduce some error checking in libpq so > that it reports an error if the resultset exceeds 2G rows --- right now > it'll just crash, I fear, and (2) change the documentation so that this > is explained as a library-wide limitation and not just a problem with > PQntuples. Does this mean that querying a table with a big number of rows will crash the psql? Thank you. > > regards, tom lane
Commits
-
Doc: document libpq's restriction to INT_MAX rows in a PGresult.
- 2a82170a56cb 9.2.24 landed
- 1e6c36260635 9.3.20 landed
- 2338ad26374e 9.4.15 landed
- c7e990bb0f4d 9.5.10 landed
- 941e47fc43cc 9.6.6 landed
- ff59f30dc30e 10.0 landed
- 6cbee65eee20 11.0 landed
-
Teach libpq to detect integer overflow in the row count of a PGresult.
- dfd1042c6ae5 9.5.10 landed
- d391fb6c3802 9.3.20 landed
- bc95e5874ac9 9.6.6 landed
- b481b39b876f 10.0 landed
- a07058a6d43b 9.2.24 landed
- 2e70d6b5e99b 11.0 landed
- 1c53722ffd00 9.4.15 landed