Re: Cursor not getting all rows

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Joseph Shraibman <jks(at)selectacast(dot)net>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Cursor not getting all rows
Date: 2005-05-17 17:56:26
Message-ID: 810.1116352586@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Joseph Shraibman <jks(at)selectacast(dot)net> writes:
> I do this:

> BEGIN;
> SELECT count(*) FROM u, d WHERE u.id = d.id AND ... ;
> DECLARE cname CURSOR FOR SELECT u.field, d.field FROM u, d WHERE u.id =
> d.id AND ... ;

> At the end of the fetching if the number of fetched does not equal the
> number from the SELECT count(*) I print out a warning message. It
> happens every once in a while. Today it happened four times.

> How is this possible? Because they are in the same transaction the
> count and the cursor should see the exact same data, right?

Not unless you are using SERIALIZABLE mode --- otherwise the cursor will
see whatever changes were committed during execution of the first SELECT.

regards, tom lane

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Scott Marlowe 2005-05-17 18:02:57 Re: Cursor not getting all rows
Previous Message Tom Lane 2005-05-17 17:53:03 Re: initdb: failed