Here is a test case that shows that it works:
create extension postgres_fdw;
create server fs_postgres foreign data wrapper postgres_fdw options
(dbname 'postgres');
create user mapping for current_user server fs_postgres;
CREATE TABLE public.test (
id integer PRIMARY KEY,
field1 integer NOT NULL,
field2 character varying,
field_calc integer
);
CREATE FOREIGN TABLE public.test_ft (
id integer,
field1 integer,
field2 character varying,
field_calc integer generated always as (field1 * 2) stored
)
SERVER fs_postgres OPTIONS(table_name 'test');
insert into test_ft (id, field1, field2) values (1, 2, 'one');
select * from test_ft;
id | field1 | field2 | field_calc
----+--------+--------+------------
1 | 2 | one | 4
select * from test;
id | field1 | field2 | field_calc
----+--------+--------+------------
1 | 2 | one | 4
In your case, were you adding columns to existing tables? Depending on
the order of actions, it might not work the way one might think.
Can you reproduce your problem from a blank database?
--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services