Re: [BUG]: WHERE CURRENT OF cursor fail on tables that have virtual generated columns

From: Dean Rasheed <dean(dot)a(dot)rasheed(at)gmail(dot)com>
To: SATYANARAYANA NARLAPURAM <satyanarlapuram(at)gmail(dot)com>
Cc: PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: [BUG]: WHERE CURRENT OF cursor fail on tables that have virtual generated columns
Date: 2026-04-20 07:56:23
Message-ID: CAEZATCUr0hTb0v_Tz1b-j7=tU=TWHT=EqY9ms9qjFOukVFzKPg@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Mon, 20 Apr 2026 at 01:33, SATYANARAYANA NARLAPURAM
<satyanarlapuram(at)gmail(dot)com> wrote:
>
> On Sun, Apr 19, 2026 at 3:42 AM Dean Rasheed <dean(dot)a(dot)rasheed(at)gmail(dot)com> wrote:
>>
>> Hmm, it seems to me that a much simpler fix is to check for use of
>> WHERE CURRENT OF on a view at parse time, and throw the error there.
>
> This patch looks simple and neat, is there any reason why it was done differently earlier?
>

I'm not sure, but possibly because it used to be possible to turn a
table into a view by defining a SELECT rule on it, which could have
rendered a parse-time check insufficient. That's no longer the case
though, and we now have similar parse-time relkind tests elsewhere
(e.g., for MERGE).

> Updated the patch to include a test case to reject view update with WHERE CURRENT OF.
>

That's already tested in portals.sql, which seems like a better place
for that test, since it's not related to virtual generated columns. I
don't think another test is necessary -- admittedly portals.sql only
tests DELETE, but the UPDATE code is the same, so I think the existing
test is sufficient. We don't obsessively try to achieve 100% coverage
in our tests.

Regards,
Dean

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message SATYANARAYANA NARLAPURAM 2026-04-20 08:03:18 Re: [BUG]: WHERE CURRENT OF cursor fail on tables that have virtual generated columns
Previous Message Chao Li 2026-04-20 07:54:19 Re: Adding REPACK [concurrently]