mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
5.3->5.5 merge
This commit is contained in:
@@ -398,6 +398,36 @@ typedef enum enum_diag_condition_item_name
|
||||
*/
|
||||
extern const LEX_STRING Diag_condition_item_names[];
|
||||
|
||||
/* Note: these states are actually bit coded with HARD */
|
||||
enum killed_state
|
||||
{
|
||||
NOT_KILLED= 0,
|
||||
KILL_HARD_BIT= 1, /* Bit for HARD KILL */
|
||||
KILL_BAD_DATA= 2,
|
||||
KILL_BAD_DATA_HARD= 3,
|
||||
KILL_QUERY= 4,
|
||||
KILL_QUERY_HARD= 5,
|
||||
/*
|
||||
All of the following killed states will kill the connection
|
||||
KILL_CONNECTION must be the first of these!
|
||||
*/
|
||||
KILL_CONNECTION= 6,
|
||||
KILL_CONNECTION_HARD= 7,
|
||||
KILL_SYSTEM_THREAD= 8,
|
||||
KILL_SYSTEM_THREAD_HARD= 9,
|
||||
KILL_SERVER= 10,
|
||||
KILL_SERVER_HARD= 11
|
||||
};
|
||||
|
||||
extern int killed_errno(killed_state killed);
|
||||
#define killed_mask_hard(killed) ((killed_state) ((killed) & ~KILL_HARD_BIT))
|
||||
|
||||
enum killed_type
|
||||
{
|
||||
KILL_TYPE_ID,
|
||||
KILL_TYPE_USER
|
||||
};
|
||||
|
||||
#include "sql_lex.h" /* Must be here */
|
||||
|
||||
class Delayed_insert;
|
||||
@@ -483,7 +513,7 @@ typedef struct system_variables
|
||||
ulong log_slow_rate_limit;
|
||||
ulong binlog_format; ///< binlog format for this thd (see enum_binlog_format)
|
||||
ulong progress_report_time;
|
||||
my_bool binlog_annotate_rows_events;
|
||||
my_bool binlog_annotate_row_events;
|
||||
my_bool binlog_direct_non_trans_update;
|
||||
my_bool sql_log_bin;
|
||||
ulong completion_type;
|
||||
@@ -1664,19 +1694,12 @@ public:
|
||||
uint in_sub_stmt;
|
||||
/* True when opt_userstat_running is set at start of query */
|
||||
bool userstat_running;
|
||||
/* True if we want to log all errors */
|
||||
bool log_all_errors;
|
||||
|
||||
/* container for handler's private per-connection data */
|
||||
Ha_data ha_data[MAX_HA];
|
||||
|
||||
/* Place to store various things */
|
||||
union
|
||||
{
|
||||
/*
|
||||
Used by subquery optimizations, see Item_in_subselect::emb_on_expr_nest.
|
||||
*/
|
||||
TABLE_LIST *emb_on_expr_nest;
|
||||
} thd_marker;
|
||||
|
||||
bool prepare_derived_at_open;
|
||||
|
||||
/*
|
||||
@@ -2128,14 +2151,6 @@ public:
|
||||
condition. For details see the implementation of awake(),
|
||||
especially the "broadcast" part.
|
||||
*/
|
||||
enum killed_state
|
||||
{
|
||||
NOT_KILLED=0,
|
||||
KILL_BAD_DATA=1,
|
||||
KILL_CONNECTION=ER_SERVER_SHUTDOWN,
|
||||
KILL_QUERY=ER_QUERY_INTERRUPTED,
|
||||
KILLED_NO_VALUE /* means neither of the states */
|
||||
};
|
||||
killed_state volatile killed;
|
||||
|
||||
/* scramble - random string sent to client on handshake */
|
||||
@@ -2334,7 +2349,7 @@ public:
|
||||
}
|
||||
void close_active_vio();
|
||||
#endif
|
||||
void awake(THD::killed_state state_to_set);
|
||||
void awake(killed_state state_to_set);
|
||||
|
||||
/** Disconnect the associated communication endpoint. */
|
||||
void disconnect();
|
||||
@@ -2646,18 +2661,13 @@ public:
|
||||
void end_statement();
|
||||
inline int killed_errno() const
|
||||
{
|
||||
killed_state killed_val; /* to cache the volatile 'killed' */
|
||||
return (killed_val= killed) != KILL_BAD_DATA ? killed_val : 0;
|
||||
return ::killed_errno(killed);
|
||||
}
|
||||
inline void send_kill_message() const
|
||||
{
|
||||
int err= killed_errno();
|
||||
if (err)
|
||||
{
|
||||
if ((err == KILL_CONNECTION) && !shutdown_in_progress)
|
||||
err = KILL_QUERY;
|
||||
my_message(err, ER(err), MYF(0));
|
||||
}
|
||||
}
|
||||
/* return TRUE if we will abort query if we make a warning now */
|
||||
inline bool really_abort_on_warning()
|
||||
@@ -3587,9 +3597,11 @@ class select_max_min_finder_subselect :public select_subselect
|
||||
Item_cache *cache;
|
||||
bool (select_max_min_finder_subselect::*op)();
|
||||
bool fmax;
|
||||
bool is_all;
|
||||
public:
|
||||
select_max_min_finder_subselect(Item_subselect *item_arg, bool mx)
|
||||
:select_subselect(item_arg), cache(0), fmax(mx)
|
||||
select_max_min_finder_subselect(Item_subselect *item_arg, bool mx,
|
||||
bool all)
|
||||
:select_subselect(item_arg), cache(0), fmax(mx), is_all(all)
|
||||
{}
|
||||
void cleanup();
|
||||
int send_data(List<Item> &items);
|
||||
|
||||
Reference in New Issue
Block a user