Temporarily instrument postgres_fdw test to look for statistics changes.

It seems fairly hard to explain recent buildfarm failures without the
theory that something is doing an ANALYZE behind our backs.  Probe
for this directly to see if it's true.

In principle the outputs of these queries should be stable, since the table
in question is small enough that ANALYZE's sample will include all rows.
But even if that turns out to be wrong, we can put up with some failures
for a bit.  I don't intend to leave this here indefinitely.

Discussion: https://postgr.es/m/25502.1520277552@sss.pgh.pa.us
This commit is contained in:
Tom Lane 2018-03-05 16:20:06 -05:00
parent 722408bcd1
commit c2c537c56d
2 changed files with 44 additions and 0 deletions

View file

@ -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)

View file

@ -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)