1
0
mirror of https://github.com/postgres/postgres.git synced 2025-10-16 17:07:43 +03:00

Make some use of anonymous unions [DSM registry].

Make some use of anonymous unions, which are allowed as of C11, as
examples and encouragement for future code, and to test compilers.

This commit changes the DSMRegistryEntry struct.

Reviewed-by: Peter Eisentraut <peter@eisentraut.org>
Discussion: https://postgr.es/m/aNKsDg0fJwqhZdXX%40nathan
This commit is contained in:
Nathan Bossart
2025-10-03 10:14:33 -05:00
parent a69b55cd47
commit 74b41f5a77

View File

@@ -98,7 +98,7 @@ typedef struct DSMRegistryEntry
NamedDSMState dsm;
NamedDSAState dsa;
NamedDSHState dsh;
} data;
};
} DSMRegistryEntry;
static const dshash_parameters dsh_params = {
@@ -212,7 +212,7 @@ GetNamedDSMSegment(const char *name, size_t size,
entry = dshash_find_or_insert(dsm_registry_table, name, found);
if (!(*found))
{
NamedDSMState *state = &entry->data.dsm;
NamedDSMState *state = &entry->dsm;
dsm_segment *seg;
entry->type = DSMR_ENTRY_TYPE_DSM;
@@ -232,12 +232,12 @@ GetNamedDSMSegment(const char *name, size_t size,
else if (entry->type != DSMR_ENTRY_TYPE_DSM)
ereport(ERROR,
(errmsg("requested DSM segment does not match type of existing entry")));
else if (entry->data.dsm.size != size)
else if (entry->dsm.size != size)
ereport(ERROR,
(errmsg("requested DSM segment size does not match size of existing segment")));
else
{
NamedDSMState *state = &entry->data.dsm;
NamedDSMState *state = &entry->dsm;
dsm_segment *seg;
/* If the existing segment is not already attached, attach it now. */
@@ -294,7 +294,7 @@ GetNamedDSA(const char *name, bool *found)
entry = dshash_find_or_insert(dsm_registry_table, name, found);
if (!(*found))
{
NamedDSAState *state = &entry->data.dsa;
NamedDSAState *state = &entry->dsa;
entry->type = DSMR_ENTRY_TYPE_DSA;
@@ -314,7 +314,7 @@ GetNamedDSA(const char *name, bool *found)
(errmsg("requested DSA does not match type of existing entry")));
else
{
NamedDSAState *state = &entry->data.dsa;
NamedDSAState *state = &entry->dsa;
if (dsa_is_attached(state->handle))
ereport(ERROR,
@@ -367,7 +367,7 @@ GetNamedDSHash(const char *name, const dshash_parameters *params, bool *found)
entry = dshash_find_or_insert(dsm_registry_table, name, found);
if (!(*found))
{
NamedDSHState *dsh_state = &entry->data.dsh;
NamedDSHState *dsh_state = &entry->dsh;
dshash_parameters params_copy;
dsa_area *dsa;
@@ -395,7 +395,7 @@ GetNamedDSHash(const char *name, const dshash_parameters *params, bool *found)
(errmsg("requested DSHash does not match type of existing entry")));
else
{
NamedDSHState *dsh_state = &entry->data.dsh;
NamedDSHState *dsh_state = &entry->dsh;
dsa_area *dsa;
/* XXX: Should we verify params matches what table was created with? */
@@ -447,7 +447,7 @@ pg_get_dsm_registry_allocations(PG_FUNCTION_ARGS)
* attaching to them, return NULL for those.
*/
if (entry->type == DSMR_ENTRY_TYPE_DSM)
vals[2] = Int64GetDatum(entry->data.dsm.size);
vals[2] = Int64GetDatum(entry->dsm.size);
else
nulls[2] = true;