32 #define JP_MAXNAME 256 42 #define IS_WHITE_CHAR(c) \ 43 ((c) == ' ' || (c) == '\t' || (c) == '\n' || (c) == '\0') 46 #define IS_HINT_ON_TABLE(h) \ 47 ((h) & (PT_HINT_INDEX_SS | PT_HINT_INDEX_LS)) 87 && ((name[0] ==
'[' && name[len - 1] ==
']') || (name[0] ==
'`' && name[len - 1] ==
'`')
88 || (name[0] ==
'"' && name[len - 1] ==
'"')))
91 tmp_name[len - 1] =
'\0';
125 int c = (this_parser->
next_char) (this_parser);
139 for (i = 0; hint_table[
i].
tokens; i++)
141 if (hint_table[i].arg_list !=
NULL)
161 for (i = 0; hint_table[
i].
tokens; i++)
163 if (
stristr (text, hint_table[i].tokens))
166 switch (hint_table[i].hint)
490 if (hint_table[i].arg_list ==
NULL || hint_table[i].arg_list->next !=
NULL)
533 char *hint_p, *arg_start, *arg_end, *temp;
535 bool has_parenthesis;
537 for (i = 0; hint_table[
i].
tokens; i++)
547 has_parenthesis =
false;
548 len = (int)
strlen (hint_table[i].tokens);
550 if ((count == 0 && (prev_is_white_char || (hint_p > hint_buf &&
IS_WHITE_CHAR (*(hint_p - 1)))))
558 hint = hint_table[
i].
hint;
560 else if (*(hint_p) ==
'(')
562 has_parenthesis =
true;
565 arg_end = strstr (arg_start,
")");
567 if (arg_end && ((len =
CAST_STRLEN (arg_end - arg_start)) > 0))
569 for (j = 0; j < len; j++)
571 if (hint_p[j] ==
'(')
576 if (hint_p[j] ==
',')
580 for (; arg_start < &(hint_p[j]); arg_start++)
587 for (temp = &(hint_p[j - 1]); temp > arg_start; temp--)
596 if (arg_start < &(hint_p[j]))
601 temp = strstr (arg_start,
".");
620 arg_start = &(hint_p[j + 1]);
627 if (hint_table[i].arg_list)
640 for (; arg_start < &(hint_p[j]); arg_start++)
647 for (temp = &(hint_p[j - 1]); temp > arg_start; temp--)
655 if (arg_start < &(hint_p[j]))
660 temp = strstr (arg_start,
".");
686 if (hint_table[i].arg_list)
688 hint = hint_table[
i].
hint;
712 if (hint & hint_table[i].hint)
#define IS_HINT_ON_TABLE(h)
static char * pt_trim_as_identifier(char *name)
int parser_output_host_index
void pt_cleanup_hint(PARSER_CONTEXT *parser, PT_HINT hint_table[])
int parser_input_host_index
struct pt_query_info::@123 flag
union pt_query_info::@124 q
char * pt_makename(const char *name)
struct pt_merge_info::@125 update
#define PT_IS_NULL_NODE(e)
PT_INT_FUNCTION next_char
char * stristr(const char *s, const char *find)
void pt_check_hint(const char *text, PT_HINT hint_table[], PT_HINT_ENUM *result_hint, bool prev_is_white_char)
#define PT_IS_QUERY_NODE_TYPE(x)
char * pt_append_string(const PARSER_CONTEXT *parser, const char *old_string, const char *new_tail)
PARSER_CONTEXT * this_parser
int count(int &result, const cub_regex_object ®, const std::string &src, const int position, const INTL_CODESET codeset)
PT_NODE * parser_append_node(PT_NODE *node, PT_NODE *list)
PT_NODE * parser_new_node(PARSER_CONTEXT *parser, PT_NODE_TYPE node_type)
void parser_free_node(const PARSER_CONTEXT *parser, PT_NODE *node)
void pt_parser_line_col(PT_NODE *node)
void parser_free_tree(PARSER_CONTEXT *parser, PT_NODE *tree)
struct pt_merge_info::@126 insert
char * ustr_casestr(const char *s1, const char *s2)
struct parser_node::@132 flag
void pt_get_hint(const char *text, PT_HINT hint_table[], PT_NODE *node)