On Wed, Mar 31, 2021 at 7:50 AM Ashutosh Bapat <ashutosh.bapat....@gmail.com> wrote: > > On Wed, Mar 31, 2021 at 6:09 AM Jaime Casanova > > > > > -- this fails > > update t2 set i = 5 returning cursor_bug() as c1; > > ERROR: cursor "c1" already in use > > CONTEXT: PL/pgSQL function cursor_bug() line 6 at OPEN > > but that's called as many time as the number of rows in t2 in the same > transaction. The first row will go fine. For the second row it will > find c1 is already open. Shouldn't cursor_bug() close c1 at the end? > Is it intended to be kept open when the function finishes? May be you > are expecting it to be closed automatically when the function > finishes. But that's not what is documented at > https://www.postgresql.org/docs/13/plpgsql-cursors.html. >
Now that I see it again, after sleeping, I can see you're right! sorry for the noise -- Jaime Casanova Director de Servicios Profesionales SYSTEMGUARDS - Consultores de PostgreSQL