4ba012a8ed9c defined the "header" (pointer to the stats data) of
from_serialized_data() as a const, even though it is fine (and
expected!) for the callback to modify the shared memory entry when
loading the stats at startup.
While on it, this commit updates the callback to_serialized_data() in
the test module test_custom_stats to make the data extracted from the
"header" parameter a const since it should never be modified: the stats
are written to disk and no modifications are expected in the shared
memory entry.
This clarifies the API contract of these new callbacks.
Reported-By: Peter Eisentraut <[email protected]>
Author: Michael Paquier <
[email protected]>
Co-authored-by: Sami Imseih <[email protected]>
Discussion: https://postgr.es/m/
d87a93b0-19c7-4db6-b9c0-
d6827e7b2da1@eisentraut.org
*
* "statfile" is a pointer to the on-disk stats file, named
* PGSTAT_STAT_PERMANENT_FILENAME. "key" is the hash key of the entry
*
* "statfile" is a pointer to the on-disk stats file, named
* PGSTAT_STAT_PERMANENT_FILENAME. "key" is the hash key of the entry
- * just written or read. "header" is a pointer to the stats data.
+ * just written or read. "header" is a pointer to the stats data; it may
+ * be modified only in from_serialized_data to reconstruct an entry.
*/
void (*to_serialized_data) (const PgStat_HashKey *key,
const PgStatShared_Common *header,
FILE *statfile);
bool (*from_serialized_data) (const PgStat_HashKey *key,
*/
void (*to_serialized_data) (const PgStat_HashKey *key,
const PgStatShared_Common *header,
FILE *statfile);
bool (*from_serialized_data) (const PgStat_HashKey *key,
- const PgStatShared_Common *header,
+ PgStatShared_Common *header,
/* Deserialization callback: read auxiliary entry data */
static bool test_custom_stats_var_from_serialized_data(const PgStat_HashKey *key,
/* Deserialization callback: read auxiliary entry data */
static bool test_custom_stats_var_from_serialized_data(const PgStat_HashKey *key,
- const PgStatShared_Common *header,
+ PgStatShared_Common *header,
FILE *statfile);
/* Finish callback: end of statistics file operations */
FILE *statfile);
/* Finish callback: end of statistics file operations */
{
char *description;
size_t len;
{
char *description;
size_t len;
- PgStatShared_CustomVarEntry *entry = (PgStatShared_CustomVarEntry *) header;
+ const PgStatShared_CustomVarEntry *entry = (const PgStatShared_CustomVarEntry *) header;
bool found;
uint32 magic_number = TEST_CUSTOM_VAR_MAGIC_NUMBER;
bool found;
uint32 magic_number = TEST_CUSTOM_VAR_MAGIC_NUMBER;
*/
static bool
test_custom_stats_var_from_serialized_data(const PgStat_HashKey *key,
*/
static bool
test_custom_stats_var_from_serialized_data(const PgStat_HashKey *key,
- const PgStatShared_Common *header,
+ PgStatShared_Common *header,
FILE *statfile)
{
PgStatShared_CustomVarEntry *entry;
FILE *statfile)
{
PgStatShared_CustomVarEntry *entry;