Skip to content

Commit 8018ffb

Browse files
committed
Generate pg_stat_get*() functions for databases using macros
The same code pattern is repeated 21 times for int64 counters (0 for missing entry) and 5 times for doubles (0 for missing entry) on database entries. This code is switched to use macros for the basic code instead, shaving a few hundred lines of originally-duplicated code patterns. The function names remain the same, but some fields of PgStat_StatDBEntry have to be renamed to cope with the new style. This is in the same spirit as 83a1a1b. Author: Michael Paquier Reviewed-by: Nathan Bossart, Bertrand Drouvot Discussion: https://postgr.es/m/[email protected]
1 parent 79f7c48 commit 8018ffb

File tree

4 files changed

+169
-447
lines changed

4 files changed

+169
-447
lines changed

src/backend/utils/activity/pgstat_database.c

+47-47
Original file line numberDiff line numberDiff line change
@@ -98,19 +98,19 @@ pgstat_report_recovery_conflict(int reason)
9898
*/
9999
break;
100100
case PROCSIG_RECOVERY_CONFLICT_TABLESPACE:
101-
dbentry->n_conflict_tablespace++;
101+
dbentry->conflict_tablespace++;
102102
break;
103103
case PROCSIG_RECOVERY_CONFLICT_LOCK:
104-
dbentry->n_conflict_lock++;
104+
dbentry->conflict_lock++;
105105
break;
106106
case PROCSIG_RECOVERY_CONFLICT_SNAPSHOT:
107-
dbentry->n_conflict_snapshot++;
107+
dbentry->conflict_snapshot++;
108108
break;
109109
case PROCSIG_RECOVERY_CONFLICT_BUFFERPIN:
110-
dbentry->n_conflict_bufferpin++;
110+
dbentry->conflict_bufferpin++;
111111
break;
112112
case PROCSIG_RECOVERY_CONFLICT_STARTUP_DEADLOCK:
113-
dbentry->n_conflict_startup_deadlock++;
113+
dbentry->conflict_startup_deadlock++;
114114
break;
115115
}
116116
}
@@ -127,7 +127,7 @@ pgstat_report_deadlock(void)
127127
return;
128128

129129
dbent = pgstat_prep_database_pending(MyDatabaseId);
130-
dbent->n_deadlocks++;
130+
dbent->deadlocks++;
131131
}
132132

133133
/*
@@ -150,7 +150,7 @@ pgstat_report_checksum_failures_in_db(Oid dboid, int failurecount)
150150
pgstat_get_entry_ref_locked(PGSTAT_KIND_DATABASE, dboid, InvalidOid, false);
151151

152152
sharedent = (PgStatShared_Database *) entry_ref->shared_stats;
153-
sharedent->stats.n_checksum_failures += failurecount;
153+
sharedent->stats.checksum_failures += failurecount;
154154
sharedent->stats.last_checksum_failure = GetCurrentTimestamp();
155155

156156
pgstat_unlock_entry(entry_ref);
@@ -177,8 +177,8 @@ pgstat_report_tempfile(size_t filesize)
177177
return;
178178

179179
dbent = pgstat_prep_database_pending(MyDatabaseId);
180-
dbent->n_temp_bytes += filesize;
181-
dbent->n_temp_files++;
180+
dbent->temp_bytes += filesize;
181+
dbent->temp_files++;
182182
}
183183

184184
/*
@@ -195,7 +195,7 @@ pgstat_report_connect(Oid dboid)
195195
pgLastSessionReportTime = MyStartTimestamp;
196196

197197
dbentry = pgstat_prep_database_pending(MyDatabaseId);
198-
dbentry->n_sessions++;
198+
dbentry->sessions++;
199199
}
200200

201201
/*
@@ -218,13 +218,13 @@ pgstat_report_disconnect(Oid dboid)
218218
/* we don't collect these */
219219
break;
220220
case DISCONNECT_CLIENT_EOF:
221-
dbentry->n_sessions_abandoned++;
221+
dbentry->sessions_abandoned++;
222222
break;
223223
case DISCONNECT_FATAL:
224-
dbentry->n_sessions_fatal++;
224+
dbentry->sessions_fatal++;
225225
break;
226226
case DISCONNECT_KILLED:
227-
dbentry->n_sessions_killed++;
227+
dbentry->sessions_killed++;
228228
break;
229229
}
230230
}
@@ -274,10 +274,10 @@ pgstat_update_dbstats(TimestampTz ts)
274274
* Accumulate xact commit/rollback and I/O timings to stats entry of the
275275
* current database.
276276
*/
277-
dbentry->n_xact_commit += pgStatXactCommit;
278-
dbentry->n_xact_rollback += pgStatXactRollback;
279-
dbentry->n_block_read_time += pgStatBlockReadTime;
280-
dbentry->n_block_write_time += pgStatBlockWriteTime;
277+
dbentry->xact_commit += pgStatXactCommit;
278+
dbentry->xact_rollback += pgStatXactRollback;
279+
dbentry->blk_read_time += pgStatBlockReadTime;
280+
dbentry->blk_write_time += pgStatBlockWriteTime;
281281

282282
if (pgstat_should_report_connstat())
283283
{
@@ -290,9 +290,9 @@ pgstat_update_dbstats(TimestampTz ts)
290290
*/
291291
TimestampDifference(pgLastSessionReportTime, ts, &secs, &usecs);
292292
pgLastSessionReportTime = ts;
293-
dbentry->total_session_time += (PgStat_Counter) secs * 1000000 + usecs;
294-
dbentry->total_active_time += pgStatActiveTime;
295-
dbentry->total_idle_in_xact_time += pgStatTransactionIdleTime;
293+
dbentry->session_time += (PgStat_Counter) secs * 1000000 + usecs;
294+
dbentry->active_time += pgStatActiveTime;
295+
dbentry->idle_in_transaction_time += pgStatTransactionIdleTime;
296296
}
297297

298298
pgStatXactCommit = 0;
@@ -370,44 +370,44 @@ pgstat_database_flush_cb(PgStat_EntryRef *entry_ref, bool nowait)
370370
#define PGSTAT_ACCUM_DBCOUNT(item) \
371371
(sharedent)->stats.item += (pendingent)->item
372372

373-
PGSTAT_ACCUM_DBCOUNT(n_xact_commit);
374-
PGSTAT_ACCUM_DBCOUNT(n_xact_rollback);
375-
PGSTAT_ACCUM_DBCOUNT(n_blocks_fetched);
376-
PGSTAT_ACCUM_DBCOUNT(n_blocks_hit);
373+
PGSTAT_ACCUM_DBCOUNT(xact_commit);
374+
PGSTAT_ACCUM_DBCOUNT(xact_rollback);
375+
PGSTAT_ACCUM_DBCOUNT(blocks_fetched);
376+
PGSTAT_ACCUM_DBCOUNT(blocks_hit);
377377

378-
PGSTAT_ACCUM_DBCOUNT(n_tuples_returned);
379-
PGSTAT_ACCUM_DBCOUNT(n_tuples_fetched);
380-
PGSTAT_ACCUM_DBCOUNT(n_tuples_inserted);
381-
PGSTAT_ACCUM_DBCOUNT(n_tuples_updated);
382-
PGSTAT_ACCUM_DBCOUNT(n_tuples_deleted);
378+
PGSTAT_ACCUM_DBCOUNT(tuples_returned);
379+
PGSTAT_ACCUM_DBCOUNT(tuples_fetched);
380+
PGSTAT_ACCUM_DBCOUNT(tuples_inserted);
381+
PGSTAT_ACCUM_DBCOUNT(tuples_updated);
382+
PGSTAT_ACCUM_DBCOUNT(tuples_deleted);
383383

384384
/* last_autovac_time is reported immediately */
385385
Assert(pendingent->last_autovac_time == 0);
386386

387-
PGSTAT_ACCUM_DBCOUNT(n_conflict_tablespace);
388-
PGSTAT_ACCUM_DBCOUNT(n_conflict_lock);
389-
PGSTAT_ACCUM_DBCOUNT(n_conflict_snapshot);
390-
PGSTAT_ACCUM_DBCOUNT(n_conflict_bufferpin);
391-
PGSTAT_ACCUM_DBCOUNT(n_conflict_startup_deadlock);
387+
PGSTAT_ACCUM_DBCOUNT(conflict_tablespace);
388+
PGSTAT_ACCUM_DBCOUNT(conflict_lock);
389+
PGSTAT_ACCUM_DBCOUNT(conflict_snapshot);
390+
PGSTAT_ACCUM_DBCOUNT(conflict_bufferpin);
391+
PGSTAT_ACCUM_DBCOUNT(conflict_startup_deadlock);
392392

393-
PGSTAT_ACCUM_DBCOUNT(n_temp_bytes);
394-
PGSTAT_ACCUM_DBCOUNT(n_temp_files);
395-
PGSTAT_ACCUM_DBCOUNT(n_deadlocks);
393+
PGSTAT_ACCUM_DBCOUNT(temp_bytes);
394+
PGSTAT_ACCUM_DBCOUNT(temp_files);
395+
PGSTAT_ACCUM_DBCOUNT(deadlocks);
396396

397397
/* checksum failures are reported immediately */
398-
Assert(pendingent->n_checksum_failures == 0);
398+
Assert(pendingent->checksum_failures == 0);
399399
Assert(pendingent->last_checksum_failure == 0);
400400

401-
PGSTAT_ACCUM_DBCOUNT(n_block_read_time);
402-
PGSTAT_ACCUM_DBCOUNT(n_block_write_time);
401+
PGSTAT_ACCUM_DBCOUNT(blk_read_time);
402+
PGSTAT_ACCUM_DBCOUNT(blk_write_time);
403403

404-
PGSTAT_ACCUM_DBCOUNT(n_sessions);
405-
PGSTAT_ACCUM_DBCOUNT(total_session_time);
406-
PGSTAT_ACCUM_DBCOUNT(total_active_time);
407-
PGSTAT_ACCUM_DBCOUNT(total_idle_in_xact_time);
408-
PGSTAT_ACCUM_DBCOUNT(n_sessions_abandoned);
409-
PGSTAT_ACCUM_DBCOUNT(n_sessions_fatal);
410-
PGSTAT_ACCUM_DBCOUNT(n_sessions_killed);
404+
PGSTAT_ACCUM_DBCOUNT(sessions);
405+
PGSTAT_ACCUM_DBCOUNT(session_time);
406+
PGSTAT_ACCUM_DBCOUNT(active_time);
407+
PGSTAT_ACCUM_DBCOUNT(idle_in_transaction_time);
408+
PGSTAT_ACCUM_DBCOUNT(sessions_abandoned);
409+
PGSTAT_ACCUM_DBCOUNT(sessions_fatal);
410+
PGSTAT_ACCUM_DBCOUNT(sessions_killed);
411411
#undef PGSTAT_ACCUM_DBCOUNT
412412

413413
pgstat_unlock_entry(entry_ref);

src/backend/utils/activity/pgstat_relation.c

+7-7
Original file line numberDiff line numberDiff line change
@@ -819,13 +819,13 @@ pgstat_relation_flush_cb(PgStat_EntryRef *entry_ref, bool nowait)
819819

820820
/* The entry was successfully flushed, add the same to database stats */
821821
dbentry = pgstat_prep_database_pending(dboid);
822-
dbentry->n_tuples_returned += lstats->t_counts.t_tuples_returned;
823-
dbentry->n_tuples_fetched += lstats->t_counts.t_tuples_fetched;
824-
dbentry->n_tuples_inserted += lstats->t_counts.t_tuples_inserted;
825-
dbentry->n_tuples_updated += lstats->t_counts.t_tuples_updated;
826-
dbentry->n_tuples_deleted += lstats->t_counts.t_tuples_deleted;
827-
dbentry->n_blocks_fetched += lstats->t_counts.t_blocks_fetched;
828-
dbentry->n_blocks_hit += lstats->t_counts.t_blocks_hit;
822+
dbentry->tuples_returned += lstats->t_counts.t_tuples_returned;
823+
dbentry->tuples_fetched += lstats->t_counts.t_tuples_fetched;
824+
dbentry->tuples_inserted += lstats->t_counts.t_tuples_inserted;
825+
dbentry->tuples_updated += lstats->t_counts.t_tuples_updated;
826+
dbentry->tuples_deleted += lstats->t_counts.t_tuples_deleted;
827+
dbentry->blocks_fetched += lstats->t_counts.t_blocks_fetched;
828+
dbentry->blocks_hit += lstats->t_counts.t_blocks_hit;
829829

830830
return true;
831831
}

0 commit comments

Comments
 (0)