Re: [PATCH] Add UPDATE WHERE OFFSET IN clause - Mailing list pgsql-hackers

From Tom Lane
Subject Re: [PATCH] Add UPDATE WHERE OFFSET IN clause
Date
Msg-id 1116946.1644282319@sss.pgh.pa.us
Whole thread Raw
In response to Re: [PATCH] Add UPDATE WHERE OFFSET IN clause  (Chapman Flack <chap@anastigmatix.net>)
Responses Re: [PATCH] Add UPDATE WHERE OFFSET IN clause  (Böszörményi Zoltán <zboszor@pr.hu>)
List pgsql-hackers
Chapman Flack <chap@anastigmatix.net> writes:
> On 02/07/22 00:59, Böszörményi Zoltán wrote:
>> UPDATE ... WHERE OFFSET n IN cursor;

> If added to UPDATE, should this be added to DELETE also?

FWIW, I think this is a really horrid hack.  For one thing, it's not
robust against not-strictly-linear FETCH/MOVE of the cursor.  It looks
to me like "OFFSET n" really means "the row that we read N reads ago",
not "the row N before the current cursor position".  I see that the
documentation does explain it that way, but it fails to account for
optimizations such as whether we implement moves by reading backwards
or rewind-and-read-forwards.  I don't think we want to expose that
sort of implementation detail.

I'm also pretty displeased with causing unbounded memory consumption for
every use of nodeLockRows, whether it has anything to do with a cursor or
not (never mind whether the cursor will ever be used for WHERE OFFSET IN).
Yeah, it's only a few bytes per row, but that will add up in queries that
process lots of rows.

            regards, tom lane



pgsql-hackers by date:

Previous
From: Thomas Munro
Date:
Subject: Re: WaitLatchOrSocket seems to not count to 4 right...
Next
From: Andres Freund
Date:
Subject: Re: [RFC] building postgres with meson - perl embedding