eval0proc.ic
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:2k
- /******************************************************
- Executes SQL stored procedures and their control structures
- (c) 1998 Innobase Oy
- Created 1/20/1998 Heikki Tuuri
- *******************************************************/
- #include "pars0pars.h"
- #include "que0que.h"
- #include "eval0eval.h"
- /**************************************************************************
- Performs an execution step of a procedure node. */
- UNIV_INLINE
- que_thr_t*
- proc_step(
- /*======*/
- /* out: query thread to run next or NULL */
- que_thr_t* thr) /* in: query thread */
- {
- proc_node_t* node;
- ut_ad(thr);
-
- node = thr->run_node;
- ut_ad(que_node_get_type(node) == QUE_NODE_PROC);
- if (thr->prev_node == que_node_get_parent(node)) {
- /* Start execution from the first statement in the statement
- list */
-
- thr->run_node = node->stat_list;
- } else {
- /* Move to the next statement */
- ut_ad(que_node_get_next(thr->prev_node) == NULL);
-
- thr->run_node = NULL;
- }
- if (thr->run_node == NULL) {
- thr->run_node = que_node_get_parent(node);
- }
- return(thr);
- }
- /**************************************************************************
- Performs an execution step of a procedure call node. */
- UNIV_INLINE
- que_thr_t*
- proc_eval_step(
- /*===========*/
- /* out: query thread to run next or NULL */
- que_thr_t* thr) /* in: query thread */
- {
- func_node_t* node;
- ut_ad(thr);
-
- node = thr->run_node;
- ut_ad(que_node_get_type(node) == QUE_NODE_FUNC);
- /* Evaluate the procedure */
- eval_exp(node);
-
- thr->run_node = que_node_get_parent(node);
- return(thr);
- }