151#ifndef YY_TYPEDEF_YY_SCANNER_T
152#define YY_TYPEDEF_YY_SCANNER_T
161 const char *message);
char * pgpa_cstring_advice_tag(pgpa_advice_tag_type advice_tag)
void pgpa_scanner_finish(yyscan_t yyscanner)
bool pgpa_identifier_matches_target(pgpa_identifier *rid, pgpa_advice_target *target)
@ PGPA_TAG_NESTED_LOOP_MATERIALIZE
@ PGPA_TAG_MERGE_JOIN_PLAIN
@ PGPA_TAG_NESTED_LOOP_MEMOIZE
@ PGPA_TAG_SEMIJOIN_NON_UNIQUE
@ PGPA_TAG_BITMAP_HEAP_SCAN
@ PGPA_TAG_INDEX_ONLY_SCAN
@ PGPA_TAG_SEMIJOIN_UNIQUE
@ PGPA_TAG_NESTED_LOOP_PLAIN
@ PGPA_TAG_MERGE_JOIN_MATERIALIZE
List * pgpa_parse(const char *advice_string, char **error_p)
void pgpa_yyerror(List **result, char **parse_error_msg_p, yyscan_t yyscanner, const char *message)
void pgpa_format_advice_target(StringInfo str, pgpa_advice_target *target)
void pgpa_scanner_init(const char *str, yyscan_t *yyscannerp)
pgpa_advice_tag_type pgpa_parse_advice_tag(const char *tag, bool *fail)
void pgpa_format_index_target(StringInfo str, pgpa_index_target *itarget)
bool pgpa_index_targets_equal(pgpa_index_target *i1, pgpa_index_target *i2)
@ PGPA_TARGET_UNORDERED_LIST
@ PGPA_TARGET_ORDERED_LIST
int pgpa_yyparse(List **result, char **parse_error_msg_p, yyscan_t yyscanner)
pgpa_itm_type pgpa_identifiers_match_target(int nrids, pgpa_identifier *rids, pgpa_advice_target *target)
int pgpa_yylex(union YYSTYPE *yylval_param, List **result, char **parse_error_msg_p, yyscan_t yyscanner)
@ PGPA_ITM_KEYS_ARE_SUBSET
@ PGPA_ITM_TARGETS_ARE_SUBSET
pgpa_index_target * itarget