![]() |
MySQL 8.0.43
Source Code Documentation
|
Full Text Search parser helper file. More...
#include <stdlib.h>#include "row0sel.h"#include "fts0ast.h"#include "fts0fts.h"#include "fts0pars.h"#include "ha_prototypes.h"Enumerations | |
| enum | fts_ast_visit_pass_t { FTS_PASS_FIRST , FTS_PASS_EXIST , FTS_PASS_IGNORE } |
Functions | |
| static fts_ast_node_t * | fts_ast_node_create (void) |
| Create an empty fts_ast_node_t. More... | |
| static void | fts_ast_state_add_node (fts_ast_state_t *state, fts_ast_node_t *node) |
| Track node allocations, in case there is an error during parsing. More... | |
| fts_ast_node_t * | fts_ast_create_node_oper (void *arg, fts_ast_oper_t oper) |
| Create a operator fts_ast_node_t. More... | |
| fts_ast_node_t * | fts_ast_create_node_term (void *arg, const fts_ast_string_t *ptr) |
| This function takes ownership of the ptr and is responsible for free'ing it. 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_text (void *arg, const fts_ast_string_t *ptr) |
| This function takes ownership of the ptr and is responsible for free'ing it. More... | |
| fts_ast_node_t * | fts_ast_create_node_phrase_list (void *arg) |
| Create an AST phrase list node for plugin parser. More... | |
| fts_ast_node_t * | fts_ast_create_node_list (void *arg, fts_ast_node_t *expr) |
| This function takes ownership of the expr and is responsible for free'ing it. More... | |
| fts_ast_node_t * | fts_ast_create_node_subexp_list (void *arg, fts_ast_node_t *expr) |
| Create a sub-expression list node. More... | |
| static void | fts_ast_free_list (fts_ast_node_t *node) |
| Free an expr list node elements. 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 *node, fts_ast_node_t *elem) |
| This AST takes ownership of the expr and is responsible for free'ing it. More... | |
| void | fts_ast_term_set_wildcard (fts_ast_node_t *node) |
| Set the wildcard attribute of a term. More... | |
| void | fts_ast_text_set_distance (fts_ast_node_t *node, ulint distance) |
| Set the proximity attribute of a text node. More... | |
| void | fts_ast_state_free (fts_ast_state_t *state) |
| Free node and expr allocations. More... | |
| static void | fts_ast_string_print (const fts_ast_string_t *ast_str) |
| Print the ast string. More... | |
| static void | fts_ast_node_print_recursive (fts_ast_node_t *node, ulint level) |
| Print an ast node recursively. More... | |
| void | fts_ast_node_print (fts_ast_node_t *node) |
| Print an ast node. 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, except for the FTX_EXIST and FTS_IGNORE nodes, which will be ignored in the first pass of each level, and visited in a second and third pass after all other nodes in the same level are visited. 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... | |
| const char * | fts_ast_node_type_get (fts_ast_type_t type) |
Full Text Search parser helper file.
Created 2007/3/16 Sunny Bains.
| enum fts_ast_visit_pass_t |
| fts_ast_node_t * fts_ast_add_node | ( | fts_ast_node_t * | node, |
| fts_ast_node_t * | elem | ||
| ) |
This AST takes ownership of the expr and is responsible for free'ing it.
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 | ||
| ) |
This function takes ownership of the expr and is responsible for free'ing it.
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 | ||
| ) |
Create a operator fts_ast_node_t.
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 | ||
| ) |
Create a sub-expression list node.
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 | ||
| ) |
This function takes ownership of the ptr and is responsible for free'ing it.
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 | ||
| ) |
This function takes ownership of the ptr and is responsible for free'ing it.
in: text string
< We ignore the actual quotes ""
< Skip copying the first quote
| arg | in: ast state instance |
| ptr | in: ast text string |
|
static |
Free an expr list node elements.
< No op
| node | in: ast node to free |
| 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 |
|
static |
Create an empty fts_ast_node_t.
| void fts_ast_node_print | ( | fts_ast_node_t * | node | ) |
Print an ast node.
in: ast node to print
| node | in: ast node to print |
|
static |
Print an ast node recursively.
| node | in: ast node to print |
| level | in: recursive level |
| const char * fts_ast_node_type_get | ( | fts_ast_type_t | type | ) |
|
static |
Track node allocations, in case there is an error during parsing.
| state | in: ast instance |
| node | in: node to add to ast |
| void fts_ast_state_free | ( | fts_ast_state_t * | state | ) |
Free node and expr allocations.
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 |
|
static |
Print the ast string.
| [in] | ast_str | string to print |
| 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 | ) |
Set the wildcard attribute of a term.
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 | ||
| ) |
Set the proximity attribute of a text node.
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, except for the FTX_EXIST and FTS_IGNORE nodes, which will be ignored in the first pass of each level, and visited in a second and third pass after all other nodes in the same level are visited.
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 |