1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

removed SELECT_LEX_UNIT -> SELECT_LEX pointer conversion (SCRUM)

fixed some possible bugs


sql/item.cc:
  removed SELECT_LEX_UNIT -> SELECT_LEX pointer conversion
sql/item_subselect.cc:
  removed SELECT_LEX_UNIT -> SELECT_LEX pointer conversion
sql/item_sum.cc:
  removed SELECT_LEX_UNIT -> SELECT_LEX pointer conversion
sql/mysql_priv.h:
  removed SELECT_LEX_UNIT -> SELECT_LEX pointer conversion
sql/sql_base.cc:
  removed SELECT_LEX_UNIT -> SELECT_LEX pointer conversion
sql/sql_cache.cc:
  removed SELECT_LEX_UNIT -> SELECT_LEX pointer conversion
sql/sql_delete.cc:
  removed SELECT_LEX_UNIT -> SELECT_LEX pointer conversion
sql/sql_lex.cc:
  removed SELECT_LEX_UNIT -> SELECT_LEX pointer conversion
sql/sql_lex.h:
  removed SELECT_LEX_UNIT -> SELECT_LEX pointer conversion
  fixed some possible bugs
sql/sql_parse.cc:
  removed SELECT_LEX_UNIT -> SELECT_LEX pointer conversion
sql/sql_prepare.cc:
  removed SELECT_LEX_UNIT -> SELECT_LEX pointer conversion
sql/sql_repl.cc:
  removed SELECT_LEX_UNIT -> SELECT_LEX pointer conversion
sql/sql_select.cc:
  removed SELECT_LEX_UNIT -> SELECT_LEX pointer conversion
sql/sql_union.cc:
  removed SELECT_LEX_UNIT -> SELECT_LEX pointer conversion
sql/sql_update.cc:
  removed SELECT_LEX_UNIT -> SELECT_LEX pointer conversion
sql/sql_yacc.yy:
  removed SELECT_LEX_UNIT -> SELECT_LEX pointer conversion
This commit is contained in:
unknown
2002-10-30 13:18:52 +02:00
parent fc4c9c01ee
commit 0bb1e716bc
16 changed files with 569 additions and 281 deletions

View File

@ -186,6 +186,8 @@ enum olap_type
Base class for st_select_lex (SELECT_LEX) &
st_select_lex_unit (SELECT_LEX_UNIT)
*/
class st_select_lex;
class st_select_lex_unit;
class st_select_lex_node {
protected:
st_select_lex_node *next, **prev, /* neighbor list */
@ -195,23 +197,58 @@ public:
ulong options;
enum sub_select_type linkage;
SQL_LIST order_list; /* ORDER clause */
List<List_item> expr_list;
List<List_item> when_list; /* WHEN clause (expression) */
ha_rows select_limit, offset_limit; /* LIMIT clause parameters */
void init_query();
void init_select();
bool create_refs;
bool dependent; /* dependent from outer select subselect */
static void *operator new(size_t size)
{
return (void*) sql_calloc((uint) size);
}
static void operator delete(void *ptr,size_t size) {}
virtual ~st_select_lex_node() {}
inline st_select_lex_node* get_master() { return master; }
virtual void init_query();
virtual void init_select();
void include_down(st_select_lex_node *upper);
void include_neighbour(st_select_lex_node *before);
void include_global(st_select_lex_node **plink);
void exclude();
virtual bool add_item_to_list(Item *item);
bool add_order_to_list(Item *item, bool asc);
virtual bool add_group_to_list(Item *item, bool asc);
virtual bool add_ftfunc_to_list(Item_func_match *func);
virtual st_select_lex_unit* master_unit()= 0;
virtual st_select_lex* outer_select()= 0;
virtual bool set_braces(bool value);
virtual bool inc_in_sum_expr();
virtual uint get_in_sum_expr();
virtual TABLE_LIST* get_table_list();
virtual List<Item>* get_item_list();
virtual List<String>* get_use_index();
virtual List<String>* get_ignore_index();
virtual TABLE_LIST *add_table_to_list(Table_ident *table,
LEX_STRING *alias,
bool updating,
thr_lock_type flags= TL_UNLOCK,
List<String> *use_index= 0,
List<String> *ignore_index= 0);
private:
void fast_exclude();
};
typedef class st_select_lex_node SELECT_LEX_NODE;
/*
SELECT_LEX_UNIT - unit of selects (UNION, INTERSECT, ...) group
SELECT_LEXs
*/
struct st_lex;
class st_select_lex;
class THD;
class select_result;
class JOIN;
@ -238,14 +275,14 @@ public:
st_select_lex_node *global_parameters;
/* LIMIT clause runtime counters */
ha_rows select_limit_cnt, offset_limit_cnt;
bool depended; /* depended from outer select subselect */
/* not NULL if union used in subselect, point to subselect item */
Item_subselect *item;
uint union_option;
void init_query();
bool create_total_list(THD *thd, st_lex *lex, TABLE_LIST **result);
st_select_lex* outer_select() { return (st_select_lex*) master; }
st_select_lex_unit* master_unit();
st_select_lex* outer_select();
st_select_lex* first_select() { return (st_select_lex*) slave; }
st_select_lex_unit* next_unit() { return (st_select_lex_unit*) next; }
@ -270,8 +307,6 @@ public:
char *db, *db1, *table1, *db2, *table2; /* For outer join using .. */
Item *where, *having; /* WHERE & HAVING clauses */
enum olap_type olap;
List<List_item> expr_list;
List<List_item> when_list; /* WHEN clause */
SQL_LIST table_list, group_list; /* FROM & GROUP BY clauses */
List<Item> item_list; /* list of fields & expressions */
List<String> interval_list, use_index, *use_index_ptr,
@ -286,23 +321,18 @@ public:
const char *type; /* type of select for EXPLAIN */
uint in_sum_expr;
uint select_number; /* number of select (used for EXPLAIN) */
bool create_refs;
bool braces; /* SELECT ... UNION (SELECT ... ) <- this braces */
bool depended; /* depended from outer select subselect */
/* TRUE when having fix field called in processing of this SELECT */
bool having_fix_field;
void init_query();
void init_select();
st_select_lex_unit* master_unit() { return (st_select_lex_unit*) master; }
st_select_lex_unit* master_unit();
st_select_lex_unit* first_inner_unit()
{
return (st_select_lex_unit*) slave;
}
st_select_lex* outer_select()
{
return (st_select_lex*) master_unit()->outer_select();
}
st_select_lex* outer_select();
st_select_lex* next_select() { return (st_select_lex*) next; }
st_select_lex* next_select_in_list()
{
@ -313,6 +343,25 @@ public:
return &link_next;
}
bool set_braces(bool value);
bool inc_in_sum_expr();
uint get_in_sum_expr();
bool add_item_to_list(Item *item);
bool add_group_to_list(Item *item, bool asc);
bool add_ftfunc_to_list(Item_func_match *func);
TABLE_LIST* get_table_list();
List<Item>* get_item_list();
List<String>* get_use_index();
List<String>* get_ignore_index();
TABLE_LIST* add_table_to_list(Table_ident *table,
LEX_STRING *alias,
bool updating,
thr_lock_type flags= TL_UNLOCK,
List<String> *use_index= 0,
List<String> *ignore_index= 0);
friend void mysql_init_query(THD *thd);
};
typedef class st_select_lex SELECT_LEX;
@ -325,9 +374,9 @@ typedef struct st_lex
uint yylineno,yytoklen; /* Simulate lex */
LEX_YYSTYPE yylval;
SELECT_LEX_UNIT unit; /* most upper unit */
SELECT_LEX select_lex, /* first SELECT_LEX */
/* current SELECT_LEX in parsing */
*select;
SELECT_LEX select_lex; /* first SELECT_LEX */
/* current SELECT_LEX in parsing */
SELECT_LEX_NODE *current_select;
uchar *ptr,*tok_start,*tok_end,*end_of_query;
char *length,*dec,*change,*name;
char *backup_dir; /* For RESTORE/BACKUP */