diff options
-rw-r--r-- | sql/ha_partition.cc | 15 | ||||
-rw-r--r-- | sql/handler.h | 4 | ||||
-rw-r--r-- | sql/mysql_priv.h | 1 | ||||
-rw-r--r-- | sql/sql_partition.cc | 18 | ||||
-rw-r--r-- | sql/sql_table.cc | 8 |
5 files changed, 24 insertions, 22 deletions
diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc index 22d092b486e..af6ce9cd1e0 100644 --- a/sql/ha_partition.cc +++ b/sql/ha_partition.cc @@ -101,7 +101,9 @@ handlerton partition_hton = { partition_flags, /* Partition flags */ alter_table_flags, /* Partition flags */ NULL, /* Alter Tablespace */ - HTON_NOT_USER_SELECTABLE | HTON_HIDDEN + HTON_NOT_USER_SELECTABLE | HTON_HIDDEN, + NULL, /* binlog function */ + NULL /* binlog query */ }; /* @@ -495,10 +497,9 @@ int ha_partition::create_handler_files(const char *path, { char name[FN_REFLEN]; char old_name[FN_REFLEN]; - char *par_str= ".par"; - strxmov(name, path, par_str, NullS); - strxmov(old_name, old_path, par_str, NullS); + strxmov(name, path, ha_par_ext, NullS); + strxmov(old_name, old_path, ha_par_ext, NullS); if (my_delete(name, MYF(MY_WME)) || my_rename(old_name, name, MYF(MY_WME))) { @@ -763,7 +764,7 @@ int ha_partition::rename_partitions(const char *path) if (file->delete_table((const char *) norm_name_buff) || inactivate_table_log_entry(sub_elem->log_entry->entry_pos)) error= 1; - VOID(synch_table_log()); + VOID(sync_table_log()); } file= m_new_file[part]; create_subpartition_name(part_name_buff, path, @@ -792,7 +793,7 @@ int ha_partition::rename_partitions(const char *path) if (file->delete_table((const char *) norm_name_buff) || inactivate_table_log_entry(part_elem->log_entry->entry_pos)) error= 1; - VOID(synch_table_log()); + VOID(sync_table_log()); } file= m_new_file[i]; create_partition_name(part_name_buff, path, @@ -809,7 +810,7 @@ int ha_partition::rename_partitions(const char *path) } } } while (++i < no_parts); - VOID(synch_table_log()); + VOID(sync_table_log()); DBUG_RETURN(error); } diff --git a/sql/handler.h b/sql/handler.h index b54e7ff129b..543da947ebf 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -658,6 +658,7 @@ typedef struct { #define UNDEF_NODEGROUP 65535 class Item; +struct st_table_log_memory_entry; class partition_element :public Sql_alloc { public: @@ -667,7 +668,7 @@ public: ulonglong part_min_rows; char *partition_name; char *tablespace_name; - TABLE_LOG_MEMORY_ENTRY *log_entry; + st_table_log_memory_entry *log_entry; longlong range_value; char* part_comment; char* data_file_name; @@ -801,7 +802,6 @@ typedef int (*get_partitions_in_range_iter)(partition_info *part_info, PARTITION_ITERATOR *part_iter); -struct st_table_log_memory_entry; class partition_info : public Sql_alloc { diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 24c789a21e7..bcff8d65483 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -1206,6 +1206,7 @@ bool write_execute_table_log_entry(uint first_entry, TABLE_LOG_MEMORY_ENTRY **active_entry); bool inactivate_table_log_entry(uint entry_no); void release_table_log_memory_entry(TABLE_LOG_MEMORY_ENTRY *log_entry); +bool sync_table_log(); void release_table_log(); void execute_table_log_recovery(); bool execute_table_log_entry(uint first_entry); diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index 0e35a386f85..809bd0fcfce 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -5215,12 +5215,12 @@ write_log_changed_partitions(ALTER_PARTITION_PARAM_TYPE *lpt, part_elem->partition_name, sub_elem->partition_name, NORMAL_PART_NAME); - table_log_entry.name= norm_path; + table_log_entry.name= normal_path; table_log_entry.from_name= tmp_path; if (part_elem->part_state == PART_IS_CHANGED) - table_log_entry->action_type= TLOG_REPLACE_ACTION_CODE; + table_log_entry.action_type= TLOG_REPLACE_ACTION_CODE; else - table_log_entry->action_type= TLOG_RENAME_ACTION_CODE; + table_log_entry.action_type= TLOG_RENAME_ACTION_CODE; if (write_table_log_entry(&table_log_entry, &log_entry)) { DBUG_RETURN(TRUE); @@ -5244,19 +5244,19 @@ write_log_changed_partitions(ALTER_PARTITION_PARAM_TYPE *lpt, table_log_entry.name= normal_path; table_log_entry.from_name= tmp_path; if (part_elem->part_state == PART_IS_CHANGED) - table_log_entry->action_type= TLOG_REPLACE_ACTION_CODE; + table_log_entry.action_type= TLOG_REPLACE_ACTION_CODE; else - table_log_entry->action_type= TLOG_RENAME_ACTION_CODE; + table_log_entry.action_type= TLOG_RENAME_ACTION_CODE; if (write_table_log_entry(&table_log_entry, &log_entry)) { DBUG_RETURN(TRUE); } *next_entry= log_entry->entry_pos; - part_elem->table_log_entry= log_entry; + part_elem->log_entry= log_entry; insert_part_info_log_entry_list(part_info, log_entry); } } - } while (++i < no_elements) + } while (++i < no_elements); DBUG_RETURN(FALSE); } @@ -5332,7 +5332,7 @@ write_log_dropped_partitions(ALTER_PARTITION_PARAM_TYPE *lpt, } *next_entry= log_entry->entry_pos; if (temp_list) - sub_elem->table_log_entry= log_entry; + sub_elem->log_entry= log_entry; insert_part_info_log_entry_list(part_info, log_entry); } while (++j < no_subparts); } @@ -5351,7 +5351,7 @@ write_log_dropped_partitions(ALTER_PARTITION_PARAM_TYPE *lpt, } *next_entry= log_entry->entry_pos; if (temp_list) - part_elem->table_log_entry= log_entry; + part_elem->log_entry= log_entry; insert_part_info_log_entry_list(part_info, log_entry); } } diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 47a5693f374..a5ef2a90b5d 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -293,6 +293,7 @@ pthread_mutex_t LOCK_gtl; #define TLOG_ACTION_TYPE_POS 1 #define TLOG_PHASE_POS 2 #define TLOG_NEXT_ENTRY_POS 4 +#define TLOG_NAME_POS 8 #define TLOG_NO_ENTRY_POS 0 #define TLOG_NAME_LEN_POS 4 @@ -762,18 +763,18 @@ bool inactivate_table_log_entry(uint entry_no) { bool error= TRUE; - const char *file_entry= (const char*)global_table_log.file_entry + char *file_entry= (char*)global_table_log.file_entry; DBUG_ENTER("inactivate_table_log_entry"); if (!read_table_log_file_entry(entry_no)) { - if (file_entry[TLOG_ENTRY_POS] == TLOG_LOG_ENTRY_CODE) + if (file_entry[TLOG_ENTRY_TYPE_POS] == TLOG_LOG_ENTRY_CODE) { if (file_entry[TLOG_ACTION_TYPE_POS] == TLOG_DELETE_ACTION_CODE || file_entry[TLOG_ACTION_TYPE_POS] == TLOG_RENAME_ACTION_CODE || (file_entry[TLOG_ACTION_TYPE_POS] == TLOG_REPLACE_ACTION_CODE && file_entry[TLOG_PHASE_POS] == 1)) - file_entry[TLOG_ENTRY_TYPE_POS]= TLOG_IGNORE_LOG_ENTRY_POS; + file_entry[TLOG_ENTRY_TYPE_POS]= TLOG_IGNORE_LOG_ENTRY_CODE; else if (file_entry[TLOG_ACTION_TYPE_POS] == TLOG_REPLACE_ACTION_CODE) { DBUG_ASSERT(file_entry[TLOG_PHASE_POS] == 0); @@ -800,7 +801,6 @@ inactivate_table_log_entry(uint entry_no) FALSE Success */ -static bool sync_table_log() { |