![]()  | 
  
    MySQL 8.4.7
    
   Source Code Documentation 
   | 
 
The FTS query parser (AST) abstract syntax tree routines. More...
Go to the source code of this file.
Classes | |
| struct | fts_ast_string_t | 
| struct | fts_ast_term_t | 
| struct | fts_ast_text_t | 
| struct | fts_ast_list_t | 
| struct | fts_ast_node_t | 
| struct | fts_ast_state_t | 
Typedefs | |
| typedef dberr_t(* | fts_ast_callback) (fts_ast_oper_t, fts_ast_node_t *, void *) | 
Enumerations | |
| enum | fts_ast_type_t {  FTS_AST_OPER , FTS_AST_NUMB , FTS_AST_TERM , FTS_AST_TEXT , FTS_AST_PARSER_PHRASE_LIST , FTS_AST_LIST , FTS_AST_SUBEXP_LIST }  | 
| enum | fts_ast_oper_t {  FTS_NONE , FTS_IGNORE , FTS_EXIST , FTS_NEGATE , FTS_INCR_RATING , FTS_DECR_RATING , FTS_DISTANCE , FTS_IGNORE_SKIP , FTS_EXIST_SKIP }  | 
Functions | |
| int | fts_parse (fts_ast_state_t *state) | 
| in: ast state instance.  More... | |
| fts_ast_node_t * | fts_ast_create_node_oper (void *arg, fts_ast_oper_t oper) | 
| in: ast operator  More... | |
| fts_ast_node_t * | fts_ast_create_node_term (void *arg, const fts_ast_string_t *ptr) | 
| in: term string  More... | |
| fts_ast_node_t * | fts_ast_create_node_text (void *arg, const fts_ast_string_t *ptr) | 
| in: text string  More... | |
| fts_ast_node_t * | fts_ast_create_node_list (void *arg, fts_ast_node_t *expr) | 
| in: ast expr  More... | |
| fts_ast_node_t * | fts_ast_create_node_subexp_list (void *arg, fts_ast_node_t *expr) | 
| in: ast expr instance  More... | |
| void | fts_ast_term_set_wildcard (fts_ast_node_t *node) | 
| in: term to change  More... | |
| void | fts_ast_text_set_distance (fts_ast_node_t *node, ulint distance) | 
| in: the text proximity distance  More... | |
| fts_ast_node_t * | fts_ast_free_node (fts_ast_node_t *node) | 
| Free a fts_ast_node_t instance.  More... | |
| fts_ast_node_t * | fts_ast_add_node (fts_ast_node_t *list, fts_ast_node_t *node) | 
| in: (sub) expr to add  More... | |
| void | fts_ast_node_print (fts_ast_node_t *node) | 
| in: ast node to print  More... | |
| void | fts_ast_state_free (fts_ast_state_t *state) | 
| in: state instance to free  More... | |
| bool | fts_ast_node_check_union (fts_ast_node_t *node) | 
| Check only union operation involved in the node.  More... | |
| dberr_t | fts_ast_visit (fts_ast_oper_t oper, fts_ast_node_t *node, fts_ast_callback visitor, void *arg, bool *has_ignore) | 
| Traverse the AST - in-order traversal.  More... | |
| fts_lexer_t * | fts_lexer_create (bool boolean_mode, const byte *query, ulint query_len) | 
| void | fts_lexer_free (fts_lexer_t *fts_lexer) | 
| in: lexer instance to free  More... | |
| fts_ast_string_t * | fts_ast_string_create (const byte *str, ulint len) | 
| Create an ast string object, with NUL-terminator, so the string has one more byte than len.  More... | |
| void | fts_ast_string_free (fts_ast_string_t *ast_str) | 
| Free an ast string instance.  More... | |
| ulint | fts_ast_string_to_ul (const fts_ast_string_t *ast_str, int base) | 
| Translate ast string of type FTS_AST_NUMB to unsigned long by strtoul.  More... | |
| fts_ast_node_t * | fts_ast_create_node_term_for_parser (void *arg, const char *ptr, const ulint len) | 
| Create an AST term node, makes a copy of ptr for plugin parser.  More... | |
| fts_ast_node_t * | fts_ast_create_node_phrase_list (void *arg) | 
| Create an AST phrase list node for plugin parser.  More... | |
| const char * | fts_ast_node_type_get (fts_ast_type_t type) | 
The FTS query parser (AST) abstract syntax tree routines.
Created 2007/03/16/03 Sunny Bains
| typedef dberr_t(* fts_ast_callback) (fts_ast_oper_t, fts_ast_node_t *, void *) | 
| enum fts_ast_oper_t | 
| enum fts_ast_type_t | 
| fts_ast_node_t * fts_ast_add_node | ( | fts_ast_node_t * | node, | 
| fts_ast_node_t * | elem | ||
| ) | 
in: (sub) expr to add
in: (sub) expr to add
| node | in: list instance | 
| elem | in: node to add to list | 
| fts_ast_node_t * fts_ast_create_node_list | ( | void * | arg, | 
| fts_ast_node_t * | expr | ||
| ) | 
in: ast expr
in: ast expr
| arg | in: ast state instance | 
| expr | in: ast expr instance | 
| fts_ast_node_t * fts_ast_create_node_oper | ( | void * | arg, | 
| fts_ast_oper_t | oper | ||
| ) | 
in: ast operator
in: ast operator
| arg | in: ast state instance | 
| oper | in: ast operator | 
| fts_ast_node_t * fts_ast_create_node_phrase_list | ( | void * | arg | ) | 
Create an AST phrase list node for plugin parser.
| arg | in: ast state | 
| fts_ast_node_t * fts_ast_create_node_subexp_list | ( | void * | arg, | 
| fts_ast_node_t * | expr | ||
| ) | 
in: ast expr instance
in: ast expr instance
This function takes ownership of expr and is responsible for deleting it.
| arg | in: ast state instance | 
| expr | in: ast expr instance | 
| fts_ast_node_t * fts_ast_create_node_term | ( | void * | arg, | 
| const fts_ast_string_t * | ptr | ||
| ) | 
in: term string
in: term string
| arg | in: ast state instance | 
| ptr | in: ast term string | 
| fts_ast_node_t * fts_ast_create_node_term_for_parser | ( | void * | arg, | 
| const char * | ptr, | ||
| const ulint | len | ||
| ) | 
Create an AST term node, makes a copy of ptr for plugin parser.
| arg | in: ast state | 
| ptr | in: term string | 
| len | in: term string length | 
| fts_ast_node_t * fts_ast_create_node_text | ( | void * | arg, | 
| const fts_ast_string_t * | ptr | ||
| ) | 
in: text string
in: text string
< We ignore the actual quotes ""
< Skip copying the first quote
| arg | in: ast state instance | 
| ptr | in: ast text string | 
| fts_ast_node_t * fts_ast_free_node | ( | fts_ast_node_t * | node | ) | 
Free a fts_ast_node_t instance.
| node | in: the node to free | 
| bool fts_ast_node_check_union | ( | fts_ast_node_t * | node | ) | 
Check only union operation involved in the node.
| [in] | node | ast node to check | 
| void fts_ast_node_print | ( | fts_ast_node_t * | node | ) | 
in: ast node to print
in: ast node to print
| node | in: ast node to print | 
| const char * fts_ast_node_type_get | ( | fts_ast_type_t | type | ) | 
| void fts_ast_state_free | ( | fts_ast_state_t * | state | ) | 
in: state instance to free
in: state instance to free
| state | in: ast state to free | 
| fts_ast_string_t * fts_ast_string_create | ( | const byte * | str, | 
| ulint | len | ||
| ) | 
Create an ast string object, with NUL-terminator, so the string has one more byte than len.
| [in] | str | pointer to string | 
| [in] | len | length of the string | 
| void fts_ast_string_free | ( | fts_ast_string_t * | ast_str | ) | 
Free an ast string instance.
| [in,out] | ast_str | string to free | 
| ulint fts_ast_string_to_ul | ( | const fts_ast_string_t * | ast_str, | 
| int | base | ||
| ) | 
Translate ast string of type FTS_AST_NUMB to unsigned long by strtoul.
| [in] | ast_str | string to translate | 
| [in] | base | the base | 
| void fts_ast_term_set_wildcard | ( | fts_ast_node_t * | node | ) | 
in: term to change
in: term to change
| node | in/out: set attribute of a term node | 
| void fts_ast_text_set_distance | ( | fts_ast_node_t * | node, | 
| ulint | distance | ||
| ) | 
in: the text proximity distance
in: the text proximity distance
| node | in/out: text node | 
| distance | in: the text proximity distance | 
| dberr_t fts_ast_visit | ( | fts_ast_oper_t | oper, | 
| fts_ast_node_t * | node, | ||
| fts_ast_callback | visitor, | ||
| void * | arg, | ||
| bool * | has_ignore | ||
| ) | 
Traverse the AST - in-order traversal.
Traverse the AST - in-order traversal.
| oper | in: current operator | 
| node | in: current root node | 
| visitor | in: callback function | 
| arg | in: arg for callback | 
| has_ignore | out: true, if the operator was ignored during processing, currently we ignore FTS_EXIST and FTS_IGNORE operators | 
| fts_lexer_t * fts_lexer_create | ( | bool | boolean_mode, | 
| const byte * | query, | ||
| ulint | query_len | ||
| ) | 
| boolean_mode | in: query type | 
| query | in: query string | 
| query_len | in: query string len | 
| void fts_lexer_free | ( | fts_lexer_t * | fts_lexer | ) | 
in: lexer instance to free
| int fts_parse | ( | fts_ast_state_t * | state | ) | 
in: ast state instance.