mirror of
https://github.com/postgres/postgres.git
synced 2025-11-13 16:22:44 +03:00
Clean up qsort comparison function for GUC entries
guc_var_compare() is invoked from qsort() on an array of struct
config_generic, but the function accesses these directly as
strings (char *). This relies on the name being the first field, so
this works. But we can write this more clearly by using the struct
and then accessing the field through the struct. Before the
reorganization of the GUC structs (commit a13833c35f), the old code
was probably more convenient, but now we can write this more clearly
and correctly.
After this change, it is no longer required that the name is the first
field in struct config_generic, so remove that comment.
Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://www.postgresql.org/message-id/2c961fa1-14f6-44a2-985c-e30b95654e8d%40eisentraut.org
This commit is contained in:
@@ -1164,10 +1164,10 @@ find_option(const char *name, bool create_placeholders, bool skip_errors,
|
||||
static int
|
||||
guc_var_compare(const void *a, const void *b)
|
||||
{
|
||||
const char *namea = **(const char **const *) a;
|
||||
const char *nameb = **(const char **const *) b;
|
||||
const struct config_generic *ca = *(const struct config_generic *const *) a;
|
||||
const struct config_generic *cb = *(const struct config_generic *const *) b;
|
||||
|
||||
return guc_name_compare(namea, nameb);
|
||||
return guc_name_compare(ca->name, cb->name);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -249,7 +249,7 @@ struct config_enum
|
||||
struct config_generic
|
||||
{
|
||||
/* constant fields, must be set correctly in initial value: */
|
||||
const char *name; /* name of variable - MUST BE FIRST */
|
||||
const char *name; /* name of variable */
|
||||
GucContext context; /* context required to set the variable */
|
||||
enum config_group group; /* to help organize variables by function */
|
||||
const char *short_desc; /* short desc. of this variable's purpose */
|
||||
|
||||
Reference in New Issue
Block a user