Re: bug: UPDATE FOR PORTION OF interact with updatable view
Peter Eisentraut <peter@eisentraut.org>
From: Peter Eisentraut <peter@eisentraut.org>
To: Paul A Jungwirth <pj@illuminatedcomputing.com>,
jian he <jian.universality@gmail.com>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2026-05-13T11:52:01Z
Lists: pgsql-hackers
On 09.05.26 21:06, Paul A Jungwirth wrote:
> On Sun, Apr 12, 2026 at 8:12 AM jian he <jian.universality@gmail.com> wrote:
>>
>> CREATE TABLE base_tbl (a int, b int, c int);
>> INSERT INTO base_tbl values(1,2);
>> CREATE VIEW rw_view15 AS SELECT a, ('[' || abs(b) ||
>> ',20]')::int4range as b FROM base_tbl;
>>
>> UPDATE rw_view15 for portion of b from 1 to 10 set a = 2;
>> DELETE FROM rw_view15 for portion of b from 1 to 10;
>>
>> The UPDATE will result
>> ERROR: attribute number 2 not found in view targetlist
>>
>> \errverbose
>> ERROR: XX000: attribute number 2 not found in view targetlist
>> LOCATION: rewriteTargetView, rewriteHandler.c:3779
>>
>> The DELETE will crash the server.
>>
>> Both should result in an error in rewriteTargetView.
>> for UPDATE, the error message:
>> ERROR: cannot update column "b" of view "rw_view15"
>> DETAIL: View columns that are not columns of their base relation are
>> not updatable.
>>
>> for DELETE, the error message:
>> ERROR: DELETE ... FOR PORTION OF is not supported for column "b" on
>> view "rw_view15"
>> DETAIL: View columns that are not columns of their base relation are
>> not updatable.
>
> Thanks! I've attached a fix. I rewrote the DELETE error message a bit
> to match the existing errors in the file more closely.
>
> I'll make a CF entry.
committed