0001-Adds-cached-and-loaded-stats.patch
text/x-patch
Filename: 0001-Adds-cached-and-loaded-stats.patch
Type: text/x-patch
Part: 0
Message:
Injection Points remaining stats
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch 0001
Subject: This patch adds missing cached and loaded stats to injection_points_stats_fixed as mentioned in commit #f68cd847fa
| File | + | − |
|---|---|---|
| src/test/modules/injection_points/injection_points--1.0.sql | 3 | 1 |
| src/test/modules/injection_points/injection_points.c | 5 | 3 |
| src/test/modules/injection_points/injection_stats_fixed.c | 20 | 4 |
| src/test/modules/injection_points/injection_stats.h | 3 | 1 |
| src/test/modules/injection_points/t/001_stats.pl | 3 | 3 |
From 52ac2b14ee34d606aae97b2648c6708901c324b4 Mon Sep 17 00:00:00 2001
From: Yogesh Sharma <yogesh.sharma@catprosystems.com>
Date: Wed, 7 Aug 2024 15:32:35 -0400
Subject: [PATCH] This patch adds missing cached and loaded stats to
injection_points_stats_fixed as mentioned in commit #f68cd847fa
---
.../injection_points--1.0.sql | 4 +++-
.../injection_points/injection_points.c | 8 ++++---
.../injection_points/injection_stats.h | 4 +++-
.../injection_points/injection_stats_fixed.c | 24 +++++++++++++++----
.../modules/injection_points/t/001_stats.pl | 6 ++---
5 files changed, 34 insertions(+), 12 deletions(-)
diff --git a/src/test/modules/injection_points/injection_points--1.0.sql b/src/test/modules/injection_points/injection_points--1.0.sql
index 1b2a4938a9..6c81d55e0d 100644
--- a/src/test/modules/injection_points/injection_points--1.0.sql
+++ b/src/test/modules/injection_points/injection_points--1.0.sql
@@ -91,7 +91,9 @@ LANGUAGE C STRICT;
-- Reports fixed-numbered statistics for injection points.
CREATE FUNCTION injection_points_stats_fixed(OUT numattach int8,
OUT numdetach int8,
- OUT numrun int8)
+ OUT numrun int8,
+ OUT numcached int8,
+ OUT numloaded int8)
RETURNS record
AS 'MODULE_PATHNAME', 'injection_points_stats_fixed'
LANGUAGE C STRICT;
diff --git a/src/test/modules/injection_points/injection_points.c b/src/test/modules/injection_points/injection_points.c
index dc02be1bbf..221b826d8d 100644
--- a/src/test/modules/injection_points/injection_points.c
+++ b/src/test/modules/injection_points/injection_points.c
@@ -297,7 +297,7 @@ injection_points_attach(PG_FUNCTION_ARGS)
condition.pid = MyProcPid;
}
- pgstat_report_inj_fixed(1, 0, 0);
+ pgstat_report_inj_fixed(1, 0, 0, 0, 0);
InjectionPointAttach(name, "injection_points", function, &condition,
sizeof(InjectionPointCondition));
@@ -329,6 +329,7 @@ injection_points_load(PG_FUNCTION_ARGS)
if (inj_state == NULL)
injection_init_shmem();
+ pgstat_report_inj_fixed(0, 0, 0, 0, 1);
INJECTION_POINT_LOAD(name);
PG_RETURN_VOID();
@@ -343,7 +344,7 @@ injection_points_run(PG_FUNCTION_ARGS)
{
char *name = text_to_cstring(PG_GETARG_TEXT_PP(0));
- pgstat_report_inj_fixed(0, 0, 1);
+ pgstat_report_inj_fixed(0, 0, 1, 0, 0);
INJECTION_POINT(name);
PG_RETURN_VOID();
@@ -358,6 +359,7 @@ injection_points_cached(PG_FUNCTION_ARGS)
{
char *name = text_to_cstring(PG_GETARG_TEXT_PP(0));
+ pgstat_report_inj_fixed(0, 0, 0, 1, 0);
INJECTION_POINT_CACHED(name);
PG_RETURN_VOID();
@@ -434,7 +436,7 @@ injection_points_detach(PG_FUNCTION_ARGS)
{
char *name = text_to_cstring(PG_GETARG_TEXT_PP(0));
- pgstat_report_inj_fixed(0, 1, 0);
+ pgstat_report_inj_fixed(0, 1, 0, 0, 0);
if (!InjectionPointDetach(name))
elog(ERROR, "could not detach injection point \"%s\"", name);
diff --git a/src/test/modules/injection_points/injection_stats.h b/src/test/modules/injection_points/injection_stats.h
index d519f29f83..126c110169 100644
--- a/src/test/modules/injection_points/injection_stats.h
+++ b/src/test/modules/injection_points/injection_stats.h
@@ -25,6 +25,8 @@ extern void pgstat_report_inj(const char *name);
extern void pgstat_register_inj_fixed(void);
extern void pgstat_report_inj_fixed(uint32 numattach,
uint32 numdetach,
- uint32 numrun);
+ uint32 numrun,
+ uint32 numcached,
+ uint32 numloaded);
#endif
diff --git a/src/test/modules/injection_points/injection_stats_fixed.c b/src/test/modules/injection_points/injection_stats_fixed.c
index 72a5f9decb..e01da5c688 100644
--- a/src/test/modules/injection_points/injection_stats_fixed.c
+++ b/src/test/modules/injection_points/injection_stats_fixed.c
@@ -29,6 +29,8 @@ typedef struct PgStat_StatInjFixedEntry
PgStat_Counter numattach; /* number of points attached */
PgStat_Counter numdetach; /* number of points detached */
PgStat_Counter numrun; /* number of points run */
+ PgStat_Counter numcached; /* number of points cached */
+ PgStat_Counter numloaded; /* number of points loaded */
TimestampTz stat_reset_timestamp;
} PgStat_StatInjFixedEntry;
@@ -114,6 +116,8 @@ injection_stats_fixed_snapshot_cb(void)
FIXED_COMP(numattach);
FIXED_COMP(numdetach);
FIXED_COMP(numrun);
+ FIXED_COMP(numcached);
+ FIXED_COMP(numloaded);
#undef FIXED_COMP
}
@@ -135,7 +139,9 @@ pgstat_register_inj_fixed(void)
void
pgstat_report_inj_fixed(uint32 numattach,
uint32 numdetach,
- uint32 numrun)
+ uint32 numrun,
+ uint32 numcached,
+ uint32 numloaded)
{
PgStatShared_InjectionPointFixed *stats_shmem;
@@ -149,6 +155,8 @@ pgstat_report_inj_fixed(uint32 numattach,
stats_shmem->stats.numattach += numattach;
stats_shmem->stats.numdetach += numdetach;
stats_shmem->stats.numrun += numrun;
+ stats_shmem->stats.numcached += numcached;
+ stats_shmem->stats.numloaded += numloaded;
pgstat_end_changecount_write(&stats_shmem->changecount);
}
@@ -160,8 +168,8 @@ Datum
injection_points_stats_fixed(PG_FUNCTION_ARGS)
{
TupleDesc tupdesc;
- Datum values[3] = {0};
- bool nulls[3] = {0};
+ Datum values[5] = {0};
+ bool nulls[5] = {0};
PgStat_StatInjFixedEntry *stats;
if (!inj_fixed_loaded)
@@ -171,21 +179,29 @@ injection_points_stats_fixed(PG_FUNCTION_ARGS)
stats = pgstat_get_custom_snapshot_data(PGSTAT_KIND_INJECTION_FIXED);
/* Initialise attributes information in the tuple descriptor */
- tupdesc = CreateTemplateTupleDesc(3);
+ tupdesc = CreateTemplateTupleDesc(5);
TupleDescInitEntry(tupdesc, (AttrNumber) 1, "numattach",
INT8OID, -1, 0);
TupleDescInitEntry(tupdesc, (AttrNumber) 2, "numdetach",
INT8OID, -1, 0);
TupleDescInitEntry(tupdesc, (AttrNumber) 3, "numrun",
INT8OID, -1, 0);
+ TupleDescInitEntry(tupdesc, (AttrNumber) 4, "numcached",
+ INT8OID, -1, 0);
+ TupleDescInitEntry(tupdesc, (AttrNumber) 5, "numloaded",
+ INT8OID, -1, 0);
BlessTupleDesc(tupdesc);
values[0] = Int64GetDatum(stats->numattach);
values[1] = Int64GetDatum(stats->numdetach);
values[2] = Int64GetDatum(stats->numrun);
+ values[3] = Int64GetDatum(stats->numcached);
+ values[4] = Int64GetDatum(stats->numloaded);
nulls[0] = false;
nulls[1] = false;
nulls[2] = false;
+ nulls[3] = false;
+ nulls[4] = false;
/* Returns the record as Datum */
PG_RETURN_DATUM(HeapTupleGetDatum(heap_form_tuple(tupdesc, values, nulls)));
diff --git a/src/test/modules/injection_points/t/001_stats.pl b/src/test/modules/injection_points/t/001_stats.pl
index 7897691f95..2f7231a9dc 100644
--- a/src/test/modules/injection_points/t/001_stats.pl
+++ b/src/test/modules/injection_points/t/001_stats.pl
@@ -35,7 +35,7 @@ my $numcalls = $node->safe_psql('postgres',
is($numcalls, '2', 'number of stats calls');
my $fixedstats = $node->safe_psql('postgres',
"SELECT * FROM injection_points_stats_fixed();");
-is($fixedstats, '1|0|2', 'number of fixed stats');
+is($fixedstats, '1|0|2|0|0', 'number of fixed stats');
# Restart the node cleanly, stats should still be around.
$node->restart;
@@ -44,7 +44,7 @@ $numcalls = $node->safe_psql('postgres',
is($numcalls, '2', 'number of stats after clean restart');
$fixedstats = $node->safe_psql('postgres',
"SELECT * FROM injection_points_stats_fixed();");
-is($fixedstats, '1|0|2', 'number of fixed stats after clean restart');
+is($fixedstats, '1|0|2|0|0', 'number of fixed stats after clean restart');
# On crash the stats are gone.
$node->stop('immediate');
@@ -54,6 +54,6 @@ $numcalls = $node->safe_psql('postgres',
is($numcalls, '', 'number of stats after crash');
$fixedstats = $node->safe_psql('postgres',
"SELECT * FROM injection_points_stats_fixed();");
-is($fixedstats, '0|0|0', 'number of fixed stats after crash');
+is($fixedstats, '0|0|0|0|0', 'number of fixed stats after crash');
done_testing();
--
2.45.2