diff options
Diffstat (limited to 'storage/innobase/include/eval0eval.h')
-rw-r--r-- | storage/innobase/include/eval0eval.h | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/storage/innobase/include/eval0eval.h b/storage/innobase/include/eval0eval.h new file mode 100644 index 00000000000..6561f0c8ae7 --- /dev/null +++ b/storage/innobase/include/eval0eval.h @@ -0,0 +1,97 @@ +/****************************************************** +SQL evaluator: evaluates simple data structures, like expressions, in +a query graph + +(c) 1997 Innobase Oy + +Created 12/29/1997 Heikki Tuuri +*******************************************************/ + +#ifndef eval0eval_h +#define eval0eval_h + +#include "univ.i" +#include "que0types.h" +#include "pars0sym.h" +#include "pars0pars.h" + +/********************************************************************* +Free the buffer from global dynamic memory for a value of a que_node, +if it has been allocated in the above function. The freeing for pushed +column values is done in sel_col_prefetch_buf_free. */ + +void +eval_node_free_val_buf( +/*===================*/ + que_node_t* node); /* in: query graph node */ +/********************************************************************* +Evaluates a symbol table symbol. */ +UNIV_INLINE +void +eval_sym( +/*=====*/ + sym_node_t* sym_node); /* in: symbol table node */ +/********************************************************************* +Evaluates an expression. */ +UNIV_INLINE +void +eval_exp( +/*=====*/ + que_node_t* exp_node); /* in: expression */ +/********************************************************************* +Sets an integer value as the value of an expression node. */ +UNIV_INLINE +void +eval_node_set_int_val( +/*==================*/ + que_node_t* node, /* in: expression node */ + lint val); /* in: value to set */ +/********************************************************************* +Gets an integer value from an expression node. */ +UNIV_INLINE +lint +eval_node_get_int_val( +/*==================*/ + /* out: integer value */ + que_node_t* node); /* in: expression node */ +/********************************************************************* +Copies a binary string value as the value of a query graph node. Allocates a +new buffer if necessary. */ +UNIV_INLINE +void +eval_node_copy_and_alloc_val( +/*=========================*/ + que_node_t* node, /* in: query graph node */ + byte* str, /* in: binary string */ + ulint len); /* in: string length or UNIV_SQL_NULL */ +/********************************************************************* +Copies a query node value to another node. */ +UNIV_INLINE +void +eval_node_copy_val( +/*===============*/ + que_node_t* node1, /* in: node to copy to */ + que_node_t* node2); /* in: node to copy from */ +/********************************************************************* +Gets a iboolean value from a query node. */ +UNIV_INLINE +ibool +eval_node_get_ibool_val( +/*===================*/ + /* out: iboolean value */ + que_node_t* node); /* in: query graph node */ +/********************************************************************* +Evaluates a comparison node. */ + +ibool +eval_cmp( +/*=====*/ + /* out: the result of the comparison */ + func_node_t* cmp_node); /* in: comparison node */ + + +#ifndef UNIV_NONINL +#include "eval0eval.ic" +#endif + +#endif |