diff options
author | Alvaro Herrera | 2015-02-20 15:10:01 +0000 |
---|---|---|
committer | Alvaro Herrera | 2015-02-20 15:10:01 +0000 |
commit | d42358efb16cc81122c53ffb35ac381b9158e519 (patch) | |
tree | 1358afb9c3db05813fdc64de89955561d23441e9 /src/include/pgstat.h | |
parent | 5740be6d6e39dd85587aa71b3bd1fb0a423858b0 (diff) |
Have TRUNCATE update pgstat tuple counters
This works by keeping a per-subtransaction record of the ins/upd/del
counters before the truncate, and then resetting them; this record is
useful to return to the previous state in case the truncate is rolled
back, either in a subtransaction or whole transaction. The state is
propagated upwards as subtransactions commit.
When the per-table data is sent to the stats collector, a flag indicates
to reset the live/dead counters to zero as well.
Catalog version bumped due to the change in pgstat format.
Author: Alexander Shulgin
Discussion: 1007.1207238291@sss.pgh.pa.us
Discussion: 548F7D38.2000401@BlueTreble.com
Reviewed-by: Álvaro Herrera, Jim Nasby
Diffstat (limited to 'src/include/pgstat.h')
-rw-r--r-- | src/include/pgstat.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/include/pgstat.h b/src/include/pgstat.h index 416769a7850..6356085785c 100644 --- a/src/include/pgstat.h +++ b/src/include/pgstat.h @@ -104,6 +104,7 @@ typedef struct PgStat_TableCounts PgStat_Counter t_tuples_updated; PgStat_Counter t_tuples_deleted; PgStat_Counter t_tuples_hot_updated; + bool t_truncated; PgStat_Counter t_delta_live_tuples; PgStat_Counter t_delta_dead_tuples; @@ -165,6 +166,10 @@ typedef struct PgStat_TableXactStatus PgStat_Counter tuples_inserted; /* tuples inserted in (sub)xact */ PgStat_Counter tuples_updated; /* tuples updated in (sub)xact */ PgStat_Counter tuples_deleted; /* tuples deleted in (sub)xact */ + bool truncated; /* relation truncated in this (sub)xact */ + PgStat_Counter inserted_pre_trunc; /* tuples inserted prior to truncate */ + PgStat_Counter updated_pre_trunc; /* tuples updated prior to truncate */ + PgStat_Counter deleted_pre_trunc; /* tuples deleted prior to truncate */ int nest_level; /* subtransaction nest level */ /* links to other structs for same relation: */ struct PgStat_TableXactStatus *upper; /* next higher subxact if any */ @@ -960,6 +965,7 @@ extern void pgstat_initstats(Relation rel); extern void pgstat_count_heap_insert(Relation rel, int n); extern void pgstat_count_heap_update(Relation rel, bool hot); extern void pgstat_count_heap_delete(Relation rel); +extern void pgstat_count_truncate(Relation rel); extern void pgstat_update_heap_dead_tuples(Relation rel, int delta); extern void pgstat_init_function_usage(FunctionCallInfoData *fcinfo, |