Re: updateable cursors & visibility

From: "Hiroshi Inoue" <inoue(at)tpf(dot)co(dot)jp>
To: "'Hannu Krosing'" <hannu(at)tm(dot)ee>
Cc: "'Tom Lane'" <tgl(at)sss(dot)pgh(dot)pa(dot)us>, "'Peter Eisentraut'" <peter_e(at)gmx(dot)net>, "'Bruce Momjian'" <pgman(at)candle(dot)pha(dot)pa(dot)us>, "'Neil Conway'" <neilc(at)samurai(dot)com>, "'PostgreSQL Hackers'" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: updateable cursors & visibility
Date: 2003-03-31 16:08:52
Message-ID: 001601c2f79f$d2eb1e40$0e283ddb@PbgX
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

> -----Original Message-----
> From: Hannu Krosing [mailto:hannu(at)tm(dot)ee]
>
> Hiroshi Inoue kirjutas E, 31.03.2003 kell 03:40:
>
> > 2) dynamic
> > It can detect any changes made to the membership, order,
> > and values of the result set after the cursor is opened.
>
> What would it mean in practice, i.e. if you are on the first
> row in the
> cursor and then update tha ORDER BY field so that your row becomes the
> last one, will the next FETCH move the cursor past end ?

No. The row next to the old first row would be FETCHed.

> what happens, if the row you are on is removed from the keyset, either
> by current or any other backend ?

The dynamic cursor doesn't see the row any longer.

> What about the case when you have moved past the last row,
> and suddenly
> a new row appears which is positioned after the last row ?

The dynamic cursor would see the new row when it is fetched backwards.

> What about when you are moving over several rows that have the same
> ordering position and then one more appears - should it go before or
> after the current position ?

It is implementation dependent.

> > 3) keyset-driven
> > It always detects changes to the values of rows.
>
> What about _new_ rows,

It never detects new rows.

> or rows that no more belong to the "keyset" ?

They are the same as deleted ones.

> > 4) mixed
> > A combination of a keyset-driven cursor and a dynamic
> > cursor.
>
> Combined in what way ?

It uses a limited keyset size. If a fetch operation doesn't fit in
the range of the keyset, it dynamically fetches the result set.

> > It's not clear to me now how we should realize the above
> > type of cursors at server side.
>
> >From your short description it is not even clear for me how *exactly*
> should they behave.

I only intended to illustrate various type of visibilities roughly
because
there were no such reference in this thread.

regards,
Hiroshi Inoue

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message John Liu 2003-03-31 16:10:21 7.3.2 make failed on AIX4.3 using native c compiler
Previous Message Bruce Momjian 2003-03-31 15:48:52 Re: A few questions: