diff options
author | Guilhem Bichot <guilhem@mysql.com> | 2009-08-04 13:25:19 +0200 |
---|---|---|
committer | Guilhem Bichot <guilhem@mysql.com> | 2009-08-04 13:25:19 +0200 |
commit | b57e4dbd88671df86e2cf39aff5178976d710b64 (patch) | |
tree | 32be2bfec3ca062c65566c60ecf59b673d1f97e9 /storage/innobase/include/pars0sym.h | |
parent | 1a0c2153a036296785dcdfa7b5f4974515616e11 (diff) | |
parent | 94efc1c6b084ed531b513e70fb66e7b7a1186b56 (diff) | |
download | mariadb-git-b57e4dbd88671df86e2cf39aff5178976d710b64.tar.gz |
Creation of mysql-trunk = {summit + "Innodb plugin replacing the builtin"}:
bzr branch mysql-5.1-performance-version mysql-trunk # Summit
cd mysql-trunk
bzr merge mysql-5.1-innodb_plugin # which is 5.1 + Innodb plugin
bzr rm innobase # remove the builtin
Next step: build, test fixes.
Diffstat (limited to 'storage/innobase/include/pars0sym.h')
-rw-r--r-- | storage/innobase/include/pars0sym.h | 223 |
1 files changed, 0 insertions, 223 deletions
diff --git a/storage/innobase/include/pars0sym.h b/storage/innobase/include/pars0sym.h deleted file mode 100644 index fc7df92ff60..00000000000 --- a/storage/innobase/include/pars0sym.h +++ /dev/null @@ -1,223 +0,0 @@ -/****************************************************** -SQL parser symbol table - -(c) 1997 Innobase Oy - -Created 12/15/1997 Heikki Tuuri -*******************************************************/ - -#ifndef pars0sym_h -#define pars0sym_h - -#include "univ.i" -#include "que0types.h" -#include "usr0types.h" -#include "dict0types.h" -#include "pars0types.h" -#include "row0types.h" - -/********************************************************************** -Creates a symbol table for a single stored procedure or query. */ - -sym_tab_t* -sym_tab_create( -/*===========*/ - /* out, own: symbol table */ - mem_heap_t* heap); /* in: memory heap where to create */ -/********************************************************************** -Frees the memory allocated dynamically AFTER parsing phase for variables -etc. in the symbol table. Does not free the mem heap where the table was -originally created. Frees also SQL explicit cursor definitions. */ - -void -sym_tab_free_private( -/*=================*/ - sym_tab_t* sym_tab); /* in, own: symbol table */ -/********************************************************************** -Adds an integer literal to a symbol table. */ - -sym_node_t* -sym_tab_add_int_lit( -/*================*/ - /* out: symbol table node */ - sym_tab_t* sym_tab, /* in: symbol table */ - ulint val); /* in: integer value */ -/********************************************************************** -Adds an string literal to a symbol table. */ - -sym_node_t* -sym_tab_add_str_lit( -/*================*/ - /* out: symbol table node */ - sym_tab_t* sym_tab, /* in: symbol table */ - byte* str, /* in: string with no quotes around - it */ - ulint len); /* in: string length */ -/********************************************************************** -Add a bound literal to a symbol table. */ - -sym_node_t* -sym_tab_add_bound_lit( -/*==================*/ - /* out: symbol table node */ - sym_tab_t* sym_tab, /* in: symbol table */ - const char* name, /* in: name of bound literal */ - ulint* lit_type); /* out: type of literal (PARS_*_LIT) */ -/********************************************************************** -Adds an SQL null literal to a symbol table. */ - -sym_node_t* -sym_tab_add_null_lit( -/*=================*/ - /* out: symbol table node */ - sym_tab_t* sym_tab); /* in: symbol table */ -/********************************************************************** -Adds an identifier to a symbol table. */ - -sym_node_t* -sym_tab_add_id( -/*===========*/ - /* out: symbol table node */ - sym_tab_t* sym_tab, /* in: symbol table */ - byte* name, /* in: identifier name */ - ulint len); /* in: identifier length */ - -/********************************************************************** -Add a bound identifier to a symbol table. */ - -sym_node_t* -sym_tab_add_bound_id( -/*===========*/ - /* out: symbol table node */ - sym_tab_t* sym_tab, /* in: symbol table */ - const char* name); /* in: name of bound id */ - -#define SYM_CLUST_FIELD_NO 0 -#define SYM_SEC_FIELD_NO 1 - -struct sym_node_struct{ - que_common_t common; /* node type: - QUE_NODE_SYMBOL */ - /* NOTE: if the data field in 'common.val' is not NULL and the symbol - table node is not for a temporary column, the memory for the value has - been allocated from dynamic memory and it should be freed when the - symbol table is discarded */ - - /* 'alias' and 'indirection' are almost the same, but not quite. - 'alias' always points to the primary instance of the variable, while - 'indirection' does the same only if we should use the primary - instance's values for the node's data. This is usually the case, but - when initializing a cursor (e.g., "DECLARE CURSOR c IS SELECT * FROM - t WHERE id = x;"), we copy the values from the primary instance to - the cursor's instance so that they are fixed for the duration of the - cursor, and set 'indirection' to NULL. If we did not, the value of - 'x' could change between fetches and things would break horribly. - - TODO: It would be cleaner to make 'indirection' a boolean field and - always use 'alias' to refer to the primary node. */ - - sym_node_t* indirection; /* pointer to - another symbol table - node which contains - the value for this - node, NULL otherwise */ - sym_node_t* alias; /* pointer to - another symbol table - node for which this - node is an alias, - NULL otherwise */ - UT_LIST_NODE_T(sym_node_t) col_var_list; /* list of table - columns or a list of - input variables for an - explicit cursor */ - ibool copy_val; /* TRUE if a column - and its value should - be copied to dynamic - memory when fetched */ - ulint field_nos[2]; /* if a column, in - the position - SYM_CLUST_FIELD_NO is - the field number in the - clustered index; in - the position - SYM_SEC_FIELD_NO - the field number in the - non-clustered index to - use first; if not found - from the index, then - ULINT_UNDEFINED */ - ibool resolved; /* TRUE if the - meaning of a variable - or a column has been - resolved; for literals - this is always TRUE */ - ulint token_type; /* SYM_VAR, SYM_COLUMN, - SYM_IMPLICIT_VAR, - SYM_LIT, SYM_TABLE, - SYM_CURSOR, ... */ - const char* name; /* name of an id */ - ulint name_len; /* id name length */ - dict_table_t* table; /* table definition - if a table id or a - column id */ - ulint col_no; /* column number if a - column */ - sel_buf_t* prefetch_buf; /* NULL, or a buffer - for cached column - values for prefetched - rows */ - sel_node_t* cursor_def; /* cursor definition - select node if a - named cursor */ - ulint param_type; /* PARS_INPUT, - PARS_OUTPUT, or - PARS_NOT_PARAM if not a - procedure parameter */ - sym_tab_t* sym_table; /* back pointer to - the symbol table */ - UT_LIST_NODE_T(sym_node_t) sym_list; /* list of symbol - nodes */ -}; - -struct sym_tab_struct{ - que_t* query_graph; - /* query graph generated by the - parser */ - const char* sql_string; - /* SQL string to parse */ - size_t string_len; - /* SQL string length */ - int next_char_pos; - /* position of the next character in - sql_string to give to the lexical - analyzer */ - pars_info_t* info; /* extra information, or NULL */ - sym_node_list_t sym_list; - /* list of symbol nodes in the symbol - table */ - UT_LIST_BASE_NODE_T(func_node_t) - func_node_list; - /* list of function nodes in the - parsed query graph */ - mem_heap_t* heap; /* memory heap from which we can - allocate space */ -}; - -/* Types of a symbol table entry */ -#define SYM_VAR 91 /* declared parameter or local - variable of a procedure */ -#define SYM_IMPLICIT_VAR 92 /* storage for a intermediate result - of a calculation */ -#define SYM_LIT 93 /* literal */ -#define SYM_TABLE 94 /* database table name */ -#define SYM_COLUMN 95 /* database table name */ -#define SYM_CURSOR 96 /* named cursor */ -#define SYM_PROCEDURE_NAME 97 /* stored procedure name */ -#define SYM_INDEX 98 /* database index name */ -#define SYM_FUNCTION 99 /* user function name */ - -#ifndef UNIV_NONINL -#include "pars0sym.ic" -#endif - -#endif |