mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge
This commit is contained in:
@ -101,7 +101,7 @@ enum enum_nested_loop_state
|
||||
typedef enum_nested_loop_state
|
||||
(*Next_select_func)(JOIN *, struct st_join_table *, bool);
|
||||
typedef int (*Read_record_func)(struct st_join_table *tab);
|
||||
|
||||
Next_select_func setup_end_select_func(JOIN *join);
|
||||
|
||||
typedef struct st_join_table {
|
||||
TABLE *table;
|
||||
@ -141,6 +141,11 @@ typedef struct st_join_table {
|
||||
void cleanup();
|
||||
} JOIN_TAB;
|
||||
|
||||
enum_nested_loop_state sub_select_cache(JOIN *join, JOIN_TAB *join_tab, bool
|
||||
end_of_records);
|
||||
enum_nested_loop_state sub_select(JOIN *join,JOIN_TAB *join_tab, bool
|
||||
end_of_records);
|
||||
|
||||
|
||||
typedef struct st_position /* Used in find_best */
|
||||
{
|
||||
@ -373,58 +378,6 @@ class JOIN :public Sql_alloc
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
Server-side cursor (now stands only for basic read-only cursor)
|
||||
See class implementation in sql_select.cc
|
||||
A cursor has its own runtime state - list of used items and memory root of
|
||||
used memory - which is different from Prepared statement runtime: it must
|
||||
be different at least for the purpose of reusing the same prepared
|
||||
statement for many cursors.
|
||||
*/
|
||||
|
||||
class Cursor: public Sql_alloc, public Query_arena
|
||||
{
|
||||
MEM_ROOT main_mem_root;
|
||||
JOIN *join;
|
||||
SELECT_LEX_UNIT *unit;
|
||||
|
||||
TABLE *open_tables;
|
||||
MYSQL_LOCK *lock;
|
||||
TABLE *derived_tables;
|
||||
/* List of items created during execution */
|
||||
query_id_t query_id;
|
||||
struct Engine_info
|
||||
{
|
||||
const handlerton *ht;
|
||||
void *read_view;
|
||||
};
|
||||
Engine_info ht_info[MAX_HA];
|
||||
public:
|
||||
Protocol_prep protocol;
|
||||
Item_change_list change_list;
|
||||
select_send result;
|
||||
THR_LOCK_OWNER lock_id;
|
||||
my_bool close_at_commit;
|
||||
|
||||
/* Temporary implementation as now we replace THD state by value */
|
||||
/* Save THD state into cursor */
|
||||
void init_from_thd(THD *thd);
|
||||
/* bzero cursor state in THD */
|
||||
void reset_thd(THD *thd);
|
||||
|
||||
int open(JOIN *join);
|
||||
void fetch(ulong num_rows);
|
||||
void reset() { join= 0; }
|
||||
bool is_open() const { return join != 0; }
|
||||
|
||||
void close(bool is_active);
|
||||
|
||||
void set_unit(SELECT_LEX_UNIT *unit_arg) { unit= unit_arg; }
|
||||
Cursor(THD *thd);
|
||||
~Cursor() {}
|
||||
};
|
||||
|
||||
|
||||
typedef struct st_select_check {
|
||||
uint const_ref,reg_ref;
|
||||
} SELECT_CHECK;
|
||||
|
Reference in New Issue
Block a user