postgrespro.git / summary / log / commit / refs

commit    4a539a25ebfc48329fd656a95f3c1eb2cda38af3
Author:   Fujii Masao <fujii@postgresql.org>
Date:     Mon Mar 30 03:15:26 2020 +0000

    Expose BufferUsageAccumDiff().
    
    Previously pg_stat_statements calculated the difference of buffer counters
    by its own code even while BufferUsageAccumDiff() had the same code.
    This commit expose BufferUsageAccumDiff() and makes pg_stat_statements
    use it for the calculation, in order to simply the code.
    
    This change also would be useful for the upcoming patch for the planning
    counters in pg_stat_statements because the patch will add one more code
    for the calculation of difference of buffer counters and that can easily be
    done by using BufferUsageAccumDiff().
    
    Author: Julien Rouhaud
    Reviewed-by: Fujii Masao
    Discussion: https://postgr.es/m/bdfee4e0-a304-2498-8da5-3cb52c0a193e@oss.nttdata.com


contrib/pg_stat_statements/pg_stat_statements.c | 26 ++----------------------- src/backend/executor/instrument.c | 4 +--- src/include/executor/instrument.h | 2 ++ 3 files changed, 5 insertions(+), 27 deletions(-) diff --git a/contrib/pg_stat_statements/pg_stat_statements.c b/contrib/pg_stat_statements/pg_stat_statements.c index 20dc8c605b..50c345378d 100644 --- a/contrib/pg_stat_statements/pg_stat_statements.c +++ b/contrib/pg_stat_statements/pg_stat_statements.c @@ -1016,30 +1016,8 @@ pgss_ProcessUtility(PlannedStmt *pstmt, const char *queryString, rows = (qc && qc->commandTag == CMDTAG_COPY) ? qc->nprocessed : 0; /* calc differences of buffer counters. */ - bufusage.shared_blks_hit = - pgBufferUsage.shared_blks_hit - bufusage_start.shared_blks_hit; - bufusage.shared_blks_read = - pgBufferUsage.shared_blks_read - bufusage_start.shared_blks_read; - bufusage.shared_blks_dirtied = - pgBufferUsage.shared_blks_dirtied - bufusage_start.shared_blks_dirtied; - bufusage.shared_blks_written = - pgBufferUsage.shared_blks_written - bufusage_start.shared_blks_written; - bufusage.local_blks_hit = - pgBufferUsage.local_blks_hit - bufusage_start.local_blks_hit; - bufusage.local_blks_read = - pgBufferUsage.local_blks_read - bufusage_start.local_blks_read; - bufusage.local_blks_dirtied = - pgBufferUsage.local_blks_dirtied - bufusage_start.local_blks_dirtied; - bufusage.local_blks_written = - pgBufferUsage.local_blks_written - bufusage_start.local_blks_written; - bufusage.temp_blks_read = - pgBufferUsage.temp_blks_read - bufusage_start.temp_blks_read; - bufusage.temp_blks_written = - pgBufferUsage.temp_blks_written - bufusage_start.temp_blks_written; - bufusage.blk_read_time = pgBufferUsage.blk_read_time; - INSTR_TIME_SUBTRACT(bufusage.blk_read_time, bufusage_start.blk_read_time); - bufusage.blk_write_time = pgBufferUsage.blk_write_time; - INSTR_TIME_SUBTRACT(bufusage.blk_write_time, bufusage_start.blk_write_time); + memset(&bufusage, 0, sizeof(BufferUsage)); + BufferUsageAccumDiff(&bufusage, &pgBufferUsage, &bufusage_start); pgss_store(queryString, 0, /* signal that it's a utility stmt */ diff --git a/src/backend/executor/instrument.c b/src/backend/executor/instrument.c index bc1d42bf64..042e10f96b 100644 --- a/src/backend/executor/instrument.c +++ b/src/backend/executor/instrument.c @@ -21,8 +21,6 @@ BufferUsage pgBufferUsage; static BufferUsage save_pgBufferUsage; static void BufferUsageAdd(BufferUsage *dst, const BufferUsage *add); -static void BufferUsageAccumDiff(BufferUsage *dst, - const BufferUsage *add, const BufferUsage *sub); /* Allocate new instrumentation structure(s) */ @@ -203,7 +201,7 @@ BufferUsageAdd(BufferUsage *dst, const BufferUsage *add) } /* dst += add - sub */ -static void +void BufferUsageAccumDiff(BufferUsage *dst, const BufferUsage *add, const BufferUsage *sub) diff --git a/src/include/executor/instrument.h b/src/include/executor/instrument.h index f48d46aede..3825a5ac1f 100644 --- a/src/include/executor/instrument.h +++ b/src/include/executor/instrument.h @@ -81,5 +81,7 @@ extern void InstrAggNode(Instrumentation *dst, Instrumentation *add); extern void InstrStartParallelQuery(void); extern void InstrEndParallelQuery(BufferUsage *result); extern void InstrAccumParallelQuery(BufferUsage *result); +extern void BufferUsageAccumDiff(BufferUsage *dst, + const BufferUsage *add, const BufferUsage *sub); #endif /* INSTRUMENT_H */ [parent: b61d161c1463]