eval0eval.h
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:3k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /******************************************************
  2. SQL evaluator: evaluates simple data structures, like expressions, in
  3. a query graph
  4. (c) 1997 Innobase Oy
  5. Created 12/29/1997 Heikki Tuuri
  6. *******************************************************/
  7. #ifndef eval0eval_h
  8. #define eval0eval_h
  9. #include "univ.i"
  10. #include "que0types.h"
  11. #include "pars0sym.h"
  12. #include "pars0pars.h"
  13. /*********************************************************************
  14. Free the buffer from global dynamic memory for a value of a que_node,
  15. if it has been allocated in the above function. The freeing for pushed
  16. column values is done in sel_col_prefetch_buf_free. */
  17. void
  18. eval_node_free_val_buf(
  19. /*===================*/
  20. que_node_t* node); /* in: query graph node */
  21. /*********************************************************************
  22. Evaluates a symbol table symbol. */
  23. UNIV_INLINE
  24. void
  25. eval_sym(
  26. /*=====*/
  27. sym_node_t* sym_node); /* in: symbol table node */
  28. /*********************************************************************
  29. Evaluates an expression. */
  30. UNIV_INLINE
  31. void
  32. eval_exp(
  33. /*=====*/
  34. que_node_t* exp_node); /* in: expression */
  35. /*********************************************************************
  36. Sets an integer value as the value of an expression node. */
  37. UNIV_INLINE
  38. void
  39. eval_node_set_int_val(
  40. /*==================*/
  41. que_node_t* node, /* in: expression node */
  42. lint val); /* in: value to set */
  43. /*********************************************************************
  44. Gets an integer value from an expression node. */
  45. UNIV_INLINE
  46. lint
  47. eval_node_get_int_val(
  48. /*==================*/
  49. /* out: integer value */
  50. que_node_t* node); /* in: expression node */
  51. /*********************************************************************
  52. Copies a binary string value as the value of a query graph node. Allocates a
  53. new buffer if necessary. */
  54. UNIV_INLINE
  55. void
  56. eval_node_copy_and_alloc_val(
  57. /*=========================*/
  58. que_node_t* node, /* in: query graph node */
  59. byte* str, /* in: binary string */
  60. ulint len); /* in: string length or UNIV_SQL_NULL */
  61. /*********************************************************************
  62. Copies a query node value to another node. */
  63. UNIV_INLINE
  64. void
  65. eval_node_copy_val(
  66. /*===============*/
  67. que_node_t* node1, /* in: node to copy to */
  68. que_node_t* node2); /* in: node to copy from */
  69. /*********************************************************************
  70. Gets a iboolean value from a query node. */
  71. UNIV_INLINE
  72. ibool
  73. eval_node_get_ibool_val(
  74. /*===================*/
  75. /* out: iboolean value */
  76. que_node_t* node); /* in: query graph node */
  77. /*********************************************************************
  78. Evaluates a comparison node. */
  79. ibool
  80. eval_cmp(
  81. /*=====*/
  82. /* out: the result of the comparison */
  83. func_node_t* cmp_node); /* in: comparison node */
  84. #ifndef UNIV_NONINL
  85. #include "eval0eval.ic"
  86. #endif
  87. #endif