minor-vacuum.no-cbot
text/plain
diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c
index 11820a5791c..5406102dcbf 100644
--- a/src/backend/utils/adt/pgstatfuncs.c
+++ b/src/backend/utils/adt/pgstatfuncs.c
@@ -2235,6 +2235,8 @@ pg_stats_vacuum(FunctionCallInfo fcinfo, ExtVacReportType type, int ncolumns)
SnapshotIterator hashiter;
PgStat_SnapshotEntry *entry;
+ pgstat_update_snapshot(PGSTAT_KIND_RELATION);
+
/* Iterate the snapshot */
InitSnapshotIterator(pgStatLocal.snapshot.stats, &hashiter);
@@ -2245,7 +2247,7 @@ pg_stats_vacuum(FunctionCallInfo fcinfo, ExtVacReportType type, int ncolumns)
tabentry = (PgStat_StatTabEntry *) entry->data;
if (tabentry != NULL && tabentry->vacuum_ext.type == type)
- tuplestore_put_for_relation(relid, rsinfo, tabentry);
+ tuplestore_put_for_relation(entry->key.objoid, rsinfo, tabentry);
}
}
}
@@ -2290,10 +2292,9 @@ pg_stat_vacuum_indexes(PG_FUNCTION_ARGS)
{
pg_stats_vacuum(fcinfo, PGSTAT_EXTVAC_INDEX, EXTVACIDXSTAT_COLUMNS);
- PG_RETURN_VOID();
+ PG_RETURN_VOID();
}
-
/*
* Get the vacuum statistics for the database.
*/
diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
index b04711bb0a3..8709a218145 100644
--- a/src/include/catalog/pg_proc.dat
+++ b/src/include/catalog/pg_proc.dat
@@ -12256,7 +12256,7 @@
prosrc => 'pg_get_wal_summarizer_state' },
{ oid => '8001',
descr => 'pg_stat_vacuum_tables return stats values',
- proname => 'pg_stat_vacuum_tables', provolatile => 's', prorettype => 'record',proisstrict => 'f',
+ proname => 'pg_stat_vacuum_tables', prorows => 1000, provolatile => 's', prorettype => 'record',proisstrict => 'f',
proretset => 't',
proargtypes => 'oid',
proallargtypes => '{oid,oid,int8,int8,int8,int8,int8,int8,int8,int8,int8,int8,int8,int8,int8,int8,int8,int8,int8,int8,numeric,float8,float8,float8,float8,float8,float8,int4}',
@@ -12265,7 +12265,7 @@
prosrc => 'pg_stat_vacuum_tables' },
{ oid => '8002',
descr => 'pg_stat_vacuum_indexes return stats values',
- proname => 'pg_stat_vacuum_indexes', provolatile => 's', prorettype => 'record',proisstrict => 'f',
+ proname => 'pg_stat_vacuum_indexes', prorows => 1000, provolatile => 's', prorettype => 'record',proisstrict => 'f',
proretset => 't',
proargtypes => 'oid',
proallargtypes => '{oid,oid,int8,int8,int8,int8,int8,int8,int8,int8,int8,int8,numeric,float8,float8,float8,float8,float8,float8,int4}',
@@ -12274,7 +12274,7 @@
prosrc => 'pg_stat_vacuum_indexes' },
{ oid => '8003',
descr => 'pg_stat_vacuum_database return stats values',
- proname => 'pg_stat_vacuum_database', provolatile => 's', prorettype => 'record',proisstrict => 'f',
+ proname => 'pg_stat_vacuum_database', prorows => 1000, provolatile => 's', prorettype => 'record',proisstrict => 'f',
proretset => 't',
proargtypes => 'oid',
proallargtypes => '{oid,oid,int8,int8,int8,int8,int8,int8,numeric,float8,float8,float8,float8,float8,float8,int4}',
diff --git a/src/test/regress/expected/opr_sanity.out b/src/test/regress/expected/opr_sanity.out
index 7026de157e4..0d734169f11 100644
--- a/src/test/regress/expected/opr_sanity.out
+++ b/src/test/regress/expected/opr_sanity.out
@@ -32,12 +32,9 @@ WHERE p1.prolang = 0 OR p1.prorettype = 0 OR
prokind NOT IN ('f', 'a', 'w', 'p') OR
provolatile NOT IN ('i', 's', 'v') OR
proparallel NOT IN ('s', 'r', 'u');
- oid | proname
-------+-------------------------
- 8001 | pg_stat_vacuum_tables
- 8002 | pg_stat_vacuum_indexes
- 8003 | pg_stat_vacuum_database
-(3 rows)
+ oid | proname
+-----+---------
+(0 rows)
-- prosrc should never be null; it can be empty only if prosqlbody isn't null
SELECT p1.oid, p1.proname
diff --git a/src/test/regress/expected/rules.out b/src/test/regress/expected/rules.out
index bedcae46fc7..e0dcc513972 100644
--- a/src/test/regress/expected/rules.out
+++ b/src/test/regress/expected/rules.out
@@ -2278,7 +2278,7 @@ pg_stat_vacuum_indexes| SELECT rel.oid AS relid,
pg_class rel,
pg_namespace ns,
LATERAL pg_stat_vacuum_indexes(rel.oid) stats(relid, total_blks_read, total_blks_hit, total_blks_dirtied, total_blks_written, rel_blks_read, rel_blks_hit, pages_deleted, tuples_deleted, wal_records, wal_fpi, wal_bytes, blk_read_time, blk_write_time, delay_time, system_time, user_time, total_time, interrupts)
- WHERE ((db.datname = current_database()) AND (rel.oid = stats.relid) AND (ns.oid = rel.relnamespace));
+ WHERE ((db.datname = current_database()) AND (rel.oid = stats.relid) AND (ns.oid = rel.relnamespace) AND (rel.relkind = 'i'::"char"));
pg_stat_vacuum_tables| SELECT rel.oid AS relid,
ns.nspname AS schema,
rel.relname,
@@ -2312,7 +2312,7 @@ pg_stat_vacuum_tables| SELECT rel.oid AS relid,
pg_class rel,
pg_namespace ns,
LATERAL pg_stat_vacuum_tables(rel.oid) stats(relid, total_blks_read, total_blks_hit, total_blks_dirtied, total_blks_written, rel_blks_read, rel_blks_hit, pages_scanned, pages_removed, pages_frozen, pages_all_visible, tuples_deleted, tuples_frozen, dead_tuples, index_vacuum_count, rev_all_frozen_pages, rev_all_visible_pages, wal_records, wal_fpi, wal_bytes, blk_read_time, blk_write_time, delay_time, system_time, user_time, total_time, interrupts)
- WHERE ((db.datname = current_database()) AND (rel.oid = stats.relid) AND (ns.oid = rel.relnamespace));
+ WHERE ((db.datname = current_database()) AND (rel.oid = stats.relid) AND (ns.oid = rel.relnamespace) AND (rel.relkind = 'r'::"char"));
pg_stat_wal| SELECT wal_records,
wal_fpi,
wal_bytes,
diff --git a/src/test/regress/expected/vacuum_index_statistics.out b/src/test/regress/expected/vacuum_index_statistics.out
index a0da8d25f1a..4f6e305710e 100644
--- a/src/test/regress/expected/vacuum_index_statistics.out
+++ b/src/test/regress/expected/vacuum_index_statistics.out
@@ -155,4 +155,10 @@ WHERE vt.relname = 'vestat_pkey' AND vt.relid = c.oid;
vestat_pkey | f | t | t
(1 row)
+SELECT min(relid) FROM pg_stat_vacuum_indexes(0);
+ min
+------
+ 1232
+(1 row)
+
DROP TABLE vestat;
diff --git a/src/test/regress/expected/vacuum_tables_and_db_statistics.out b/src/test/regress/expected/vacuum_tables_and_db_statistics.out
index ec0cf97e2da..fbbb26560df 100644
--- a/src/test/regress/expected/vacuum_tables_and_db_statistics.out
+++ b/src/test/regress/expected/vacuum_tables_and_db_statistics.out
@@ -199,6 +199,12 @@ FROM pg_stat_vacuum_tables WHERE relname = 'vestat';
t | t | t | t
(1 row)
+SELECT min(relid) FROM pg_stat_vacuum_tables(0) where relid > 0;
+ min
+------
+ 1213
+(1 row)
+
-- Now check vacuum statistics for current database
SELECT dbname,
db_blks_hit > 0 AS db_blks_hit,
diff --git a/src/test/regress/sql/vacuum_index_statistics.sql b/src/test/regress/sql/vacuum_index_statistics.sql
index 9113fd26e6f..75e5974eb59 100644
--- a/src/test/regress/sql/vacuum_index_statistics.sql
+++ b/src/test/regress/sql/vacuum_index_statistics.sql
@@ -125,4 +125,6 @@ SELECT vt.relname,relpages-:irp = 0 AS relpages,pages_deleted-:ipd = 0 AS pages_
FROM pg_stat_vacuum_indexes vt, pg_class c
WHERE vt.relname = 'vestat_pkey' AND vt.relid = c.oid;
+SELECT min(relid) FROM pg_stat_vacuum_indexes(0);
+
DROP TABLE vestat;
diff --git a/src/test/regress/sql/vacuum_tables_and_db_statistics.sql b/src/test/regress/sql/vacuum_tables_and_db_statistics.sql
index ed9bb852625..3f19936ca61 100644
--- a/src/test/regress/sql/vacuum_tables_and_db_statistics.sql
+++ b/src/test/regress/sql/vacuum_tables_and_db_statistics.sql
@@ -159,6 +159,8 @@ VACUUM (PARALLEL 0, BUFFER_USAGE_LIMIT 128) vestat;
SELECT pages_frozen = :pf AS pages_frozen,pages_all_visible = :pv AS pages_all_visible,rev_all_frozen_pages = :hafp AS rev_all_frozen_pages,rev_all_visible_pages = :havp AS rev_all_visible_pages
FROM pg_stat_vacuum_tables WHERE relname = 'vestat';
+SELECT min(relid) FROM pg_stat_vacuum_tables(0) where relid > 0;
+
-- Now check vacuum statistics for current database
SELECT dbname,
db_blks_hit > 0 AS db_blks_hit,