1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

Merge branch '10.2' into 10.2-mdev9864

This commit is contained in:
Galina Shalygina
2016-05-08 23:04:41 +03:00
parent e09b1f2a22
commit be1d06c8a5
380 changed files with 21974 additions and 6245 deletions

View File

@@ -28,6 +28,7 @@
#include "mem_root_array.h"
#include "sql_cmd.h"
#include "sql_alter.h" // Alter_info
#include "sql_window.h"
/* YACC and LEX Definitions */
@@ -47,6 +48,7 @@ class sys_var;
class Item_func_match;
class File_parser;
class Key_part_spec;
class Item_window_func;
struct sql_digest_state;
class With_clause;
@@ -643,6 +645,7 @@ public:
derived tables/views handling.
*/
TABLE_LIST *derived;
bool is_view;
/* With clause attached to this unit (if any) */
With_clause *with_clause;
/* With element where this unit is used as the specification (if any) */
@@ -721,6 +724,7 @@ public:
};
typedef class st_select_lex_unit SELECT_LEX_UNIT;
typedef Bounds_checked_array<Item*> Ref_ptr_array;
/*
SELECT_LEX - store information of parsed SELECT statment
@@ -799,9 +803,9 @@ public:
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;
size_t ref_pointer_array_size; // Number of elements in array.
/// Array of pointers to top elements of all_fields list
Ref_ptr_array ref_pointer_array;
/*
number of items in select_list and HAVING clause used to get number
@@ -898,6 +902,12 @@ public:
*/
List<String> *prev_join_using;
/**
The set of those tables whose fields are referenced in the select list of
this select level.
*/
table_map select_list_tables;
/* namp of nesting SELECT visibility (for aggregate functions check) */
nesting_map name_visibility_map;
@@ -1088,6 +1098,24 @@ public:
}
With_element *find_table_def_in_with_clauses(TABLE_LIST *table);
List<Window_spec> window_specs;
void prepare_add_window_spec(THD *thd);
bool add_window_def(THD *thd, LEX_STRING *win_name, LEX_STRING *win_ref,
SQL_I_List<ORDER> win_partition_list,
SQL_I_List<ORDER> win_order_list,
Window_frame *win_frame);
bool add_window_spec(THD *thd, LEX_STRING *win_ref,
SQL_I_List<ORDER> win_partition_list,
SQL_I_List<ORDER> win_order_list,
Window_frame *win_frame);
List<Item_window_func> window_funcs;
bool add_window_func(Item_window_func *win_func)
{
return window_funcs.push_back(win_func);
}
bool have_window_funcs() const { return (window_funcs.elements !=0); }
private:
bool m_non_agg_field_used;
bool m_agg_func_used;
@@ -2756,6 +2784,14 @@ public:
}
SQL_I_List<ORDER> save_group_list;
SQL_I_List<ORDER> save_order_list;
LEX_STRING *win_ref;
Window_frame *win_frame;
Window_frame_bound *frame_top_bound;
Window_frame_bound *frame_bottom_bound;
Window_spec *win_spec;
inline void free_set_stmt_mem_root()
{
DBUG_ASSERT(!is_arena_for_set_stmt());