mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Applied all changes from Igor and Sanja
This commit is contained in:
@ -72,7 +72,6 @@ class Sroutine_hash_entry;
|
||||
class User_level_lock;
|
||||
class user_var_entry;
|
||||
|
||||
enum enum_enable_or_disable { LEAVE_AS_IS, ENABLE, DISABLE };
|
||||
enum enum_ha_read_modes { RFIRST, RNEXT, RPREV, RLAST, RKEY, RNEXT_SAME };
|
||||
enum enum_duplicates { DUP_ERROR, DUP_REPLACE, DUP_UPDATE };
|
||||
enum enum_delay_key_write { DELAY_KEY_WRITE_NONE, DELAY_KEY_WRITE_ON,
|
||||
@ -235,6 +234,7 @@ public:
|
||||
enum drop_type {KEY, COLUMN, FOREIGN_KEY };
|
||||
const char *name;
|
||||
enum drop_type type;
|
||||
bool drop_if_exists;
|
||||
Alter_drop(enum drop_type par_type,const char *par_name)
|
||||
:name(par_name), type(par_type)
|
||||
{
|
||||
@ -303,7 +303,6 @@ public:
|
||||
{ return new (mem_root) Key(*this, mem_root); }
|
||||
};
|
||||
|
||||
class Table_ident;
|
||||
|
||||
class Foreign_key: public Key {
|
||||
public:
|
||||
@ -318,23 +317,25 @@ public:
|
||||
uint delete_opt, update_opt, match_opt;
|
||||
Foreign_key(const LEX_STRING &name_arg, List<Key_part_spec> &cols,
|
||||
const LEX_STRING &ref_db_arg, const LEX_STRING &ref_table_arg,
|
||||
List<Key_part_spec> &ref_cols,
|
||||
List<Key_part_spec> &ref_cols,
|
||||
uint delete_opt_arg, uint update_opt_arg, uint match_opt_arg)
|
||||
:Key(FOREIGN_KEY, name_arg, &default_key_create_info, 0, cols, NULL),
|
||||
ref_db(ref_db_arg), ref_table(ref_table_arg), ref_columns(ref_cols),
|
||||
delete_opt(delete_opt_arg), update_opt(update_opt_arg),
|
||||
match_opt(match_opt_arg)
|
||||
{
|
||||
{
|
||||
// We don't check for duplicate FKs.
|
||||
key_create_info.check_for_duplicate_indexes= false;
|
||||
}
|
||||
Foreign_key(const Foreign_key &rhs, MEM_ROOT *mem_root);
|
||||
Foreign_key(const Foreign_key &rhs, MEM_ROOT *mem_root);
|
||||
/**
|
||||
Used to make a clone of this object for ALTER/CREATE TABLE
|
||||
@sa comment for Key_part_spec::clone
|
||||
*/
|
||||
virtual Key *clone(MEM_ROOT *mem_root) const
|
||||
{ return new (mem_root) Foreign_key(*this, mem_root); }
|
||||
/* Used to validate foreign key options */
|
||||
bool validate(List<Create_field> &table_fields);
|
||||
};
|
||||
|
||||
typedef struct st_mysql_lock
|
||||
@ -1348,9 +1349,9 @@ public:
|
||||
virtual bool handle_condition(THD *thd,
|
||||
uint sql_errno,
|
||||
const char* sqlstate,
|
||||
MYSQL_ERROR::enum_warning_level level,
|
||||
Sql_condition::enum_warning_level level,
|
||||
const char* msg,
|
||||
MYSQL_ERROR ** cond_hdl) = 0;
|
||||
Sql_condition ** cond_hdl) = 0;
|
||||
|
||||
private:
|
||||
Internal_error_handler *m_prev_internal_handler;
|
||||
@ -1369,9 +1370,9 @@ public:
|
||||
bool handle_condition(THD *thd,
|
||||
uint sql_errno,
|
||||
const char* sqlstate,
|
||||
MYSQL_ERROR::enum_warning_level level,
|
||||
Sql_condition::enum_warning_level level,
|
||||
const char* msg,
|
||||
MYSQL_ERROR ** cond_hdl)
|
||||
Sql_condition ** cond_hdl)
|
||||
{
|
||||
/* Ignore error */
|
||||
return TRUE;
|
||||
@ -1396,9 +1397,9 @@ public:
|
||||
bool handle_condition(THD *thd,
|
||||
uint sql_errno,
|
||||
const char* sqlstate,
|
||||
MYSQL_ERROR::enum_warning_level level,
|
||||
Sql_condition::enum_warning_level level,
|
||||
const char* msg,
|
||||
MYSQL_ERROR ** cond_hdl);
|
||||
Sql_condition ** cond_hdl);
|
||||
|
||||
private:
|
||||
};
|
||||
@ -2216,8 +2217,6 @@ public:
|
||||
|
||||
USER_CONN *user_connect;
|
||||
CHARSET_INFO *db_charset;
|
||||
Warning_info *warning_info;
|
||||
Diagnostics_area *stmt_da;
|
||||
#if defined(ENABLED_PROFILING)
|
||||
PROFILING profiling;
|
||||
#endif
|
||||
@ -2756,8 +2755,8 @@ public:
|
||||
inline void clear_error()
|
||||
{
|
||||
DBUG_ENTER("clear_error");
|
||||
if (stmt_da->is_error())
|
||||
stmt_da->reset_diagnostics_area();
|
||||
if (get_stmt_da()->is_error())
|
||||
get_stmt_da()->reset_diagnostics_area();
|
||||
is_slave_error= 0;
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
@ -2784,7 +2783,7 @@ public:
|
||||
*/
|
||||
inline void fatal_error()
|
||||
{
|
||||
DBUG_ASSERT(stmt_da->is_error() || killed);
|
||||
DBUG_ASSERT(get_stmt_da()->is_error() || killed);
|
||||
is_fatal_error= 1;
|
||||
DBUG_PRINT("error",("Fatal error set"));
|
||||
}
|
||||
@ -2801,11 +2800,19 @@ public:
|
||||
|
||||
To raise this flag, use my_error().
|
||||
*/
|
||||
inline bool is_error() const { return stmt_da->is_error(); }
|
||||
inline bool is_error() const { return m_stmt_da->is_error(); }
|
||||
|
||||
/// Returns Diagnostics-area for the current statement.
|
||||
Diagnostics_area *get_stmt_da()
|
||||
{ return stmt_da; }
|
||||
{ return m_stmt_da; }
|
||||
|
||||
/// Returns Diagnostics-area for the current statement.
|
||||
const Diagnostics_area *get_stmt_da() const
|
||||
{ return m_stmt_da; }
|
||||
|
||||
/// Sets Diagnostics-area for the current statement.
|
||||
void set_stmt_da(Diagnostics_area *da)
|
||||
{ m_stmt_da= da; }
|
||||
|
||||
inline CHARSET_INFO *charset() { return variables.character_set_client; }
|
||||
void update_charset();
|
||||
@ -3096,6 +3103,7 @@ public:
|
||||
*/
|
||||
void push_internal_handler(Internal_error_handler *handler);
|
||||
|
||||
private:
|
||||
/**
|
||||
Handle a sql condition.
|
||||
@param sql_errno the condition error number
|
||||
@ -3105,12 +3113,13 @@ public:
|
||||
@param[out] cond_hdl the sql condition raised, if any
|
||||
@return true if the condition is handled
|
||||
*/
|
||||
virtual bool handle_condition(uint sql_errno,
|
||||
const char* sqlstate,
|
||||
MYSQL_ERROR::enum_warning_level level,
|
||||
const char* msg,
|
||||
MYSQL_ERROR ** cond_hdl);
|
||||
bool handle_condition(uint sql_errno,
|
||||
const char* sqlstate,
|
||||
Sql_condition::enum_warning_level level,
|
||||
const char* msg,
|
||||
Sql_condition ** cond_hdl);
|
||||
|
||||
public:
|
||||
/**
|
||||
Remove the error handler last pushed.
|
||||
*/
|
||||
@ -3160,10 +3169,10 @@ private:
|
||||
To raise a SQL condition, the code should use the public
|
||||
raise_error() or raise_warning() methods provided by class THD.
|
||||
*/
|
||||
friend class Signal_common;
|
||||
friend class Signal_statement;
|
||||
friend class Resignal_statement;
|
||||
friend void push_warning(THD*, MYSQL_ERROR::enum_warning_level, uint, const char*);
|
||||
friend class Sql_cmd_common_signal;
|
||||
friend class Sql_cmd_signal;
|
||||
friend class Sql_cmd_resignal;
|
||||
friend void push_warning(THD*, Sql_condition::enum_warning_level, uint, const char*);
|
||||
friend void my_message_sql(uint, const char *, myf);
|
||||
|
||||
/**
|
||||
@ -3174,10 +3183,10 @@ private:
|
||||
@param msg the condition message text
|
||||
@return The condition raised, or NULL
|
||||
*/
|
||||
MYSQL_ERROR*
|
||||
Sql_condition*
|
||||
raise_condition(uint sql_errno,
|
||||
const char* sqlstate,
|
||||
MYSQL_ERROR::enum_warning_level level,
|
||||
Sql_condition::enum_warning_level level,
|
||||
const char* msg);
|
||||
|
||||
public:
|
||||
@ -3307,8 +3316,8 @@ private:
|
||||
tree itself is reused between executions and thus is stored elsewhere.
|
||||
*/
|
||||
MEM_ROOT main_mem_root;
|
||||
Warning_info main_warning_info;
|
||||
Diagnostics_area main_da;
|
||||
Diagnostics_area *m_stmt_da;
|
||||
|
||||
/**
|
||||
It will be set TURE if CURRENT_USER() is called in account management
|
||||
@ -3341,24 +3350,24 @@ private:
|
||||
};
|
||||
|
||||
|
||||
/** A short cut for thd->stmt_da->set_ok_status(). */
|
||||
/** A short cut for thd->get_stmt_da()->set_ok_status(). */
|
||||
|
||||
inline void
|
||||
my_ok(THD *thd, ulonglong affected_rows= 0, ulonglong id= 0,
|
||||
const char *message= NULL)
|
||||
{
|
||||
thd->set_row_count_func(affected_rows);
|
||||
thd->stmt_da->set_ok_status(thd, affected_rows, id, message);
|
||||
thd->get_stmt_da()->set_ok_status(affected_rows, id, message);
|
||||
}
|
||||
|
||||
|
||||
/** A short cut for thd->stmt_da->set_eof_status(). */
|
||||
/** A short cut for thd->get_stmt_da()->set_eof_status(). */
|
||||
|
||||
inline void
|
||||
my_eof(THD *thd)
|
||||
{
|
||||
thd->set_row_count_func(-1);
|
||||
thd->stmt_da->set_eof_status(thd);
|
||||
thd->get_stmt_da()->set_eof_status(thd);
|
||||
}
|
||||
|
||||
#define tmp_disable_binlog(A) \
|
||||
|
Reference in New Issue
Block a user