aboutsummaryrefslogtreecommitdiff
path: root/contrib/postgres_fdw
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2018-03-05 16:20:06 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2018-03-05 16:20:06 -0500
commitc2c537c56dc30ec3cdc12051f4ea5363aa66d73c (patch)
tree684a1b71ec4a44b7790b3e2b602a3dd0b0a3b3b1 /contrib/postgres_fdw
parent722408bcd1bde0b007f73b41135382af11b0282d (diff)
downloadpostgresql-c2c537c56dc30ec3cdc12051f4ea5363aa66d73c.tar.gz
postgresql-c2c537c56dc30ec3cdc12051f4ea5363aa66d73c.zip
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
Diffstat (limited to 'contrib/postgres_fdw')
-rw-r--r--contrib/postgres_fdw/expected/postgres_fdw.out31
-rw-r--r--contrib/postgres_fdw/sql/postgres_fdw.sql13
2 files changed, 44 insertions, 0 deletions
diff --git a/contrib/postgres_fdw/expected/postgres_fdw.out b/contrib/postgres_fdw/expected/postgres_fdw.out
index a2b13846e0f..cbb5daa2390 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 4d2e43c9f05..8b1407b959a 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)