-- DROP SERVER IF EXISTS pgs1 CASCADE; -- DROP VIEW IF EXISTS v CASCADE; -- DROP TABLE IF EXISTS t CASCADE; CREATE SERVER pgs1 FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host '/tmp', dbname 'postgres', use_remote_estimate 'true', max_aux_connections '3'); CREATE USER MAPPING FOR CURRENT_USER SERVER pgs1; CREATE TABLE t (a int, b int, c text); ALTER TABLE t ALTER COLUMN c SET STORAGE PLAIN; INSERT INTO t (SELECT random() * 10000, random() * 10000, repeat('X', (random() * 1000)::int) FROM generate_series(0, 2999)); CREATE VIEW v AS SELECT a.a, a.b, a.c, b.a AS a2, b.b AS b2, b.c AS c2 FROM t a, t b WHERE a.b + b.b = 1000 ORDER BY a.b LIMIT 10; CREATE FOREIGN TABLE fts1 (a int, b int, c text) SERVER pgs1 OPTIONS (table_name 't'); CREATE FOREIGN TABLE fvs1 (a int, b int, c text, a2 int, b2 int, c2 text) SERVER pgs1 OPTIONS (table_name 'v'); SET parallel_ratio_threshold to 1.0; EXPLAIN ANALYZE SELECT a.a, a.b, b.c FROM fvs1 a join fvs1 b on (a.a = b.a); SET parallel_ratio_threshold to 0.0; EXPLAIN ANALYZE SELECT a.a, a.b, b.c FROM fvs1 a join fvs1 b on (a.a = b.a);