On Wed, Jun 02, 2004 at 09:52:28AM -0400, Tom Lane wrote:

>       BEGIN;
>       DECLARE CURSOR c1 FOR SELECT * FROM a ...;
>       INSERT INTO a VALUES(...);      -- call this row x
>       DECLARE CURSOR c2 FOR SELECT * FROM a ...;
>       BEGIN;
>       DELETE FROM a WHERE ...;        -- assume this deletes row x
>       ROLLBACK;
>       FETCH FROM c1;                  -- must NOT see row x
>       FETCH FROM c2;                  -- must see row x
> 
> AFAICS your proposal does not support this.  The two cursors' snapshots
> will differ only in the recorded current-cid for the outer transaction.
> If the subtrans has overwritten xmin/cmin, there is no way to make that
> decision correctly.

Why would it overwrite cmin?  Only a new xmin is needed (and cmax and
xmax, but the cursors don't care about those)

-- 
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
"La fuerza no está en los medios físicos
sino que reside en una voluntad indomable" (Gandhi)


---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster

Reply via email to