summaryrefslogtreecommitdiff
path: root/sql/sql_lex.h
diff options
context:
space:
mode:
Diffstat (limited to 'sql/sql_lex.h')
-rw-r--r--sql/sql_lex.h71
1 files changed, 57 insertions, 14 deletions
diff --git a/sql/sql_lex.h b/sql/sql_lex.h
index 6b33793f830..6372970438d 100644
--- a/sql/sql_lex.h
+++ b/sql/sql_lex.h
@@ -587,8 +587,8 @@ public:
st_lex *parent_lex;
enum olap_type olap;
/* FROM clause - points to the beginning of the TABLE_LIST::next_local list. */
- SQL_LIST table_list;
- SQL_LIST group_list; /* GROUP BY clause. */
+ SQL_I_List<TABLE_LIST> table_list;
+ SQL_I_List<ORDER> group_list; /* GROUP BY clause. */
List<Item> item_list; /* list of fields & expressions */
List<String> interval_list;
bool is_item_list_lookup;
@@ -610,8 +610,8 @@ public:
TABLE_LIST *leaf_tables;
const char *type; /* type of select for EXPLAIN */
- SQL_LIST order_list; /* ORDER clause */
- SQL_LIST *gorder_list;
+ SQL_I_List<ORDER> order_list; /* ORDER clause */
+ SQL_I_List<ORDER> *gorder_list;
Item *select_limit, *offset_limit; /* LIMIT clause parameters */
// Arrays of pointers to top elements of all_fields list
Item **ref_pointer_array;
@@ -773,7 +773,7 @@ public:
{
order_list.elements= 0;
order_list.first= 0;
- order_list.next= (uchar**) &order_list.first;
+ order_list.next= &order_list.first;
}
/*
This method created for reiniting LEX in mysql_admin_table() and can be
@@ -952,6 +952,8 @@ enum xa_option_words {XA_NONE, XA_JOIN, XA_RESUME, XA_ONE_PHASE,
XA_SUSPEND, XA_FOR_MIGRATE};
+struct Sroutine_hash_entry;
+
/*
Class representing list of all tables used by statement.
It also contains information about stored functions used by statement
@@ -992,9 +994,9 @@ public:
We use these two members for restoring of 'sroutines_list' to the state
in which it was right after query parsing.
*/
- SQL_LIST sroutines_list;
- uchar **sroutines_list_own_last;
- uint sroutines_list_own_elements;
+ SQL_I_List<Sroutine_hash_entry> sroutines_list;
+ Sroutine_hash_entry **sroutines_list_own_last;
+ uint sroutines_list_own_elements;
/*
These constructor and destructor serve for creation/destruction
@@ -1146,10 +1148,39 @@ enum enum_comment_state
class Lex_input_stream
{
public:
- Lex_input_stream(THD *thd, const char* buff, unsigned int length);
- ~Lex_input_stream();
+ Lex_input_stream() :
+ yylineno(1),
+ yytoklen(0),
+ yylval(NULL),
+ m_tok_start(NULL),
+ m_tok_end(NULL),
+ m_tok_start_prev(NULL),
+ m_echo(TRUE),
+ m_cpp_tok_start(NULL),
+ m_cpp_tok_start_prev(NULL),
+ m_cpp_tok_end(NULL),
+ m_body_utf8(NULL),
+ m_cpp_utf8_processed_ptr(NULL),
+ next_state(MY_LEX_START),
+ found_semicolon(NULL),
+ stmt_prepare_mode(FALSE),
+ in_comment(NO_COMMENT),
+ m_underscore_cs(NULL)
+ {
+ }
+
+ ~Lex_input_stream()
+ {
+ }
/**
+ Object initializer. Must be called before usage.
+
+ @retval FALSE OK
+ @retval TRUE Error
+ */
+ bool init(THD *thd, const char *buff, unsigned int length);
+ /**
Set the echo mode.
When echo is true, characters parsed from the raw input stream are
@@ -1598,7 +1629,8 @@ typedef struct st_lex : public Query_tables_list
*/
List<Name_resolution_context> context_stack;
- SQL_LIST proc_list, auxiliary_table_list, save_list;
+ SQL_I_List<ORDER> proc_list;
+ SQL_I_List<TABLE_LIST> auxiliary_table_list, save_list;
Create_field *last_field;
Item_sum *in_sum_func;
udf_func udf;
@@ -1720,7 +1752,7 @@ typedef struct st_lex : public Query_tables_list
fields to TABLE object at table open (altough for latter pointer to table
being opened is probably enough).
*/
- SQL_LIST trg_table_fields;
+ SQL_I_List<Item_trigger_field> trg_table_fields;
/*
stmt_definition_begin is intended to point to the next word after
@@ -1929,10 +1961,21 @@ public:
class Parser_state
{
public:
- Parser_state(THD *thd, const char* buff, unsigned int length)
- : m_lip(thd, buff, length), m_yacc()
+ Parser_state()
+ : m_yacc()
{}
+ /**
+ Object initializer. Must be called before usage.
+
+ @retval FALSE OK
+ @retval TRUE Error
+ */
+ bool init(THD *thd, const char *buff, unsigned int length)
+ {
+ return m_lip.init(thd, buff, length);
+ }
+
~Parser_state()
{}