Обсуждение: cursors in LLL

Поиск
Список
Период
Сортировка

cursors in LLL

От
"Hiroshi Inoue"
Дата:
Hi all.
I'm looking forward to the appearance of LLL in PostgreSQL 6.5 and have a
question about the sensitivity of cursors in LLL.

In LLL cursors are INSENSITIVE as Oracle ?

Currently cursors are indeterminate and in some cases they are strangely
sensitive(for me).
In LLL the behavior of cursors will be more complicated, if changes by other
transactions can be seen by fetch statements(especially for read committed
isolation level).

I hope INSENSITIVE cursors to be implemented whose behavior we can predict
and I think that they can be realized according to proposals for LLL by
Vadim.

In LLL access methods return snapshot of data as they were in _some_ point
in time.
For read committed mode this moment is the time when statement began.
For serializable mode this is the time when current transaction began.

For a INSENSITIVE cursor this is the time when it was opened(declared),
not the time when the fetch statements for it began ?

Thanks.

Hiroshi Inoue
Inoue@tpf.co.jp



Re: [HACKERS] curso$B#r(Bs in LLL

От
Vadim Mikheev
Дата:
Hiroshi Inoue wrote:
>
> Hi all.
> I'm looking forward to the appearance of LLL in PostgreSQL 6.5 and have a
> question about the sensitivity of cursors in LLL.
>
> In LLL cursors are INSENSITIVE as Oracle ?
>
> Currently cursors are indeterminate and in some cases they are strangely
> sensitive(for me).

Do you mean seeing row inserted between fetches ?
Should this be changed ?
How is this in Oracle, Informix, Sybase, standards ?

> In LLL the behavior of cursors will be more complicated, if changes by other
> transactions can be seen by fetch statements(especially for read committed
> isolation level).
>
> I hope INSENSITIVE cursors to be implemented whose behavior we can predict
> and I think that they can be realized according to proposals for LLL by
> Vadim.
>
> In LLL access methods return snapshot of data as they were in _some_ point
> in time.
> For read committed mode this moment is the time when statement began.
> For serializable mode this is the time when current transaction began.
>
> For a INSENSITIVE cursor this is the time when it was opened(declared),
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This is easy to implement.
But I'd like to know what standards say about cursor sensitivness...

> not the time when the fetch statements for it began ?

Thanks.

Vadim

RE: [HACKERS] cursors in LLL

От
"Hiroshi Inoue"
Дата:
>
> Hiroshi Inoue wrote:
> >
> > Hi all.
> > I'm looking forward to the appearance of LLL in PostgreSQL 6.5
> and have a
> > question about the sensitivity of cursors in LLL.
> >
> > In LLL cursors are INSENSITIVE as Oracle ?
> >
> > Currently cursors are indeterminate and in some cases they are strangely
> > sensitive(for me).
>
> Do you mean seeing row inserted between fetches ?

Yes and in some cases updated rows can be seen many times.

> Should this be changed ?

Yes,at least the option is necessary that changes can't be seen.

> How is this in Oracle, Informix, Sybase, standards ?
>

So far as I know,in Oracle cursors are fixed(logically) when
they are opened.

> > In LLL the behavior of cursors will be more complicated, if
> changes by other
> > transactions can be seen by fetch statements(especially for
> read committed
> > isolation level).
> >
> > I hope INSENSITIVE cursors to be implemented whose behavior we
> can predict
> > and I think that they can be realized according to proposals for LLL by
> > Vadim.
> >
> > In LLL access methods return snapshot of data as they were in
> _some_ point
> > in time.
> > For read committed mode this moment is the time when statement began.
> > For serializable mode this is the time when current transaction began.
> >
> > For a INSENSITIVE cursor this is the time when it was opened(declared),
>                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> This is easy to implement.
> But I'd like to know what standards say about cursor sensitivness...
>

In SQL92,cursors are not necessarily INSENSITIVE and there's the option
INSENSITIVE for DECLARE CURSOR statements.

Thanks.

Hiroshi Inoue
Inoue@tpf.co.jp