54 const char *queryString,
68 "advice to apply during query planning",
79 "EXPLAIN output includes supplied advice even without EXPLAIN (PLAN_ADVICE)",
90 "Generate advice strings even when seemingly not required",
91 "Use this option to see generated advice for prepared queries.",
101 "Warn when supplied advice does not apply cleanly",
112 "Emit debugging messages showing the computed strategy mask for each relation",
171 const char *query_string,
346 const char *queryString,
422 "pg_plan_advice.advice",
451 if (
strcmp(item->defname, defname) == 0)
#define Assert(condition)
int32 defGetInt32(DefElem *def)
bool defGetBoolean(DefElem *def)
explain_per_plan_hook_type explain_per_plan_hook
void(* explain_per_plan_hook_type)(PlannedStmt *plannedstmt, IntoClause *into, ExplainState *es, const char *queryString, ParamListInfo params, QueryEnvironment *queryEnv)
int GetExplainExtensionId(const char *extension_name)
void * GetExplainExtensionState(ExplainState *es, int extension_id)
void SetExplainExtensionState(ExplainState *es, int extension_id, void *opaque)
void RegisterExtensionExplainOption(const char *option_name, ExplainOptionHandler handler)
#define palloc0_object(type)
void DefineCustomStringVariable(const char *name, const char *short_desc, const char *long_desc, char **valueAddr, const char *bootValue, GucContext context, int flags, GucStringCheckHook check_hook, GucStringAssignHook assign_hook, GucShowHook show_hook)
void DefineCustomBoolVariable(const char *name, const char *short_desc, const char *long_desc, bool *valueAddr, bool bootValue, GucContext context, int flags, GucBoolCheckHook check_hook, GucBoolAssignHook assign_hook, GucShowHook show_hook)
void MarkGUCPrefixReserved(const char *className)
#define GUC_check_errdetail
List * list_delete_ptr(List *list, void *datum)
List * lappend(List *list, void *datum)
MemoryContext TopMemoryContext
MemoryContext CurrentMemoryContext
void MemoryContextDelete(MemoryContext context)
#define AllocSetContextCreate
#define ALLOCSET_DEFAULT_SIZES
static MemoryContext MemoryContextSwitchTo(MemoryContext context)
#define foreach_node(type, var, lst)
static MemoryContext pgpa_memory_context
char * pg_plan_advice_advice
MemoryContext pg_plan_advice_get_mcxt(void)
static DefElem * find_defelem_by_defname(List *deflist, char *defname)
bool pg_plan_advice_trace_mask
static explain_per_plan_hook_type prev_explain_per_plan
bool pg_plan_advice_always_store_advice_details
static bool pg_plan_advice_advice_check_hook(char **newval, void **extra, GucSource source)
bool pg_plan_advice_should_explain(ExplainState *es)
static void pg_plan_advice_explain_per_plan_hook(PlannedStmt *plannedstmt, IntoClause *into, ExplainState *es, const char *queryString, ParamListInfo params, QueryEnvironment *queryEnv)
void pg_plan_advice_remove_advisor(pg_plan_advice_advisor_hook hook)
static void pg_plan_advice_explain_option_handler(ExplainState *es, DefElem *opt, ParseState *pstate)
char * pg_plan_advice_get_supplied_query_advice(PlannerGlobal *glob, Query *parse, const char *query_string, int cursorOptions, ExplainState *es)
void pg_plan_advice_request_advice_generation(bool activate)
void pg_plan_advice_add_advisor(pg_plan_advice_advisor_hook hook)
static void pg_plan_advice_explain_text_multiline(ExplainState *es, char *qlabel, char *value)
bool pg_plan_advice_feedback_warnings
static List * advisor_hook_list
static void pg_plan_advice_explain_feedback(ExplainState *es, List *feedback)
static int es_extension_id
static bool pg_plan_advice_always_explain_supplied_advice
char *(* pg_plan_advice_advisor_hook)(PlannerGlobal *glob, Query *parse, const char *query_string, int cursorOptions, ExplainState *es)
static rewind_source * source
static char buf[DEFAULT_XLOG_SEG_SIZE]
List * pgpa_parse(const char *advice_string, char **error_p)
void pgpa_planner_install_hooks(void)
int pgpa_planner_generate_advice
void pgpa_trove_append_flags(StringInfo buf, int flags)
void appendStringInfo(StringInfo str, const char *fmt,...)
void appendBinaryStringInfo(StringInfo str, const void *data, int datalen)
void initStringInfo(StringInfo str)