mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Move all ddl log code to ddl_log.cc and ddl_log.h
Part of prepration for: MDEV-17567 Atomic DDL No notable code changes except moving code around
This commit is contained in:
@ -38,80 +38,6 @@ typedef struct st_key_cache KEY_CACHE;
|
||||
typedef struct st_lock_param_type ALTER_PARTITION_PARAM_TYPE;
|
||||
typedef struct st_order ORDER;
|
||||
|
||||
enum ddl_log_entry_code
|
||||
{
|
||||
/*
|
||||
DDL_LOG_EXECUTE_CODE:
|
||||
This is a code that indicates that this is a log entry to
|
||||
be executed, from this entry a linked list of log entries
|
||||
can be found and executed.
|
||||
DDL_LOG_ENTRY_CODE:
|
||||
An entry to be executed in a linked list from an execute log
|
||||
entry.
|
||||
DDL_IGNORE_LOG_ENTRY_CODE:
|
||||
An entry that is to be ignored
|
||||
*/
|
||||
DDL_LOG_EXECUTE_CODE = 'e',
|
||||
DDL_LOG_ENTRY_CODE = 'l',
|
||||
DDL_IGNORE_LOG_ENTRY_CODE = 'i'
|
||||
};
|
||||
|
||||
enum ddl_log_action_code
|
||||
{
|
||||
/*
|
||||
The type of action that a DDL_LOG_ENTRY_CODE entry is to
|
||||
perform.
|
||||
DDL_LOG_DELETE_ACTION:
|
||||
Delete an entity
|
||||
DDL_LOG_RENAME_ACTION:
|
||||
Rename an entity
|
||||
DDL_LOG_REPLACE_ACTION:
|
||||
Rename an entity after removing the previous entry with the
|
||||
new name, that is replace this entry.
|
||||
DDL_LOG_EXCHANGE_ACTION:
|
||||
Exchange two entities by renaming them a -> tmp, b -> a, tmp -> b.
|
||||
*/
|
||||
DDL_LOG_DELETE_ACTION = 'd',
|
||||
DDL_LOG_RENAME_ACTION = 'r',
|
||||
DDL_LOG_REPLACE_ACTION = 's',
|
||||
DDL_LOG_EXCHANGE_ACTION = 'e'
|
||||
};
|
||||
|
||||
enum enum_ddl_log_exchange_phase {
|
||||
EXCH_PHASE_NAME_TO_TEMP= 0,
|
||||
EXCH_PHASE_FROM_TO_NAME= 1,
|
||||
EXCH_PHASE_TEMP_TO_FROM= 2
|
||||
};
|
||||
|
||||
|
||||
typedef struct st_ddl_log_entry
|
||||
{
|
||||
const char *name;
|
||||
const char *from_name;
|
||||
const char *handler_name;
|
||||
const char *tmp_name;
|
||||
uint next_entry;
|
||||
uint entry_pos;
|
||||
enum ddl_log_entry_code entry_type;
|
||||
enum ddl_log_action_code action_type;
|
||||
/*
|
||||
Most actions have only one phase. REPLACE does however have two
|
||||
phases. The first phase removes the file with the new name if
|
||||
there was one there before and the second phase renames the
|
||||
old name to the new name.
|
||||
*/
|
||||
char phase;
|
||||
} DDL_LOG_ENTRY;
|
||||
|
||||
typedef struct st_ddl_log_memory_entry
|
||||
{
|
||||
uint entry_pos;
|
||||
struct st_ddl_log_memory_entry *next_log_entry;
|
||||
struct st_ddl_log_memory_entry *prev_log_entry;
|
||||
struct st_ddl_log_memory_entry *next_active_log_entry;
|
||||
} DDL_LOG_MEMORY_ENTRY;
|
||||
|
||||
|
||||
enum enum_explain_filename_mode
|
||||
{
|
||||
EXPLAIN_ALL_VERBOSE= 0,
|
||||
@ -264,17 +190,6 @@ int write_bin_log(THD *thd, bool clear_error,
|
||||
bool is_trans= FALSE);
|
||||
int write_bin_log_with_if_exists(THD *thd, bool clear_error,
|
||||
bool is_trans, bool add_if_exists);
|
||||
bool write_ddl_log_entry(DDL_LOG_ENTRY *ddl_log_entry,
|
||||
DDL_LOG_MEMORY_ENTRY **active_entry);
|
||||
bool write_execute_ddl_log_entry(uint first_entry,
|
||||
bool complete,
|
||||
DDL_LOG_MEMORY_ENTRY **active_entry);
|
||||
bool deactivate_ddl_log_entry(uint entry_no);
|
||||
void release_ddl_log_memory_entry(DDL_LOG_MEMORY_ENTRY *log_entry);
|
||||
bool sync_ddl_log();
|
||||
void release_ddl_log();
|
||||
void execute_ddl_log_recovery();
|
||||
bool execute_ddl_log_entry(THD *thd, uint first_entry);
|
||||
|
||||
template<typename T> class List;
|
||||
void promote_first_timestamp_column(List<Create_field> *column_definitions);
|
||||
@ -287,7 +202,6 @@ uint explain_filename(THD* thd, const char *from, char *to, uint to_length,
|
||||
|
||||
|
||||
extern MYSQL_PLUGIN_IMPORT const LEX_CSTRING primary_key_name;
|
||||
extern mysql_mutex_t LOCK_gdl;
|
||||
|
||||
bool check_engine(THD *, const char *, const char *, HA_CREATE_INFO *);
|
||||
|
||||
|
Reference in New Issue
Block a user