-#define set_config_option(name, value, context, source, \
- action, changeVal, elevel) \
- set_config_option_wrapper(name, value, context, source, \
- action, changeVal, elevel)
-#endif
-
-static int
-set_config_options(SetHint **options, int noptions, GucContext context)
-{
- int i;
- int save_nestlevel;
-
- save_nestlevel = NewGUCNestLevel();
-
- for (i = 0; i < noptions; i++)
- {
- SetHint *hint = options[i];
- int result;
-
- if (!hint_state_enabled(hint))
- continue;
-
- result = set_config_option(hint->name, hint->value, context,
- PGC_S_SESSION, GUC_ACTION_SAVE, true,
- pg_hint_plan_parse_messages);
- if (result != 0)
- hint->base.state = HINT_STATE_USED;
- else
- hint->base.state = HINT_STATE_ERROR;
- }
-
- return save_nestlevel;
-}
-
-#define SET_CONFIG_OPTION(name, type_bits) \
- set_config_option((name), \
- (enforce_mask & (type_bits)) ? "true" : "false", \
- context, PGC_S_SESSION, GUC_ACTION_SAVE, true, ERROR)
-
-static void
-set_scan_config_options(unsigned char enforce_mask, GucContext context)
-{
- SET_CONFIG_OPTION("enable_seqscan", ENABLE_SEQSCAN);
- SET_CONFIG_OPTION("enable_indexscan", ENABLE_INDEXSCAN);
- SET_CONFIG_OPTION("enable_bitmapscan", ENABLE_BITMAPSCAN);
- SET_CONFIG_OPTION("enable_tidscan", ENABLE_TIDSCAN);
-#if PG_VERSION_NUM >= 90200
- SET_CONFIG_OPTION("enable_indexonlyscan", ENABLE_INDEXSCAN);
-#endif
-}
-
-static void
-set_join_config_options(unsigned char enforce_mask, GucContext context)
-{
- SET_CONFIG_OPTION("enable_nestloop", ENABLE_NESTLOOP);
- SET_CONFIG_OPTION("enable_mergejoin", ENABLE_MERGEJOIN);
- SET_CONFIG_OPTION("enable_hashjoin", ENABLE_HASHJOIN);
-}
-