Re: BUG #16631: postgres_fdw tries to insert into generated columns - Mailing list pgsql-bugs

From Peter Eisentraut
Subject Re: BUG #16631: postgres_fdw tries to insert into generated columns
Date
Msg-id b1b88804-7612-42d7-dc85-b45579215d48@enterprisedb.com
Whole thread Raw
In response to Re: BUG #16631: postgres_fdw tries to insert into generated columns  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: BUG #16631: postgres_fdw tries to insert into generated columns
List pgsql-bugs
On 07.07.21 17:54, Tom Lane wrote:
> Peter Eisentraut <peter.eisentraut@enterprisedb.com> writes:
>> On 07.07.21 09:20, Etsuro Fujita wrote:
>>> * Modified nodeModifyTable.c and copyfrom.c so that they don't compute
>>> generated columns for FDWs anymore.
> 
>> I don't agree with that change.  What is the point of declaring a
>> generated column on a foreign table if you ignore it?  Then you might as
>> well prohibit declaring such columns in the first place.
> 
> Maybe what we need here is some documentation clarifying exactly what
> the point of a generated column on a foreign table actually *is*.
> When would you do it, and what relationship if any has it got to the
> generation status of the underlying remote column?

The behavior is explained here: 
https://www.postgresql.org/docs/current/sql-createforeigntable.html

If you have a foreign table with a column "a" and a column "b" generated 
as (a * 2), and say the underlying storage is a flat file, then the 
generated value is computed by the server and written to the file.  The 
file behaves essentially analogous to the regular table heap file.

The way I understand this bug report is, what if the underlying storage 
is another SQL database with its own generated columns.  Then how do we 
manage it so that IMPORT FOREIGN SCHEMA can mark the foreign table 
column as "column exists to be read, but don't write to it".  The 
proposal was to repurpose the generated column syntax for that, but that 
breaks the flat-file use case above.

The follow-up proposal was to let the FDW implementation decide.  I 
don't think that is always the right thing either.  What if I want the 
foreign-table node to do the computations, because it has access to 
special parameters or something.

There might be multiple possibilities of what is appropriate here.  But 
that's not something we can just change around as part of a bug fix.



pgsql-bugs by date:

Previous
From: PG Bug reporting form
Date:
Subject: BUG #17102: Running "create or replace language plperl" gives error
Next
From: "Ing Sergio Basurto J."
Date:
Subject: Re: BUG #17102: Running "create or replace language plperl" gives error