Re: Cursor not getting all rows

From: Scott Marlowe <smarlowe(at)g2switchworks(dot)com>
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:29:51
Message-ID: 1116350990.22291.131.camel@state.g2switchworks.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Tue, 2005-05-17 at 12:19, Joseph Shraibman wrote:
> I'm running:
>
> PostgreSQL 7.4.7 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.2.2
> 20030222 (Red Hat Linux 3.2.2-5)
>
>
> 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.
>
> 1) missed 1 out of 703773
> 2) missed 3 out of 703765
> 3) missed 10 out of 703743
> 4) missed 12 out of 703660
>
> How is this possible? Because they are in the same transaction the
> count and the cursor should see the exact same data, right?

Only if you set transaction isolation to serializable.

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Joseph Shraibman 2005-05-17 17:31:53 TIP 9
Previous Message Joseph Shraibman 2005-05-17 17:19:36 Cursor not getting all rows