InnoDB Plugin  1.0
Data Structures | Typedefs | Enumerations | Functions
fts0ast.h File Reference
#include "mem0mem.h"
#include "ha_prototypes.h"
Include dependency graph for fts0ast.h:

Go to the source code of this file.

Data Structures

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_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)
fts_ast_node_tfts_ast_create_node_oper (void *arg, fts_ast_oper_t oper)
fts_ast_node_tfts_ast_create_node_term (void *arg, const fts_ast_string_t *ptr)
fts_ast_node_tfts_ast_create_node_text (void *arg, const fts_ast_string_t *ptr)
fts_ast_node_tfts_ast_create_node_list (void *arg, fts_ast_node_t *expr)
fts_ast_node_tfts_ast_create_node_subexp_list (void *arg, fts_ast_node_t *expr)
void fts_ast_term_set_wildcard (fts_ast_node_t *node)
void fts_ast_term_set_distance (fts_ast_node_t *node, ulint distance)
UNIV_INTERN fts_ast_node_tfts_ast_free_node (fts_ast_node_t *node)
fts_ast_node_tfts_ast_add_node (fts_ast_node_t *list, fts_ast_node_t *node)
void fts_ast_node_print (fts_ast_node_t *node)
void fts_ast_state_add_node (fts_ast_state_t *state, fts_ast_node_t *node)
void fts_ast_state_free (fts_ast_state_t *state)
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))
UNIV_INTERN dberr_t fts_ast_visit_sub_exp (fts_ast_node_t *node, fts_ast_callback visitor, void *arg))
UNIV_INTERN fts_lexer_t * fts_lexer_create (ibool boolean_mode, const byte *query, ulint query_len))
UNIV_INTERN void fts_lexer_free (fts_lexer_t *fts_lexer))
UNIV_INTERN fts_ast_string_tfts_ast_string_create (const byte *str, ulint len)
UNIV_INTERN void fts_ast_string_free (fts_ast_string_t *ast_str)
UNIV_INTERN ulint fts_ast_string_to_ul (const fts_ast_string_t *ast_str, int base)
UNIV_INTERN void fts_ast_string_print (const fts_ast_string_t *ast_str)
const char * fts_ast_oper_name_get (fts_ast_oper_t oper)
const char * fts_ast_node_type_get (fts_ast_type_t type)

Detailed Description

The FTS query parser (AST) abstract syntax tree routines

Created 2007/03/16/03 Sunny Bains

Enumeration Type Documentation

Enumerator:
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()

Enumerator:
FTS_AST_OPER 

Operator

FTS_AST_NUMB 

Number

FTS_AST_TERM 

Term (or word)

FTS_AST_TEXT 

Text string

FTS_AST_LIST 

Expression list

FTS_AST_SUBEXP_LIST 

Sub-Expression list

Function Documentation

fts_ast_node_t* fts_ast_add_node ( fts_ast_node_t list,
fts_ast_node_t node 
)

in: (sub) expr to add

Parameters
listin: list node instance
fts_ast_node_t* fts_ast_create_node_list ( void *  arg,
fts_ast_node_t expr 
)

in: ast expr

Parameters
argin: ast state
fts_ast_node_t* fts_ast_create_node_oper ( void *  arg,
fts_ast_oper_t  oper 
)

in: ast operator

Parameters
argin: ast state
fts_ast_node_t* fts_ast_create_node_subexp_list ( void *  arg,
fts_ast_node_t expr 
)

in: ast expr instance

Parameters
argin: ast state instance
fts_ast_node_t* fts_ast_create_node_term ( void *  arg,
const fts_ast_string_t ptr 
)

in: term string

Parameters
argin: ast state
fts_ast_node_t* fts_ast_create_node_text ( void *  arg,
const fts_ast_string_t ptr 
)

in: text string

Parameters
argin: ast state
UNIV_INTERN fts_ast_node_t* fts_ast_free_node ( fts_ast_node_t node)

Free a fts_ast_node_t instance.

Returns
next node to free in: node to free
void fts_ast_node_print ( fts_ast_node_t node)

in: ast node to print

void fts_ast_state_add_node ( fts_ast_state_t state,
fts_ast_node_t node 
)

in: node to add to state

Parameters
statein: ast state instance
void fts_ast_state_free ( fts_ast_state_t state)

in: state instance to free

UNIV_INTERN 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

Parameters
[in]strpointer to string
[in]lenlength of the string
Returns
ast string with NUL-terminator
UNIV_INTERN void fts_ast_string_free ( fts_ast_string_t ast_str)

Free an ast string instance

Parameters
[in,out]ast_strstring to free
UNIV_INTERN void fts_ast_string_print ( const fts_ast_string_t ast_str)

Print the ast string

Parameters
[in]strstring to print
UNIV_INTERN 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

Parameters
[in]strstring to translate
[in]basethe base
Returns
translated number
void fts_ast_term_set_distance ( fts_ast_node_t node,
ulint  distance 
)

in: the text proximity distance

Parameters
nodein/out: text node
void fts_ast_term_set_wildcard ( fts_ast_node_t node)

in: term to change

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.

Returns
DB_SUCCESS if all went well
Parameters
operin: FTS operator
nodein: instance to traverse
visitorin: callback
argin: callback arg
has_ignoreout: 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.

Returns
DB_SUCCESS if all went well
Parameters
nodein: instance to traverse
visitorin: callback
argin: callback arg
UNIV_INTERN fts_lexer_t* fts_lexer_create ( ibool  boolean_mode,
const byte *  query,
ulint  query_len 
)
Parameters
boolean_modein: query type
queryin: query string
query_lenin: query string len
UNIV_INTERN void fts_lexer_free ( fts_lexer_t *  fts_lexer)
Parameters
fts_lexerin: lexer instance to free
int fts_parse ( fts_ast_state_t state)

in: ast state instance.