Re: We don't enforce NO SCROLL cursor restrictions

2021-09-09 Thread Tom Lane
I wrote: > The reason for this behavior is that the only-scan-forward check > is in the relatively low-level function PortalRunSelect, which > is passed a "forward" flag and a count. The place that interprets > FETCH_ABSOLUTE and friends is DoPortalRunFetch, and what it's doing > in this particula

Re: We don't enforce NO SCROLL cursor restrictions

2021-09-09 Thread Tom Lane
I wrote: > [ pokes at it some more ... ] Hm, we let you do this: > ... > which definitely flies in the face of the fact that we disallow > combining SCROLL and FOR UPDATE: > regression=*# declare c scroll cursor for select * from int8_tbl for update; > ERROR: DECLARE SCROLL CURSOR ... FOR UPDATE

Re: We don't enforce NO SCROLL cursor restrictions

2021-09-09 Thread Tom Lane
Vik Fearing writes: > On 9/9/21 7:10 PM, Tom Lane wrote: >> There are probably specific cases where you do get an error, >> but we don't have a blanket you-can't-do-that check. Should we? > I would say yes. NO SCROLL means no scrolling; or at least should. > On the other hand, if there is no op

Re: We don't enforce NO SCROLL cursor restrictions

2021-09-09 Thread Vik Fearing
On 9/9/21 7:10 PM, Tom Lane wrote: > We don't actually prevent you from scrolling a NO SCROLL cursor: > > There are probably specific cases where you do get an error, > but we don't have a blanket you-can't-do-that check. Should we? I would say yes. NO SCROLL means no scrolling; or at least sh

We don't enforce NO SCROLL cursor restrictions

2021-09-09 Thread Tom Lane
We don't actually prevent you from scrolling a NO SCROLL cursor: regression=# begin; BEGIN regression=*# declare c no scroll cursor for select * from int8_tbl; DECLARE CURSOR regression=*# fetch all from c; q1|q2 --+---