Age Owner Branch data TLA Line data Source code
1 : : /*-------------------------------------------------------------------------
2 : : * help_config.c
3 : : *
4 : : * Displays available options under grand unified configuration scheme
5 : : *
6 : : * Options whose flag bits are set to GUC_NO_SHOW_ALL, GUC_NOT_IN_SAMPLE,
7 : : * or GUC_DISALLOW_IN_FILE are not displayed, unless the user specifically
8 : : * requests that variable by name
9 : : *
10 : : * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
11 : : *
12 : : * IDENTIFICATION
13 : : * src/backend/utils/misc/help_config.c
14 : : *
15 : : *-------------------------------------------------------------------------
16 : : */
17 : : #include "postgres.h"
18 : :
19 : : #include <limits.h>
20 : : #include <unistd.h>
21 : :
22 : : #include "utils/guc_tables.h"
23 : : #include "utils/help_config.h"
24 : :
25 : :
26 : : static void printMixedStruct(const struct config_generic *structToPrint);
27 : : static bool displayStruct(const struct config_generic *structToDisplay);
28 : :
29 : :
30 : : void
8096 peter_e@gmx.net 31 :UBC 0 : GucInfoMain(void)
32 : : {
33 : : struct config_generic **guc_vars;
34 : : int numOpts;
35 : :
36 : : /* Initialize the GUC hash table */
8202 tgl@sss.pgh.pa.us 37 : 0 : build_guc_variables();
38 : :
1160 39 : 0 : guc_vars = get_guc_variables(&numOpts);
40 : :
75 peter@eisentraut.org 41 [ # # ]:UNC 0 : for (int i = 0; i < numOpts; i++)
42 : : {
43 : 0 : const struct config_generic *var = guc_vars[i];
44 : :
8096 peter_e@gmx.net 45 [ # # ]:UBC 0 : if (displayStruct(var))
46 : 0 : printMixedStruct(var);
47 : : }
48 : :
4923 49 : 0 : exit(0);
50 : : }
51 : :
52 : :
53 : : /*
54 : : * This function will return true if the struct passed to it
55 : : * should be displayed to the user.
56 : : */
57 : : static bool
75 peter@eisentraut.org 58 :UNC 0 : displayStruct(const struct config_generic *structToDisplay)
59 : : {
60 : 0 : return !(structToDisplay->flags & (GUC_NO_SHOW_ALL |
61 : : GUC_NOT_IN_SAMPLE |
62 : : GUC_DISALLOW_IN_FILE));
63 : : }
64 : :
65 : :
66 : : /*
67 : : * This function prints out the generic struct passed to it. It will print out
68 : : * a different format, depending on what the user wants to see.
69 : : */
70 : : static void
71 : 0 : printMixedStruct(const struct config_generic *structToPrint)
72 : : {
8096 peter_e@gmx.net 73 :UBC 0 : printf("%s\t%s\t%s\t",
74 : : structToPrint->name,
75 : : GucContext_Names[structToPrint->context],
76 : : _(config_group_names[structToPrint->group]));
77 : :
75 peter@eisentraut.org 78 [ # # # # :UNC 0 : switch (structToPrint->vartype)
# # ]
79 : : {
80 : :
8202 tgl@sss.pgh.pa.us 81 :UBC 0 : case PGC_BOOL:
8096 peter_e@gmx.net 82 [ # # ]: 0 : printf("BOOLEAN\t%s\t\t\t",
83 : : (structToPrint->_bool.reset_val == 0) ?
84 : : "FALSE" : "TRUE");
8202 tgl@sss.pgh.pa.us 85 : 0 : break;
86 : :
87 : 0 : case PGC_INT:
8096 peter_e@gmx.net 88 : 0 : printf("INTEGER\t%d\t%d\t%d\t",
89 : : structToPrint->_int.reset_val,
90 : : structToPrint->_int.min,
91 : : structToPrint->_int.max);
8202 tgl@sss.pgh.pa.us 92 : 0 : break;
93 : :
94 : 0 : case PGC_REAL:
8096 peter_e@gmx.net 95 : 0 : printf("REAL\t%g\t%g\t%g\t",
96 : : structToPrint->_real.reset_val,
97 : : structToPrint->_real.min,
98 : : structToPrint->_real.max);
8202 tgl@sss.pgh.pa.us 99 : 0 : break;
100 : :
101 : 0 : case PGC_STRING:
8096 peter_e@gmx.net 102 [ # # ]: 0 : printf("STRING\t%s\t\t\t",
103 : : structToPrint->_string.boot_val ? structToPrint->_string.boot_val : "");
8202 tgl@sss.pgh.pa.us 104 : 0 : break;
105 : :
6484 magnus@hagander.net 106 : 0 : case PGC_ENUM:
107 : 0 : printf("ENUM\t%s\t\t\t",
108 : : config_enum_lookup_by_value(structToPrint,
109 : : structToPrint->_enum.boot_val));
110 : 0 : break;
111 : :
8202 tgl@sss.pgh.pa.us 112 : 0 : default:
7846 113 : 0 : write_stderr("internal error: unrecognized run-time parameter type\n");
8202 114 : 0 : break;
115 : : }
116 : :
8096 peter_e@gmx.net 117 [ # # # # ]: 0 : printf("%s\t%s\n",
118 : : (structToPrint->short_desc == NULL) ? "" : _(structToPrint->short_desc),
119 : : (structToPrint->long_desc == NULL) ? "" : _(structToPrint->long_desc));
8202 tgl@sss.pgh.pa.us 120 : 0 : }
|