hi hawq developers, i have been looking at src/backend/utils/misc/guc.c to try to get a better understanding of hawq server configuration parameters (GUCs) and how they are exposed to end users and developers. i have initially focused on GUCs with config groups labeled "DEVELOPER_OPTIONS", "DEFUNCT_OPTIONS", "DEPRECATED_OPTIONS", and "PRESET_OPTIONS".
i have some general questions regarding these GUC config groups: 1. which GUCs and their values should be displayed/changeable via "hawq config" command? 2. which of the GUCs are updatable, which are read-only? 3. which of the GUCs should be documented to the end user, and if/how to "flag them"? DEVELOPER_OPTIONS - it appears we expose some developer GUCs to the end-user. what does it mean for a GUC to be a developer option? (when) should developer options be displayed in "hawq config -l" output? (when) should developer GUCs be discussed in the docs? it seems we are somewhat inconsistent in these areas. many, but not all, of the GUCS labeled as "DEVELOPER_OPTIONS" are also identified as "GUC_NO_SHOW_ALL", which generally excludes them from "hawq_config -l" output. the documentation currently describes a few of the developer GUCs. if we are describing developer GUCs in end-user documentation, should we be flagging them as such? DEFUNCT_OPTIONS - the GUCs labeled "DEFUNCT_OPTIONS" are pretty straightforward from an external perspective - none of them are currently documented, and none show up in "hawq config -l" output. DEPRECATED_OPTIONS - GUCs that are part of the "DEPRECATED_OPTIONS" config group are functioning, but not recommended for use. some are documented, some are not. should we be explicitly identifying deprecated GUCs as such in the documentation? should we even be documenting them at all? should the values of deprecated GUCs show up in "hawq config -l" output? PRESET_OPTIONS - some of the GUCS labeled with "PRESET_OPTIONS" are identified as read-only in the documentation. i used hawq config to change one of them, "hawq config -c block_size -v 32768", and the operation apparently worked (i.e. no error returned). so, what does it mean for a GUC to be preset? read-only? are they all read-only? some appear to be recognized by "hawq config -c" command, while others are not. i've pulled together a spreadsheet identifying the "DEVELOPER_OPTIONS", "DEFUNCT_OPTIONS", "DEPRECATED_OPTIONS", and "PRESET_OPTIONS" GUCs and whether or not: - the GUC is documented in the current HAWQ docs - the GUC and associated value show up in "hawq config -l" output (when run by superuser) and other notes. thanks for any clarity you can provide on which of these GUCs we should be exposing to the end user. -lisa