• unknown's avatar
    Added Innobase to source distribution · 2662b593
    unknown authored
    Docs/manual.texi:
      Added Innobase documentation
    configure.in:
      Incremented version
    include/my_base.h:
      Added option for Innobase
    myisam/mi_check.c:
      cleanup
    mysql-test/t/bdb.test:
      cleanup
    mysql-test/t/innobase.test:
      Extended with new tests from bdb.test
    mysql-test/t/merge.test:
      Added test of SHOW create
    mysys/my_init.c:
      Fix for UNIXWARE 7
    scripts/mysql_install_db.sh:
      Always write how to start mysqld
    scripts/safe_mysqld.sh:
      Fixed type
    sql/ha_innobase.cc:
      Update to new version
    sql/ha_innobase.h:
      Update to new version
    sql/handler.h:
      Added 'update_table_comment()' and 'append_create_info()'
    sql/sql_delete.cc:
      Fixes for Innobase
    sql/sql_select.cc:
      Fixes for Innobase
    sql/sql_show.cc:
      Append create information (for MERGE tables)
    sql/sql_update.cc:
      Fixes for Innobase
    2662b593
eval0proc.ic 1.52 KB
/******************************************************
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);
}