MySQL 5.6.14 Source Code Document
|
Go to the source code of this file.
Classes | |
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_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 } |
Variables | |
UNIV_INTERN dberr_t | warn_unused_result |
UNIV_INTERN fts_lexer_t | malloc |
The FTS query parser (AST) abstract syntax tree routines
Created 2007/03/16/03 Sunny Bains
Definition in file fts0ast.h.
enum fts_ast_oper_t |
FTS_NONE |
No operator |
FTS_IGNORE |
Ignore rows that contain this word |
FTS_EXIST |
Include rows that contain this word |
FTS_NEGATE |
Include rows that contain this word but rank them lower |
FTS_INCR_RATING |
Increase the rank for this word |
FTS_DECR_RATING |
Decrease the rank for this word |
FTS_DISTANCE |
Proximity distance |
FTS_IGNORE_SKIP |
Transient node operator signifies that this is a FTS_IGNORE node, and ignored in the first pass of fts_ast_visit() |
FTS_EXIST_SKIP |
Transient node operator signifies that this ia a FTS_EXIST node, and ignored in the first pass of fts_ast_visit() |
enum fts_ast_type_t |
FTS_AST_OPER |
Operator |
FTS_AST_NUMB | |
FTS_AST_TERM |
Term (or word) |
FTS_AST_TEXT |
Text string |
FTS_AST_LIST |
Expression list |
FTS_AST_SUBEXP_LIST |
Sub-Expression list |
fts_ast_node_t* fts_ast_add_node | ( | fts_ast_node_t * | node, |
fts_ast_node_t * | elem | ||
) |
in: (sub) expr to add
This AST takes ownership of the expr and is responsible for free'ing it.
node | in: list instance |
elem | in: node to add to list |
Definition at line 315 of file fts0ast.cc.
fts_ast_node_t* fts_ast_create_node_list | ( | void * | arg, |
fts_ast_node_t * | expr | ||
) |
in: ast expr
This function takes ownership of the expr and is responsible for free'ing it.
arg | in: ast state instance |
expr | in: ast expr instance |
Definition at line 207 of file fts0ast.cc.
fts_ast_node_t* fts_ast_create_node_oper | ( | void * | arg, |
fts_ast_oper_t | oper | ||
) |
in: ast operator
Create a operator fts_ast_node_t.
arg | in: ast state instance |
oper | in: ast operator |
Definition at line 63 of file fts0ast.cc.
fts_ast_node_t* fts_ast_create_node_subexp_list | ( | void * | arg, |
fts_ast_node_t * | expr | ||
) |
in: ast expr instance
Create a sub-expression list node. This function takes ownership of expr and is responsible for deleting it.
arg | in: ast state instance |
expr | in: ast expr instance |
Definition at line 228 of file fts0ast.cc.
fts_ast_node_t* fts_ast_create_node_term | ( | void * | arg, |
const char * | ptr | ||
) |
in: term string
This function takes ownership of the ptr and is responsible for free'ing it
arg | in: ast state instance |
ptr | in: ast term string |
Definition at line 84 of file fts0ast.cc.
fts_ast_node_t* fts_ast_create_node_text | ( | void * | arg, |
const char * | ptr | ||
) |
in: text string
This function takes ownership of the ptr and is responsible for free'ing it.
< We ignore the actual quotes ""
< Skip copying the first quote
arg | in: ast state instance |
ptr | in: ast text string |
Definition at line 159 of file fts0ast.cc.
UNIV_INTERN fts_ast_node_t* fts_ast_free_node | ( | fts_ast_node_t * | node | ) |
Free a fts_ast_node_t instance.
Free a fts_ast_node_t instance.
node | in: the node to free |
Definition at line 267 of file fts0ast.cc.
void fts_ast_node_print | ( | fts_ast_node_t * | node | ) |
in: ast node to print
Print an ast node.
node | in: ast node to print |
Definition at line 436 of file fts0ast.cc.
void fts_ast_state_add_node | ( | fts_ast_state_t * | state, |
fts_ast_node_t * | node | ||
) |
in: node to add to state
For tracking node allocations, in case there is an error during parsing.
state | in: ast instance |
node | in: node to add to ast |
Definition at line 347 of file fts0ast.cc.
void fts_ast_state_free | ( | fts_ast_state_t * | state | ) |
in: state instance to free
Free node and expr allocations.
state | in: ast state to free |
Definition at line 407 of file fts0ast.cc.
void fts_ast_term_set_distance | ( | fts_ast_node_t * | node, |
ulint | distance | ||
) |
in: the text proximity distance
Set the proximity attribute of a text node.
node | in/out: text node |
distance | in: the text proximity distance |
Definition at line 391 of file fts0ast.cc.
void fts_ast_term_set_wildcard | ( | fts_ast_node_t * | node | ) |
in: term to change
Set the wildcard attribute of a term.
node | in/out: set attribute of a term node |
Definition at line 366 of file fts0ast.cc.
UNIV_INTERN 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.
oper | in: FTS operator |
node | in: instance to traverse |
visitor | in: callback |
arg | in: callback arg |
has_ignore | out: whether we encounter and ignored processing an operator, currently we only ignore FTS_IGNORE operator |
UNIV_INTERN dberr_t fts_ast_visit_sub_exp | ( | fts_ast_node_t * | node, |
fts_ast_callback | visitor, | ||
void * | arg | ||
) |
Process (nested) sub-expression, create a new result set to store the sub-expression result by processing nodes under current sub-expression list. Merge the sub-expression result with that of parent expression list.
node | in: instance to traverse |
visitor | in: callback |
arg | in: callback arg |
UNIV_INTERN fts_lexer_t* fts_lexer_create | ( | ibool | boolean_mode, |
const byte * | query, | ||
ulint | query_len | ||
) |
boolean_mode | in: query type |
query | in: query string |
query_len | in: query string len |
UNIV_INTERN void fts_lexer_free | ( | fts_lexer_t * | fts_lexer | ) |
fts_lexer | in: lexer instance to free |
int fts_parse | ( | fts_ast_state_t * | state | ) |
in: ast state instance.