diff --git a/contrib/postgres_fdw/expected/postgres_fdw.out b/contrib/postgres_fdw/expected/postgres_fdw.out index a2b13846e0..cbb5daa239 100644 --- a/contrib/postgres_fdw/expected/postgres_fdw.out +++ b/contrib/postgres_fdw/expected/postgres_fdw.out @@ -87,6 +87,23 @@ ANALYZE "S 1"."T 1"; ANALYZE "S 1"."T 2"; ANALYZE "S 1"."T 3"; ANALYZE "S 1"."T 4"; +-- record relpages for T 1 +create temp table save_t_1_relpages as + select relpages as old_relpages from pg_class where relname = 'T 1'; +select relpages - (select old_relpages from save_t_1_relpages) as pg_delta, + reltuples from pg_class where relname = 'T 1'; + pg_delta | reltuples +----------+----------- + 0 | 1000 +(1 row) + +select (histogram_bounds::text::int[])[array_length(histogram_bounds,1)] + from pg_stats where tablename = 'T 1' and attname = 'C 1'; + histogram_bounds +------------------ + 1000 +(1 row) + -- =================================================================== -- create foreign tables -- =================================================================== @@ -5520,6 +5537,20 @@ UPDATE ft2 SET c3 = 'bar' WHERE postgres_fdw_abs(c1) > 2000 RETURNING *; 2010 | 0 | bar | | | | ft2 | (10 rows) +select relpages - (select old_relpages from save_t_1_relpages) as pg_delta, + reltuples from pg_class where relname = 'T 1'; + pg_delta | reltuples +----------+----------- + 0 | 1000 +(1 row) + +select (histogram_bounds::text::int[])[array_length(histogram_bounds,1)] + from pg_stats where tablename = 'T 1' and attname = 'C 1'; + histogram_bounds +------------------ + 1000 +(1 row) + EXPLAIN (verbose, costs off) UPDATE ft2 SET c3 = 'baz' FROM ft4 INNER JOIN ft5 ON (ft4.c1 = ft5.c1) diff --git a/contrib/postgres_fdw/sql/postgres_fdw.sql b/contrib/postgres_fdw/sql/postgres_fdw.sql index 4d2e43c9f0..8b1407b959 100644 --- a/contrib/postgres_fdw/sql/postgres_fdw.sql +++ b/contrib/postgres_fdw/sql/postgres_fdw.sql @@ -95,6 +95,15 @@ ANALYZE "S 1"."T 2"; ANALYZE "S 1"."T 3"; ANALYZE "S 1"."T 4"; +-- record relpages for T 1 +create temp table save_t_1_relpages as + select relpages as old_relpages from pg_class where relname = 'T 1'; + +select relpages - (select old_relpages from save_t_1_relpages) as pg_delta, + reltuples from pg_class where relname = 'T 1'; +select (histogram_bounds::text::int[])[array_length(histogram_bounds,1)] + from pg_stats where tablename = 'T 1' and attname = 'C 1'; + -- =================================================================== -- create foreign tables -- =================================================================== @@ -1139,6 +1148,10 @@ INSERT INTO ft2 (c1,c2,c3) EXPLAIN (verbose, costs off) UPDATE ft2 SET c3 = 'bar' WHERE postgres_fdw_abs(c1) > 2000 RETURNING *; -- can't be pushed down UPDATE ft2 SET c3 = 'bar' WHERE postgres_fdw_abs(c1) > 2000 RETURNING *; +select relpages - (select old_relpages from save_t_1_relpages) as pg_delta, + reltuples from pg_class where relname = 'T 1'; +select (histogram_bounds::text::int[])[array_length(histogram_bounds,1)] + from pg_stats where tablename = 'T 1' and attname = 'C 1'; EXPLAIN (verbose, costs off) UPDATE ft2 SET c3 = 'baz' FROM ft4 INNER JOIN ft5 ON (ft4.c1 = ft5.c1)