diff options
author | Nayuta Yanagisawa <nayuta.yanagisawa@hey.com> | 2021-08-02 14:54:49 +0000 |
---|---|---|
committer | Nayuta Yanagisawa <nayuta.yanagisawa@hey.com> | 2021-08-02 14:54:49 +0000 |
commit | b4dea969eea056ed8ec999023754d6a5e91a0ce8 (patch) | |
tree | 7327912938564d9e521a3265f63b86b214d32096 | |
parent | 565a130eff320d9dde4969f6c57019240202dd31 (diff) | |
download | mariadb-git-bb-10.7-mdev-26288.tar.gz |
clang-format -i *.hbb-10.7-mdev-26288
-rw-r--r-- | storage/spider/ha_spider.h | 1297 | ||||
-rw-r--r-- | storage/spider/spd_conn.h | 571 | ||||
-rw-r--r-- | storage/spider/spd_copy_tables.h | 62 | ||||
-rw-r--r-- | storage/spider/spd_db_conn.h | 1345 | ||||
-rw-r--r-- | storage/spider/spd_db_handlersocket.h | 1277 | ||||
-rw-r--r-- | storage/spider/spd_db_include.h | 2081 | ||||
-rw-r--r-- | storage/spider/spd_db_mysql.h | 2230 | ||||
-rw-r--r-- | storage/spider/spd_db_oracle.h | 2059 | ||||
-rw-r--r-- | storage/spider/spd_direct_sql.h | 60 | ||||
-rw-r--r-- | storage/spider/spd_err.h | 88 | ||||
-rw-r--r-- | storage/spider/spd_group_by_handler.h | 17 | ||||
-rw-r--r-- | storage/spider/spd_include.h | 2224 | ||||
-rw-r--r-- | storage/spider/spd_init_query.h | 1666 | ||||
-rw-r--r-- | storage/spider/spd_malloc.h | 112 | ||||
-rw-r--r-- | storage/spider/spd_param.h | 494 | ||||
-rw-r--r-- | storage/spider/spd_ping_table.h | 139 | ||||
-rw-r--r-- | storage/spider/spd_sys_table.h | 796 | ||||
-rw-r--r-- | storage/spider/spd_table.h | 857 | ||||
-rw-r--r-- | storage/spider/spd_trx.h | 352 | ||||
-rw-r--r-- | storage/spider/spd_udf.h | 70 |
20 files changed, 6135 insertions, 11662 deletions
diff --git a/storage/spider/ha_spider.h b/storage/spider/ha_spider.h index 5bc58397f28..f81639d64b0 100644 --- a/storage/spider/ha_spider.h +++ b/storage/spider/ha_spider.h @@ -12,7 +12,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA +*/ #ifdef USE_PRAGMA_INTERFACE #pragma interface @@ -23,21 +24,18 @@ #define SPIDER_LONGLONG_LEN 20 #define SPIDER_MAX_KEY_LENGTH 16384 -#define SPIDER_SET_CONNS_PARAM(param_name, param_val, conns, link_statuses, conn_link_idx, link_count, link_status) \ - for ( \ - roop_count = spider_conn_link_idx_next(link_statuses, \ - conn_link_idx, -1, link_count, link_status); \ - roop_count < link_count; \ - roop_count = spider_conn_link_idx_next(link_statuses, \ - conn_link_idx, roop_count, link_count, link_status) \ - ) { \ - if (conns[roop_count]) \ - conns[roop_count]->param_name = param_val; \ +#define SPIDER_SET_CONNS_PARAM(param_name, param_val, conns, link_statuses, \ + conn_link_idx, link_count, link_status) \ + for (roop_count = spider_conn_link_idx_next(link_statuses, conn_link_idx, \ + -1, link_count, link_status); \ + roop_count < link_count; roop_count = spider_conn_link_idx_next( \ + link_statuses, conn_link_idx, roop_count, \ + link_count, link_status)) { \ + if (conns[roop_count]) conns[roop_count]->param_name = param_val; \ } class ha_spider; -struct st_spider_ft_info -{ +struct st_spider_ft_info { struct _ft_vft *please; st_spider_ft_info *next; ha_spider *file; @@ -49,62 +47,61 @@ struct st_spider_ft_info String *key; }; -class ha_spider final : public handler -{ -public: - SPIDER_SHARE *share; - ulonglong spider_thread_id; - ulonglong trx_conn_adjustment; +class ha_spider final : public handler { + public: + SPIDER_SHARE *share; + ulonglong spider_thread_id; + ulonglong trx_conn_adjustment; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - ulonglong trx_hs_r_conn_adjustment; - ulonglong trx_hs_w_conn_adjustment; -#endif - uint mem_calc_id; - const char *mem_calc_func_name; - const char *mem_calc_file_name; - ulong mem_calc_line_no; - uint sql_kinds; - uint *sql_kind; - ulonglong *connection_ids; - uint conn_kinds; - uint *conn_kind; - char *conn_keys_first_ptr; - char **conn_keys; - SPIDER_CONN **conns; + ulonglong trx_hs_r_conn_adjustment; + ulonglong trx_hs_w_conn_adjustment; +#endif + uint mem_calc_id; + const char *mem_calc_func_name; + const char *mem_calc_file_name; + ulong mem_calc_line_no; + uint sql_kinds; + uint *sql_kind; + ulonglong *connection_ids; + uint conn_kinds; + uint *conn_kind; + char *conn_keys_first_ptr; + char **conn_keys; + SPIDER_CONN **conns; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - char **hs_r_conn_keys; - SPIDER_CONN **hs_r_conns; - ulonglong *hs_r_conn_ages; - char **hs_w_conn_keys; - SPIDER_CONN **hs_w_conns; - ulonglong *hs_w_conn_ages; + char **hs_r_conn_keys; + SPIDER_CONN **hs_r_conns; + ulonglong *hs_r_conn_ages; + char **hs_w_conn_keys; + SPIDER_CONN **hs_w_conns; + ulonglong *hs_w_conn_ages; #endif /* for active-standby mode */ - uint *conn_link_idx; - uchar *conn_can_fo; - void **quick_targets; - int *need_mons; - query_id_t search_link_query_id; - int search_link_idx; - int result_link_idx; + uint *conn_link_idx; + uchar *conn_can_fo; + void **quick_targets; + int *need_mons; + query_id_t search_link_query_id; + int search_link_idx; + int result_link_idx; SPIDER_RESULT_LIST result_list; - spider_string *blob_buff; - SPIDER_POSITION *pushed_pos; - SPIDER_POSITION pushed_pos_buf; + spider_string *blob_buff; + SPIDER_POSITION *pushed_pos; + SPIDER_POSITION pushed_pos_buf; #ifdef WITH_PARTITION_STORAGE_ENGINE - bool pt_handler_share_owner = FALSE; + bool pt_handler_share_owner = FALSE; SPIDER_PARTITION_HANDLER_SHARE *partition_handler_share; #endif - bool wide_handler_owner = FALSE; + bool wide_handler_owner = FALSE; SPIDER_WIDE_HANDLER *wide_handler = NULL; #ifdef HA_CAN_BULK_ACCESS - int pre_direct_init_result; - bool is_bulk_access_clone; - bool synced_from_clone_source; - bool bulk_access_started; - bool bulk_access_executing; - bool bulk_access_pre_called; + int pre_direct_init_result; + bool is_bulk_access_clone; + bool synced_from_clone_source; + bool bulk_access_started; + bool bulk_access_executing; + bool bulk_access_pre_called; SPIDER_BULK_ACCESS_LINK *bulk_access_link_first; SPIDER_BULK_ACCESS_LINK *bulk_access_link_current; SPIDER_BULK_ACCESS_LINK *bulk_access_link_exec_tgt; @@ -113,121 +110,121 @@ public: MEM_ROOT ha_mem_root; */ #endif - bool is_clone; - ha_spider *pt_clone_source_handler; - ha_spider *pt_clone_last_searcher; - bool use_index_merge; + bool is_clone; + ha_spider *pt_clone_source_handler; + ha_spider *pt_clone_last_searcher; + bool use_index_merge; - bool init_index_handler; - bool init_rnd_handler; + bool init_index_handler; + bool init_rnd_handler; - bool da_status; - bool use_spatial_index; + bool da_status; + bool use_spatial_index; #ifdef SPIDER_HAS_GROUP_BY_HANDLER - uint idx_for_direct_join; - bool use_fields; - spider_fields *fields; + uint idx_for_direct_join; + bool use_fields; + spider_fields *fields; SPIDER_LINK_IDX_CHAIN *link_idx_chain; SPIDER_LINK_IDX_CHAIN *result_link_idx_chain; #endif /* for mrr */ - bool mrr_with_cnt; - uint multi_range_cnt; - uint multi_range_hit_point; + bool mrr_with_cnt; + uint multi_range_cnt; + uint multi_range_hit_point; #ifdef HA_MRR_USE_DEFAULT_IMPL - int multi_range_num; - bool have_second_range; - KEY_MULTI_RANGE mrr_second_range; - spider_string *mrr_key_buff; + int multi_range_num; + bool have_second_range; + KEY_MULTI_RANGE mrr_second_range; + spider_string *mrr_key_buff; #if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID >= 100000 - range_id_t *multi_range_keys; + range_id_t *multi_range_keys; #else - char **multi_range_keys; + char **multi_range_keys; #endif #else - KEY_MULTI_RANGE *multi_range_ranges; + KEY_MULTI_RANGE *multi_range_ranges; #endif - char *append_tblnm_alias; - uint append_tblnm_alias_length; + char *append_tblnm_alias; + uint append_tblnm_alias_length; - ha_spider *next; + ha_spider *next; - bool dml_inited; - bool rnd_scan_and_first; - bool use_pre_call; - bool use_pre_action; - bool pre_bitmap_checked; - bool bulk_insert; + bool dml_inited; + bool rnd_scan_and_first; + bool use_pre_call; + bool use_pre_action; + bool pre_bitmap_checked; + bool bulk_insert; #ifdef HANDLER_HAS_NEED_INFO_FOR_AUTO_INC - bool info_auto_called; + bool info_auto_called; #endif #ifdef HANDLER_HAS_CAN_USE_FOR_AUTO_INC_INIT - bool auto_inc_temporary; -#endif - int bulk_size; - int direct_dup_insert; - int store_error_num; - uint dup_key_idx; - int select_column_mode; - bool pk_update; - bool force_auto_increment; - int bka_mode; - int error_mode; - ulonglong store_last_insert_id; + bool auto_inc_temporary; +#endif + int bulk_size; + int direct_dup_insert; + int store_error_num; + uint dup_key_idx; + int select_column_mode; + bool pk_update; + bool force_auto_increment; + int bka_mode; + int error_mode; + ulonglong store_last_insert_id; - ulonglong *db_request_id; - uchar *db_request_phase; - uchar *m_handler_opened; - uint *m_handler_id; - char **m_handler_cid; + ulonglong *db_request_id; + uchar *db_request_phase; + uchar *m_handler_opened; + uint *m_handler_id; + char **m_handler_cid; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - uchar *r_handler_opened; - uint *r_handler_id; - uint *r_handler_index; - uchar *w_handler_opened; - uint *w_handler_id; - uint *w_handler_index; + uchar *r_handler_opened; + uint *r_handler_id; + uint *r_handler_index; + uchar *w_handler_opened; + uint *w_handler_id; + uint *w_handler_index; #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS - uchar *do_hs_direct_update; - uint32 **hs_r_ret_fields; - uint32 **hs_w_ret_fields; - size_t *hs_r_ret_fields_num; - size_t *hs_w_ret_fields_num; - uchar *tmp_column_bitmap; + uchar *do_hs_direct_update; + uint32 **hs_r_ret_fields; + uint32 **hs_w_ret_fields; + size_t *hs_r_ret_fields_num; + size_t *hs_w_ret_fields_num; + uchar *tmp_column_bitmap; #endif #endif #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS - bool do_direct_update; + bool do_direct_update; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - bool maybe_do_hs_direct_update; + bool maybe_do_hs_direct_update; #endif - uint direct_update_kinds; + uint direct_update_kinds; #endif spider_index_rnd_init prev_index_rnd_init; #ifdef HANDLER_HAS_DIRECT_AGGREGATE - SPIDER_ITEM_HLD *direct_aggregate_item_first; - SPIDER_ITEM_HLD *direct_aggregate_item_current; + SPIDER_ITEM_HLD *direct_aggregate_item_first; + SPIDER_ITEM_HLD *direct_aggregate_item_current; #endif - ha_rows table_rows; + ha_rows table_rows; #ifdef HA_HAS_CHECKSUM_EXTENDED - ha_checksum checksum_val; - bool checksum_null; - uint action_flags; + ha_checksum checksum_val; + bool checksum_null; + uint action_flags; #endif /* for fulltext search */ - bool ft_init_and_first; - uint ft_init_idx; - uint ft_count; - bool ft_init_without_index_init; - st_spider_ft_info *ft_first; - st_spider_ft_info *ft_current; + bool ft_init_and_first; + uint ft_init_idx; + uint ft_count; + bool ft_init_without_index_init; + st_spider_ft_info *ft_first; + st_spider_ft_info *ft_current; /* for dbton */ - spider_db_handler **dbton_handler; + spider_db_handler **dbton_handler; /* for direct limit offset */ longlong direct_select_offset; @@ -235,264 +232,117 @@ public: longlong direct_select_limit; ha_spider(); - ha_spider( - handlerton *hton, - TABLE_SHARE *table_arg - ); + ha_spider(handlerton *hton, TABLE_SHARE *table_arg); virtual ~ha_spider(); - handler *clone( - const char *name, - MEM_ROOT *mem_root - ); + handler *clone(const char *name, MEM_ROOT *mem_root); const char **bas_ext() const; - int open( - const char* name, - int mode, - uint test_if_locked - ); + int open(const char *name, int mode, uint test_if_locked); int close(); - int check_access_kind_for_connection( - THD *thd, - bool write_request - ); - void check_access_kind( - THD *thd - ); + int check_access_kind_for_connection(THD *thd, bool write_request); + void check_access_kind(THD *thd); #ifdef HA_CAN_BULK_ACCESS - int additional_lock( - THD *thd, - enum thr_lock_type lock_type - ); -#endif - THR_LOCK_DATA **store_lock( - THD *thd, - THR_LOCK_DATA **to, - enum thr_lock_type lock_type - ); - int external_lock( - THD *thd, - int lock_type - ); - int start_stmt( - THD *thd, - thr_lock_type lock_type - ); + int additional_lock(THD *thd, enum thr_lock_type lock_type); +#endif + THR_LOCK_DATA **store_lock(THD *thd, THR_LOCK_DATA **to, + enum thr_lock_type lock_type); + int external_lock(THD *thd, int lock_type); + int start_stmt(THD *thd, thr_lock_type lock_type); int reset(); - int extra( - enum ha_extra_function operation - ); - int index_init( - uint idx, - bool sorted - ); + int extra(enum ha_extra_function operation); + int index_init(uint idx, bool sorted); #ifdef HA_CAN_BULK_ACCESS - int pre_index_init( - uint idx, - bool sorted - ); + int pre_index_init(uint idx, bool sorted); #endif int index_end(); #ifdef HA_CAN_BULK_ACCESS int pre_index_end(); #endif - int index_read_map( - uchar *buf, - const uchar *key, - key_part_map keypart_map, - enum ha_rkey_function find_flag - ); - int index_read_last_map( - uchar *buf, - const uchar *key, - key_part_map keypart_map - ); - int index_next( - uchar *buf - ); - int index_prev( - uchar *buf - ); - int index_first( - uchar *buf - ); - int index_last( - uchar *buf - ); - int index_next_same( - uchar *buf, - const uchar *key, - uint keylen - ); - int read_range_first( - const key_range *start_key, - const key_range *end_key, - bool eq_range, - bool sorted - ); + int index_read_map(uchar *buf, const uchar *key, key_part_map keypart_map, + enum ha_rkey_function find_flag); + int index_read_last_map(uchar *buf, const uchar *key, + key_part_map keypart_map); + int index_next(uchar *buf); + int index_prev(uchar *buf); + int index_first(uchar *buf); + int index_last(uchar *buf); + int index_next_same(uchar *buf, const uchar *key, uint keylen); + int read_range_first(const key_range *start_key, const key_range *end_key, + bool eq_range, bool sorted); int read_range_next(); void reset_no_where_cond(); bool check_no_where_cond(); #ifdef HA_MRR_USE_DEFAULT_IMPL #if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID >= 100000 - ha_rows multi_range_read_info_const( - uint keyno, - RANGE_SEQ_IF *seq, - void *seq_init_param, - uint n_ranges, - uint *bufsz, - uint *flags, - Cost_estimate *cost - ); - ha_rows multi_range_read_info( - uint keyno, - uint n_ranges, - uint keys, - uint key_parts, - uint *bufsz, - uint *flags, - Cost_estimate *cost - ); + ha_rows multi_range_read_info_const(uint keyno, RANGE_SEQ_IF *seq, + void *seq_init_param, uint n_ranges, + uint *bufsz, uint *flags, + Cost_estimate *cost); + ha_rows multi_range_read_info(uint keyno, uint n_ranges, uint keys, + uint key_parts, uint *bufsz, uint *flags, + Cost_estimate *cost); #else - ha_rows multi_range_read_info_const( - uint keyno, - RANGE_SEQ_IF *seq, - void *seq_init_param, - uint n_ranges, - uint *bufsz, - uint *flags, - COST_VECT *cost - ); - ha_rows multi_range_read_info( - uint keyno, - uint n_ranges, - uint keys, - uint key_parts, - uint *bufsz, - uint *flags, - COST_VECT *cost - ); -#endif - int multi_range_read_init( - RANGE_SEQ_IF *seq, - void *seq_init_param, - uint n_ranges, - uint mode, - HANDLER_BUFFER *buf - ); + ha_rows multi_range_read_info_const(uint keyno, RANGE_SEQ_IF *seq, + void *seq_init_param, uint n_ranges, + uint *bufsz, uint *flags, + COST_VECT *cost); + ha_rows multi_range_read_info(uint keyno, uint n_ranges, uint keys, + uint key_parts, uint *bufsz, uint *flags, + COST_VECT *cost); +#endif + int multi_range_read_init(RANGE_SEQ_IF *seq, void *seq_init_param, + uint n_ranges, uint mode, HANDLER_BUFFER *buf); #if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID >= 100000 - int multi_range_read_next( - range_id_t *range_info - ); - int multi_range_read_next_first( - range_id_t *range_info - ); - int multi_range_read_next_next( - range_id_t *range_info - ); + int multi_range_read_next(range_id_t *range_info); + int multi_range_read_next_first(range_id_t *range_info); + int multi_range_read_next_next(range_id_t *range_info); #else - int multi_range_read_next( - char **range_info - ); - int multi_range_read_next_first( - char **range_info - ); - int multi_range_read_next_next( - char **range_info - ); + int multi_range_read_next(char **range_info); + int multi_range_read_next_first(char **range_info); + int multi_range_read_next_next(char **range_info); #endif #else - int read_multi_range_first( - KEY_MULTI_RANGE **found_range_p, - KEY_MULTI_RANGE *ranges, - uint range_count, - bool sorted, - HANDLER_BUFFER *buffer - ); - int read_multi_range_next( - KEY_MULTI_RANGE **found_range_p - ); -#endif - int rnd_init( - bool scan - ); + int read_multi_range_first(KEY_MULTI_RANGE **found_range_p, + KEY_MULTI_RANGE *ranges, uint range_count, + bool sorted, HANDLER_BUFFER *buffer); + int read_multi_range_next(KEY_MULTI_RANGE **found_range_p); +#endif + int rnd_init(bool scan); #ifdef HA_CAN_BULK_ACCESS - int pre_rnd_init( - bool scan - ); + int pre_rnd_init(bool scan); #endif int rnd_end(); #ifdef HA_CAN_BULK_ACCESS int pre_rnd_end(); #endif - int rnd_next( - uchar *buf - ); - void position( - const uchar *record - ); - int rnd_pos( - uchar *buf, - uchar *pos - ); - int cmp_ref( - const uchar *ref1, - const uchar *ref2 - ); + int rnd_next(uchar *buf); + void position(const uchar *record); + int rnd_pos(uchar *buf, uchar *pos); + int cmp_ref(const uchar *ref1, const uchar *ref2); int ft_init(); void ft_end(); - FT_INFO *ft_init_ext( - uint flags, - uint inx, - String *key - ); - int ft_read( - uchar *buf - ); - int pre_index_read_map( - const uchar *key, - key_part_map keypart_map, - enum ha_rkey_function find_flag, - bool use_parallel - ); + FT_INFO *ft_init_ext(uint flags, uint inx, String *key); + int ft_read(uchar *buf); + int pre_index_read_map(const uchar *key, key_part_map keypart_map, + enum ha_rkey_function find_flag, bool use_parallel); int pre_index_first(bool use_parallel); int pre_index_last(bool use_parallel); - int pre_index_read_last_map( - const uchar *key, - key_part_map keypart_map, - bool use_parallel - ); + int pre_index_read_last_map(const uchar *key, key_part_map keypart_map, + bool use_parallel); #ifdef HA_MRR_USE_DEFAULT_IMPL - int pre_multi_range_read_next( - bool use_parallel - ); + int pre_multi_range_read_next(bool use_parallel); #else - int pre_read_multi_range_first( - KEY_MULTI_RANGE **found_range_p, - KEY_MULTI_RANGE *ranges, - uint range_count, - bool sorted, - HANDLER_BUFFER *buffer, - bool use_parallel - ); -#endif - int pre_read_range_first( - const key_range *start_key, - const key_range *end_key, - bool eq_range, - bool sorted, - bool use_parallel - ); + int pre_read_multi_range_first(KEY_MULTI_RANGE **found_range_p, + KEY_MULTI_RANGE *ranges, uint range_count, + bool sorted, HANDLER_BUFFER *buffer, + bool use_parallel); +#endif + int pre_read_range_first(const key_range *start_key, const key_range *end_key, + bool eq_range, bool sorted, bool use_parallel); int pre_ft_read(bool use_parallel); int pre_rnd_next(bool use_parallel); - int info( - uint flag - ); - ha_rows records_in_range( - uint inx, - const key_range *start_key, - const key_range *end_key, - page_range *pages - ); + int info(uint flag); + ha_rows records_in_range(uint inx, const key_range *start_key, + const key_range *end_key, page_range *pages); int check_crd(); int pre_records(); ha_rows records(); @@ -503,14 +353,8 @@ public: const char *table_type() const; ulonglong table_flags() const; ulong table_flags_for_partition(); - const char *index_type( - uint key_number - ); - ulong index_flags( - uint idx, - uint part, - bool all_parts - ) const; + const char *index_type(uint key_number); + ulong index_flags(uint idx, uint part, bool all_parts) const; uint max_supported_record_length() const; uint max_supported_keys() const; uint max_supported_key_parts() const; @@ -524,107 +368,58 @@ public: bool can_use_for_auto_inc_init(); #endif int update_auto_increment(); - void get_auto_increment( - ulonglong offset, - ulonglong increment, - ulonglong nb_desired_values, - ulonglong *first_value, - ulonglong *nb_reserved_values - ); - int reset_auto_increment( - ulonglong value - ); + void get_auto_increment(ulonglong offset, ulonglong increment, + ulonglong nb_desired_values, ulonglong *first_value, + ulonglong *nb_reserved_values); + int reset_auto_increment(ulonglong value); void release_auto_increment(); #ifdef SPIDER_HANDLER_START_BULK_INSERT_HAS_FLAGS - void start_bulk_insert( - ha_rows rows, - uint flags - ); + void start_bulk_insert(ha_rows rows, uint flags); #else - void start_bulk_insert( - ha_rows rows - ); + void start_bulk_insert(ha_rows rows); #endif int end_bulk_insert(); - int write_row( - const uchar *buf - ); + int write_row(const uchar *buf); #ifdef HA_CAN_BULK_ACCESS - int pre_write_row( - uchar *buf - ); + int pre_write_row(uchar *buf); #endif #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS - void direct_update_init( - THD *thd, - bool hs_request - ); + void direct_update_init(THD *thd, bool hs_request); #endif bool start_bulk_update(); - int exec_bulk_update( - ha_rows *dup_key_found - ); + int exec_bulk_update(ha_rows *dup_key_found); int end_bulk_update(); #ifdef SPIDER_UPDATE_ROW_HAS_CONST_NEW_DATA - int bulk_update_row( - const uchar *old_data, - const uchar *new_data, - ha_rows *dup_key_found - ); - int update_row( - const uchar *old_data, - const uchar *new_data - ); + int bulk_update_row(const uchar *old_data, const uchar *new_data, + ha_rows *dup_key_found); + int update_row(const uchar *old_data, const uchar *new_data); #else - int bulk_update_row( - const uchar *old_data, - uchar *new_data, - ha_rows *dup_key_found - ); - int update_row( - const uchar *old_data, - uchar *new_data - ); + int bulk_update_row(const uchar *old_data, uchar *new_data, + ha_rows *dup_key_found); + int update_row(const uchar *old_data, uchar *new_data); #endif #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS - bool check_direct_update_sql_part( - st_select_lex *select_lex, - longlong select_limit, - longlong offset_limit - ); + bool check_direct_update_sql_part(st_select_lex *select_lex, + longlong select_limit, + longlong offset_limit); #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS_WITH_HS #ifdef SPIDER_MDEV_16246 - inline int direct_update_rows_init( - List<Item> *update_fields - ) { + inline int direct_update_rows_init(List<Item> *update_fields) { return direct_update_rows_init(update_fields, 2, NULL, 0, FALSE, NULL); } - int direct_update_rows_init( - List<Item> *update_fields, - uint mode, - KEY_MULTI_RANGE *ranges, - uint range_count, - bool sorted, - uchar *new_data - ); + int direct_update_rows_init(List<Item> *update_fields, uint mode, + KEY_MULTI_RANGE *ranges, uint range_count, + bool sorted, uchar *new_data); #else - inline int direct_update_rows_init() - { + inline int direct_update_rows_init() { return direct_update_rows_init(2, NULL, 0, FALSE, NULL); } - int direct_update_rows_init( - uint mode, - KEY_MULTI_RANGE *ranges, - uint range_count, - bool sorted, - uchar *new_data - ); + int direct_update_rows_init(uint mode, KEY_MULTI_RANGE *ranges, + uint range_count, bool sorted, uchar *new_data); #endif #else #ifdef SPIDER_MDEV_16246 - int direct_update_rows_init( - List<Item> *update_fields - ); + int direct_update_rows_init(List<Item> *update_fields); #else int direct_update_rows_init(); #endif @@ -632,79 +427,50 @@ public: #ifdef HA_CAN_BULK_ACCESS #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS_WITH_HS #ifdef SPIDER_MDEV_16246 - inline int pre_direct_update_rows_init( - List<Item> *update_fields - ) { + inline int pre_direct_update_rows_init(List<Item> *update_fields) { return pre_direct_update_rows_init(update_fields, 2, NULL, 0, FALSE, NULL); } - int pre_direct_update_rows_init( - List<Item> *update_fields, - uint mode, - KEY_MULTI_RANGE *ranges, - uint range_count, - bool sorted, - uchar *new_data - ); + int pre_direct_update_rows_init(List<Item> *update_fields, uint mode, + KEY_MULTI_RANGE *ranges, uint range_count, + bool sorted, uchar *new_data); #else - inline int pre_direct_update_rows_init() - { + inline int pre_direct_update_rows_init() { return pre_direct_update_rows_init(2, NULL, 0, FALSE, NULL); } - int pre_direct_update_rows_init( - uint mode, - KEY_MULTI_RANGE *ranges, - uint range_count, - bool sorted, - uchar *new_data - ); + int pre_direct_update_rows_init(uint mode, KEY_MULTI_RANGE *ranges, + uint range_count, bool sorted, + uchar *new_data); #endif #else #ifdef SPIDER_MDEV_16246 - int pre_direct_update_rows_init( - List<Item> *update_fields - ); + int pre_direct_update_rows_init(List<Item> *update_fields); #else int pre_direct_update_rows_init(); #endif #endif #endif #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS_WITH_HS - inline int direct_update_rows(ha_rows *update_rows, ha_rows *found_rows) - { + inline int direct_update_rows(ha_rows *update_rows, ha_rows *found_rows) { return direct_update_rows(NULL, 0, FALSE, NULL, update_rows, found_rows); } - int direct_update_rows( - KEY_MULTI_RANGE *ranges, - uint range_count, - bool sorted, - uchar *new_data, - ha_rows *update_rows, - ha_rows *found_row - ); + int direct_update_rows(KEY_MULTI_RANGE *ranges, uint range_count, bool sorted, + uchar *new_data, ha_rows *update_rows, + ha_rows *found_row); #else - int direct_update_rows( - ha_rows *update_rows, - ha_rows *found_row - ); + int direct_update_rows(ha_rows *update_rows, ha_rows *found_row); #endif #ifdef HA_CAN_BULK_ACCESS #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS_WITH_HS - inline int pre_direct_update_rows() - { + inline int pre_direct_update_rows() { ha_rows update_rows; ha_rows found_rows; return pre_direct_update_rows(NULL, 0, FALSE, NULL, &update_rows, - &found_rows); + &found_rows); } - int pre_direct_update_rows( - KEY_MULTI_RANGE *ranges, - uint range_count, - bool sorted, - uchar *new_data, - ha_rows *update_rows, - ha_rows *found_row - ); + int pre_direct_update_rows(KEY_MULTI_RANGE *ranges, uint range_count, + bool sorted, uchar *new_data, ha_rows *update_rows, + ha_rows *found_row); #else int pre_direct_update_rows(); #endif @@ -712,75 +478,49 @@ public: #endif bool start_bulk_delete(); int end_bulk_delete(); - int delete_row( - const uchar *buf - ); + int delete_row(const uchar *buf); #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS - bool check_direct_delete_sql_part( - st_select_lex *select_lex, - longlong select_limit, - longlong offset_limit - ); + bool check_direct_delete_sql_part(st_select_lex *select_lex, + longlong select_limit, + longlong offset_limit); #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS_WITH_HS - inline int direct_delete_rows_init() - { + inline int direct_delete_rows_init() { return direct_delete_rows_init(2, NULL, 0, FALSE); } - int direct_delete_rows_init( - uint mode, - KEY_MULTI_RANGE *ranges, - uint range_count, - bool sorted - ); + int direct_delete_rows_init(uint mode, KEY_MULTI_RANGE *ranges, + uint range_count, bool sorted); #else int direct_delete_rows_init(); #endif #ifdef HA_CAN_BULK_ACCESS #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS_WITH_HS - inline int pre_direct_delete_rows_init() - { + inline int pre_direct_delete_rows_init() { return pre_direct_delete_rows_init(2, NULL, 0, FALSE); } - int pre_direct_delete_rows_init( - uint mode, - KEY_MULTI_RANGE *ranges, - uint range_count, - bool sorted - ); + int pre_direct_delete_rows_init(uint mode, KEY_MULTI_RANGE *ranges, + uint range_count, bool sorted); #else int pre_direct_delete_rows_init(); #endif #endif #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS_WITH_HS - inline int direct_delete_rows(ha_rows *delete_rows) - { + inline int direct_delete_rows(ha_rows *delete_rows) { return direct_delete_rows(NULL, 0, FALSE, delete_rows); } - int direct_delete_rows( - KEY_MULTI_RANGE *ranges, - uint range_count, - bool sorted, - ha_rows *delete_rows - ); + int direct_delete_rows(KEY_MULTI_RANGE *ranges, uint range_count, bool sorted, + ha_rows *delete_rows); #else - int direct_delete_rows( - ha_rows *delete_rows - ); + int direct_delete_rows(ha_rows *delete_rows); #endif #ifdef HA_CAN_BULK_ACCESS #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS_WITH_HS - inline int pre_direct_delete_rows() - { + inline int pre_direct_delete_rows() { ha_rows delete_rows; return pre_direct_delete_rows(NULL, 0, FALSE, &delete_rows); } - int pre_direct_delete_rows( - KEY_MULTI_RANGE *ranges, - uint range_count, - bool sorted, - ha_rows *delete_rows - ); + int pre_direct_delete_rows(KEY_MULTI_RANGE *ranges, uint range_count, + bool sorted, ha_rows *delete_rows); #else int pre_direct_delete_rows(); #endif @@ -789,85 +529,36 @@ public: int delete_all_rows(); int truncate(); double scan_time(); - double read_time( - uint index, - uint ranges, - ha_rows rows - ); + double read_time(uint index, uint ranges, ha_rows rows); #ifdef HA_CAN_BULK_ACCESS void bulk_req_exec(); #endif const key_map *keys_to_use_for_scanning(); ha_rows estimate_rows_upper_bound(); - void print_error( - int error, - myf errflag - ); - bool get_error_message( - int error, - String *buf - ); - int create( - const char *name, - TABLE *form, - HA_CREATE_INFO *info - ); - void update_create_info( - HA_CREATE_INFO* create_info - ); - int rename_table( - const char *from, - const char *to - ); - int delete_table( - const char *name - ); + void print_error(int error, myf errflag); + bool get_error_message(int error, String *buf); + int create(const char *name, TABLE *form, HA_CREATE_INFO *info); + void update_create_info(HA_CREATE_INFO *create_info); + int rename_table(const char *from, const char *to); + int delete_table(const char *name); bool is_crashed() const; #ifdef SPIDER_HANDLER_AUTO_REPAIR_HAS_ERROR bool auto_repair(int error) const; #else bool auto_repair() const; #endif - int disable_indexes( - uint mode - ); - int enable_indexes( - uint mode - ); - int check( - THD* thd, - HA_CHECK_OPT* check_opt - ); - int repair( - THD* thd, - HA_CHECK_OPT* check_opt - ); - bool check_and_repair( - THD *thd - ); - int analyze( - THD* thd, - HA_CHECK_OPT* check_opt - ); - int optimize( - THD* thd, - HA_CHECK_OPT* check_opt - ); - bool is_fatal_error( - int error_num, - uint flags - ); - Field *field_exchange( - Field *field - ); - const COND *cond_push( - const COND* cond - ); + int disable_indexes(uint mode); + int enable_indexes(uint mode); + int check(THD *thd, HA_CHECK_OPT *check_opt); + int repair(THD *thd, HA_CHECK_OPT *check_opt); + bool check_and_repair(THD *thd); + int analyze(THD *thd, HA_CHECK_OPT *check_opt); + int optimize(THD *thd, HA_CHECK_OPT *check_opt); + bool is_fatal_error(int error_num, uint flags); + Field *field_exchange(Field *field); + const COND *cond_push(const COND *cond); void cond_pop(); - int info_push( - uint info_type, - void *info - ); + int info_push(uint info_type, void *info); #ifdef HANDLER_HAS_DIRECT_AGGREGATE void return_record_by_parent(); #endif @@ -880,128 +571,67 @@ public: #ifdef WITH_PARTITION_STORAGE_ENGINE void check_select_column(bool rnd); #endif - bool check_and_start_bulk_update( - spider_bulk_upd_start bulk_upd_start - ); - int check_and_end_bulk_update( - spider_bulk_upd_start bulk_upd_start - ); + bool check_and_start_bulk_update(spider_bulk_upd_start bulk_upd_start); + int check_and_end_bulk_update(spider_bulk_upd_start bulk_upd_start); uint check_partitioned(); void check_direct_order_limit(); void check_distinct_key_query(); - bool is_sole_projection_field( - uint16 field_index - ); + bool is_sole_projection_field(uint16 field_index); int check_ha_range_eof(); int drop_tmp_tables(); - bool handler_opened( - int link_idx, - uint tgt_conn_kind - ); - void set_handler_opened( - int link_idx - ); - void clear_handler_opened( - int link_idx, - uint tgt_conn_kind - ); - int close_opened_handler( - int link_idx, - bool release_conn - ); + bool handler_opened(int link_idx, uint tgt_conn_kind); + void set_handler_opened(int link_idx); + void clear_handler_opened(int link_idx, uint tgt_conn_kind); + int close_opened_handler(int link_idx, bool release_conn); int index_handler_init(); int rnd_handler_init(); void set_error_mode(); void backup_error_status(); - int check_error_mode( - int error_num - ); - int check_error_mode_eof( - int error_num - ); - int index_read_map_internal( - uchar *buf, - const uchar *key, - key_part_map keypart_map, - enum ha_rkey_function find_flag - ); - int index_read_last_map_internal( - uchar *buf, - const uchar *key, - key_part_map keypart_map - ); + int check_error_mode(int error_num); + int check_error_mode_eof(int error_num); + int index_read_map_internal(uchar *buf, const uchar *key, + key_part_map keypart_map, + enum ha_rkey_function find_flag); + int index_read_last_map_internal(uchar *buf, const uchar *key, + key_part_map keypart_map); int index_first_internal(uchar *buf); int index_last_internal(uchar *buf); - int read_range_first_internal( - uchar *buf, - const key_range *start_key, - const key_range *end_key, - bool eq_range, - bool sorted - ); + int read_range_first_internal(uchar *buf, const key_range *start_key, + const key_range *end_key, bool eq_range, + bool sorted); #ifdef HA_MRR_USE_DEFAULT_IMPL #else - int read_multi_range_first_internal( - uchar *buf, - KEY_MULTI_RANGE **found_range_p, - KEY_MULTI_RANGE *ranges, - uint range_count, - bool sorted, - HANDLER_BUFFER *buffer - ); + int read_multi_range_first_internal(uchar *buf, + KEY_MULTI_RANGE **found_range_p, + KEY_MULTI_RANGE *ranges, uint range_count, + bool sorted, HANDLER_BUFFER *buffer); #endif int ft_read_internal(uchar *buf); int rnd_next_internal(uchar *buf); - void check_pre_call( - bool use_parallel - ); + void check_pre_call(bool use_parallel); #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS void check_insert_dup_update_pushdown(); #endif #ifdef HA_CAN_BULK_ACCESS SPIDER_BULK_ACCESS_LINK *create_bulk_access_link(); - void delete_bulk_access_link( - SPIDER_BULK_ACCESS_LINK *bulk_access_link - ); - int sync_from_clone_source( - ha_spider *spider - ); -#endif - void sync_from_clone_source_base( - ha_spider *spider - ); + void delete_bulk_access_link(SPIDER_BULK_ACCESS_LINK *bulk_access_link); + int sync_from_clone_source(ha_spider *spider); +#endif + void sync_from_clone_source_base(ha_spider *spider); void set_first_link_idx(); void reset_first_link_idx(); - int reset_sql_sql( - ulong sql_type - ); + int reset_sql_sql(ulong sql_type); #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - int reset_hs_sql( - ulong sql_type - ); - int reset_hs_keys( - ulong sql_type - ); - int reset_hs_upds( - ulong sql_type - ); - int reset_hs_strs( - ulong sql_type - ); - int reset_hs_strs_pos( - ulong sql_type - ); - int push_back_hs_upds( - SPIDER_HS_STRING_REF &info - ); -#endif - int append_tmp_table_and_sql_for_bka( - const key_range *start_key - ); + int reset_hs_sql(ulong sql_type); + int reset_hs_keys(ulong sql_type); + int reset_hs_upds(ulong sql_type); + int reset_hs_strs(ulong sql_type); + int reset_hs_strs_pos(ulong sql_type); + int push_back_hs_upds(SPIDER_HS_STRING_REF &info); +#endif + int append_tmp_table_and_sql_for_bka(const key_range *start_key); int reuse_tmp_table_and_sql_for_bka(); - int append_union_table_and_sql_for_bka( - const key_range *start_key - ); + int append_union_table_and_sql_for_bka(const key_range *start_key); int reuse_union_table_and_sql_for_bka(); int append_insert_sql_part(); int append_update_sql_part(); @@ -1018,203 +648,82 @@ public: #endif #endif #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS - int append_dup_update_pushdown_sql_part( - const char *alias, - uint alias_length - ); - int append_update_columns_sql_part( - const char *alias, - uint alias_length - ); + int append_dup_update_pushdown_sql_part(const char *alias, uint alias_length); + int append_update_columns_sql_part(const char *alias, uint alias_length); int check_update_columns_sql_part(); #endif int append_delete_sql_part(); - int append_select_sql_part( - ulong sql_type - ); - int append_table_select_sql_part( - ulong sql_type - ); - int append_key_select_sql_part( - ulong sql_type, - uint idx - ); - int append_minimum_select_sql_part( - ulong sql_type - ); - int append_from_sql_part( - ulong sql_type - ); - int append_hint_after_table_sql_part( - ulong sql_type - ); - void set_where_pos_sql( - ulong sql_type - ); - void set_where_to_pos_sql( - ulong sql_type - ); - int check_item_type_sql( - Item *item - ); - int append_values_connector_sql_part( - ulong sql_type - ); - int append_values_terminator_sql_part( - ulong sql_type - ); - int append_union_table_connector_sql_part( - ulong sql_type - ); - int append_union_table_terminator_sql_part( - ulong sql_type - ); - int append_key_column_values_sql_part( - const key_range *start_key, - ulong sql_type - ); - int append_key_column_values_with_name_sql_part( - const key_range *start_key, - ulong sql_type - ); - int append_key_where_sql_part( - const key_range *start_key, - const key_range *end_key, - ulong sql_type - ); + int append_select_sql_part(ulong sql_type); + int append_table_select_sql_part(ulong sql_type); + int append_key_select_sql_part(ulong sql_type, uint idx); + int append_minimum_select_sql_part(ulong sql_type); + int append_from_sql_part(ulong sql_type); + int append_hint_after_table_sql_part(ulong sql_type); + void set_where_pos_sql(ulong sql_type); + void set_where_to_pos_sql(ulong sql_type); + int check_item_type_sql(Item *item); + int append_values_connector_sql_part(ulong sql_type); + int append_values_terminator_sql_part(ulong sql_type); + int append_union_table_connector_sql_part(ulong sql_type); + int append_union_table_terminator_sql_part(ulong sql_type); + int append_key_column_values_sql_part(const key_range *start_key, + ulong sql_type); + int append_key_column_values_with_name_sql_part(const key_range *start_key, + ulong sql_type); + int append_key_where_sql_part(const key_range *start_key, + const key_range *end_key, ulong sql_type); #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - int append_key_where_hs_part( - const key_range *start_key, - const key_range *end_key, - ulong sql_type - ); -#endif - int append_match_where_sql_part( - ulong sql_type - ); - int append_condition_sql_part( - const char *alias, - uint alias_length, - ulong sql_type, - bool test_flg - ); + int append_key_where_hs_part(const key_range *start_key, + const key_range *end_key, ulong sql_type); +#endif + int append_match_where_sql_part(ulong sql_type); + int append_condition_sql_part(const char *alias, uint alias_length, + ulong sql_type, bool test_flg); #ifdef HANDLER_HAS_DIRECT_AGGREGATE - int append_sum_select_sql_part( - ulong sql_type, - const char *alias, - uint alias_length - ); -#endif - int append_match_select_sql_part( - ulong sql_type, - const char *alias, - uint alias_length - ); - void set_order_pos_sql( - ulong sql_type - ); - void set_order_to_pos_sql( - ulong sql_type - ); + int append_sum_select_sql_part(ulong sql_type, const char *alias, + uint alias_length); +#endif + int append_match_select_sql_part(ulong sql_type, const char *alias, + uint alias_length); + void set_order_pos_sql(ulong sql_type); + void set_order_to_pos_sql(ulong sql_type); #ifdef HANDLER_HAS_DIRECT_AGGREGATE - int append_group_by_sql_part( - const char *alias, - uint alias_length, - ulong sql_type - ); -#endif - int append_key_order_for_merge_with_alias_sql_part( - const char *alias, - uint alias_length, - ulong sql_type - ); + int append_group_by_sql_part(const char *alias, uint alias_length, + ulong sql_type); +#endif + int append_key_order_for_merge_with_alias_sql_part(const char *alias, + uint alias_length, + ulong sql_type); int append_key_order_for_direct_order_limit_with_alias_sql_part( - const char *alias, - uint alias_length, - ulong sql_type - ); - int append_key_order_with_alias_sql_part( - const char *alias, - uint alias_length, - ulong sql_type - ); - int append_limit_sql_part( - longlong offset, - longlong limit, - ulong sql_type - ); + const char *alias, uint alias_length, ulong sql_type); + int append_key_order_with_alias_sql_part(const char *alias, uint alias_length, + ulong sql_type); + int append_limit_sql_part(longlong offset, longlong limit, ulong sql_type); #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - int append_limit_hs_part( - longlong offset, - longlong limit, - ulong sql_type - ); -#endif - int reappend_limit_sql_part( - longlong offset, - longlong limit, - ulong sql_type - ); - int append_insert_terminator_sql_part( - ulong sql_type - ); - int append_insert_values_sql_part( - ulong sql_type - ); + int append_limit_hs_part(longlong offset, longlong limit, ulong sql_type); +#endif + int reappend_limit_sql_part(longlong offset, longlong limit, ulong sql_type); + int append_insert_terminator_sql_part(ulong sql_type); + int append_insert_values_sql_part(ulong sql_type); #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - int append_insert_values_hs_part( - ulong sql_type - ); -#endif - int append_into_sql_part( - ulong sql_type - ); - void set_insert_to_pos_sql( - ulong sql_type - ); - bool is_bulk_insert_exec_period( - bool bulk_end - ); - int append_select_lock_sql_part( - ulong sql_type - ); - int append_union_all_start_sql_part( - ulong sql_type - ); - int append_union_all_sql_part( - ulong sql_type - ); - int append_union_all_end_sql_part( - ulong sql_type - ); - int append_multi_range_cnt_sql_part( - ulong sql_type, - uint multi_range_cnt, - bool with_comma - ); - int append_multi_range_cnt_with_name_sql_part( - ulong sql_type, - uint multi_range_cnt - ); - int append_delete_all_rows_sql_part( - ulong sql_type - ); - int append_update_sql( - const TABLE *table, - my_ptrdiff_t ptr_diff, - bool bulk - ); - int append_delete_sql( - const TABLE *table, - my_ptrdiff_t ptr_diff, - bool bulk - ); - bool sql_is_filled_up( - ulong sql_type - ); - bool sql_is_empty( - ulong sql_type - ); + int append_insert_values_hs_part(ulong sql_type); +#endif + int append_into_sql_part(ulong sql_type); + void set_insert_to_pos_sql(ulong sql_type); + bool is_bulk_insert_exec_period(bool bulk_end); + int append_select_lock_sql_part(ulong sql_type); + int append_union_all_start_sql_part(ulong sql_type); + int append_union_all_sql_part(ulong sql_type); + int append_union_all_end_sql_part(ulong sql_type); + int append_multi_range_cnt_sql_part(ulong sql_type, uint multi_range_cnt, + bool with_comma); + int append_multi_range_cnt_with_name_sql_part(ulong sql_type, + uint multi_range_cnt); + int append_delete_all_rows_sql_part(ulong sql_type); + int append_update_sql(const TABLE *table, my_ptrdiff_t ptr_diff, bool bulk); + int append_delete_sql(const TABLE *table, my_ptrdiff_t ptr_diff, bool bulk); + bool sql_is_filled_up(ulong sql_type); + bool sql_is_empty(ulong sql_type); bool support_multi_split_read_sql(); bool support_bulk_update_sql(); int bulk_tmp_table_insert(); @@ -1225,15 +734,9 @@ public: int mk_bulk_tmp_table_and_bulk_start(); void rm_bulk_tmp_table(); bool bulk_tmp_table_created(); - int print_item_type( - Item *item, - spider_string *str, - const char *alias, - uint alias_length - ); - bool support_use_handler_sql( - int use_handler - ); + int print_item_type(Item *item, spider_string *str, const char *alias, + uint alias_length); + bool support_use_handler_sql(int use_handler); #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) bool support_bulk_access_hs() const; #endif @@ -1243,12 +746,8 @@ public: int lock_tables(); int dml_init(); #ifdef HA_CAN_BULK_ACCESS - int bulk_access_begin( - void *info - ); - int bulk_access_current( - void *info - ); + int bulk_access_begin(void *info); + int bulk_access_current(void *info); void bulk_access_end(); #endif }; diff --git a/storage/spider/spd_conn.h b/storage/spider/spd_conn.h index 92da278eecc..ac043fa9a72 100644 --- a/storage/spider/spd_conn.h +++ b/storage/spider/spd_conn.h @@ -12,411 +12,206 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA +*/ -#define SPIDER_LOCK_MODE_NO_LOCK 0 -#define SPIDER_LOCK_MODE_SHARED 1 -#define SPIDER_LOCK_MODE_EXCLUSIVE 2 +#define SPIDER_LOCK_MODE_NO_LOCK 0 +#define SPIDER_LOCK_MODE_SHARED 1 +#define SPIDER_LOCK_MODE_EXCLUSIVE 2 -#define SPIDER_SIMPLE_NO_ACTION 0 -#define SPIDER_SIMPLE_CONNECT 1 -#define SPIDER_SIMPLE_DISCONNECT 2 -#define SPIDER_SIMPLE_RECORDS 3 +#define SPIDER_SIMPLE_NO_ACTION 0 +#define SPIDER_SIMPLE_CONNECT 1 +#define SPIDER_SIMPLE_DISCONNECT 2 +#define SPIDER_SIMPLE_RECORDS 3 #ifdef HA_HAS_CHECKSUM_EXTENDED -#define SPIDER_SIMPLE_CHECKSUM_TABLE 4 +#define SPIDER_SIMPLE_CHECKSUM_TABLE 4 #endif -#define SPIDER_LOP_CHK_QUEUED (1 << 0) -#define SPIDER_LOP_CHK_MERAGED (1 << 1) -#define SPIDER_LOP_CHK_IGNORED (1 << 2) +#define SPIDER_LOP_CHK_QUEUED (1 << 0) +#define SPIDER_LOP_CHK_MERAGED (1 << 1) +#define SPIDER_LOP_CHK_IGNORED (1 << 2) -typedef struct st_spider_conn_loop_check -{ - uint flag; +typedef struct st_spider_conn_loop_check { + uint flag; #ifdef SPIDER_HAS_HASH_VALUE_TYPE my_hash_value_type hash_value_to; my_hash_value_type hash_value_full; #endif - LEX_CSTRING from_name; - LEX_CSTRING cur_name; - LEX_CSTRING to_name; - LEX_CSTRING full_name; - LEX_CSTRING from_value; - LEX_CSTRING merged_value; + LEX_CSTRING from_name; + LEX_CSTRING cur_name; + LEX_CSTRING to_name; + LEX_CSTRING full_name; + LEX_CSTRING from_value; + LEX_CSTRING merged_value; st_spider_conn_loop_check *next; } SPIDER_CONN_LOOP_CHECK; -uchar *spider_conn_get_key( - SPIDER_CONN *conn, - size_t *length, - my_bool not_used __attribute__ ((unused)) -); - -uchar *spider_ipport_conn_get_key( - SPIDER_IP_PORT_CONN *ip_port, - size_t *length, - my_bool not_used __attribute__ ((unused)) -); - -int spider_conn_init( - SPIDER_CONN *conn -); - -void spider_conn_done( - SPIDER_CONN *conn -); - -int spider_reset_conn_setted_parameter( - SPIDER_CONN *conn, - THD *thd -); - -int spider_free_conn_alloc( - SPIDER_CONN *conn -); - -void spider_free_conn_from_trx( - SPIDER_TRX *trx, - SPIDER_CONN *conn, - bool another, - bool trx_free, - int *roop_count -); - -SPIDER_CONN *spider_create_conn( - SPIDER_SHARE *share, - ha_spider *spider, - int link_id, - int base_link_id, - uint conn_kind, - int *error_num -); - -SPIDER_CONN *spider_get_conn( - SPIDER_SHARE *share, - int link_idx, - char *conn_key, - SPIDER_TRX *trx, - ha_spider *spider, - bool another, - bool thd_chg, - uint conn_kind, - int *error_num -); - -int spider_free_conn( - SPIDER_CONN *conn -); - -int spider_check_and_get_casual_read_conn( - THD *thd, - ha_spider *spider, - int link_idx -); - -int spider_check_and_init_casual_read( - THD *thd, - ha_spider *spider, - int link_idx -); - -void spider_conn_queue_connect( - SPIDER_SHARE *share, - SPIDER_CONN *conn, - int link_idx -); - -void spider_conn_queue_connect_rewrite( - SPIDER_SHARE *share, - SPIDER_CONN *conn, - int link_idx -); - -void spider_conn_queue_ping( - ha_spider *spider, - SPIDER_CONN *conn, - int link_idx -); - -void spider_conn_queue_ping_rewrite( - ha_spider *spider, - SPIDER_CONN *conn, - int link_idx -); - -void spider_conn_queue_trx_isolation( - SPIDER_CONN *conn, - int trx_isolation -); - -void spider_conn_queue_semi_trx_isolation( - SPIDER_CONN *conn, - int trx_isolation -); - -void spider_conn_queue_autocommit( - SPIDER_CONN *conn, - bool autocommit -); - -void spider_conn_queue_sql_log_off( - SPIDER_CONN *conn, - bool sql_log_off -); - -void spider_conn_queue_wait_timeout( - SPIDER_CONN *conn, - int wait_timeout -); - -void spider_conn_queue_sql_mode( - SPIDER_CONN *conn, - sql_mode_t sql_mode -); - -void spider_conn_queue_time_zone( - SPIDER_CONN *conn, - Time_zone *time_zone -); - -void spider_conn_queue_UTC_time_zone( - SPIDER_CONN *conn -); - -int spider_conn_queue_and_merge_loop_check( - SPIDER_CONN *conn, - SPIDER_CONN_LOOP_CHECK *lcptr -); - -int spider_conn_reset_queue_loop_check( - SPIDER_CONN *conn -); - -int spider_conn_queue_loop_check( - SPIDER_CONN *conn, - ha_spider *spider, - int link_idx -); - -void spider_conn_queue_start_transaction( - SPIDER_CONN *conn -); - -void spider_conn_queue_xa_start( - SPIDER_CONN *conn, - XID *xid -); - -void spider_conn_clear_queue( - SPIDER_CONN *conn -); - -void spider_conn_clear_queue_at_commit( - SPIDER_CONN *conn -); - -void spider_conn_set_timeout( - SPIDER_CONN *conn, - uint net_read_timeout, - uint net_write_timeout -); - -void spider_conn_set_timeout_from_share( - SPIDER_CONN *conn, - int link_idx, - THD *thd, - SPIDER_SHARE *share -); - -void spider_conn_set_timeout_from_direct_sql( - SPIDER_CONN *conn, - THD *thd, - SPIDER_DIRECT_SQL *direct_sql -); - -void spider_tree_insert( - SPIDER_CONN *top, - SPIDER_CONN *conn -); - -SPIDER_CONN *spider_tree_first( - SPIDER_CONN *top -); - -SPIDER_CONN *spider_tree_last( - SPIDER_CONN *top -); - -SPIDER_CONN *spider_tree_next( - SPIDER_CONN *current -); - -SPIDER_CONN *spider_tree_delete( - SPIDER_CONN *conn, - SPIDER_CONN *top -); +uchar *spider_conn_get_key(SPIDER_CONN *conn, size_t *length, + my_bool not_used __attribute__((unused))); + +uchar *spider_ipport_conn_get_key(SPIDER_IP_PORT_CONN *ip_port, size_t *length, + my_bool not_used __attribute__((unused))); + +int spider_conn_init(SPIDER_CONN *conn); + +void spider_conn_done(SPIDER_CONN *conn); + +int spider_reset_conn_setted_parameter(SPIDER_CONN *conn, THD *thd); + +int spider_free_conn_alloc(SPIDER_CONN *conn); + +void spider_free_conn_from_trx(SPIDER_TRX *trx, SPIDER_CONN *conn, bool another, + bool trx_free, int *roop_count); + +SPIDER_CONN *spider_create_conn(SPIDER_SHARE *share, ha_spider *spider, + int link_id, int base_link_id, uint conn_kind, + int *error_num); + +SPIDER_CONN *spider_get_conn(SPIDER_SHARE *share, int link_idx, char *conn_key, + SPIDER_TRX *trx, ha_spider *spider, bool another, + bool thd_chg, uint conn_kind, int *error_num); + +int spider_free_conn(SPIDER_CONN *conn); + +int spider_check_and_get_casual_read_conn(THD *thd, ha_spider *spider, + int link_idx); + +int spider_check_and_init_casual_read(THD *thd, ha_spider *spider, + int link_idx); + +void spider_conn_queue_connect(SPIDER_SHARE *share, SPIDER_CONN *conn, + int link_idx); + +void spider_conn_queue_connect_rewrite(SPIDER_SHARE *share, SPIDER_CONN *conn, + int link_idx); + +void spider_conn_queue_ping(ha_spider *spider, SPIDER_CONN *conn, int link_idx); + +void spider_conn_queue_ping_rewrite(ha_spider *spider, SPIDER_CONN *conn, + int link_idx); + +void spider_conn_queue_trx_isolation(SPIDER_CONN *conn, int trx_isolation); + +void spider_conn_queue_semi_trx_isolation(SPIDER_CONN *conn, int trx_isolation); + +void spider_conn_queue_autocommit(SPIDER_CONN *conn, bool autocommit); + +void spider_conn_queue_sql_log_off(SPIDER_CONN *conn, bool sql_log_off); + +void spider_conn_queue_wait_timeout(SPIDER_CONN *conn, int wait_timeout); + +void spider_conn_queue_sql_mode(SPIDER_CONN *conn, sql_mode_t sql_mode); + +void spider_conn_queue_time_zone(SPIDER_CONN *conn, Time_zone *time_zone); + +void spider_conn_queue_UTC_time_zone(SPIDER_CONN *conn); + +int spider_conn_queue_and_merge_loop_check(SPIDER_CONN *conn, + SPIDER_CONN_LOOP_CHECK *lcptr); + +int spider_conn_reset_queue_loop_check(SPIDER_CONN *conn); + +int spider_conn_queue_loop_check(SPIDER_CONN *conn, ha_spider *spider, + int link_idx); + +void spider_conn_queue_start_transaction(SPIDER_CONN *conn); + +void spider_conn_queue_xa_start(SPIDER_CONN *conn, XID *xid); + +void spider_conn_clear_queue(SPIDER_CONN *conn); + +void spider_conn_clear_queue_at_commit(SPIDER_CONN *conn); + +void spider_conn_set_timeout(SPIDER_CONN *conn, uint net_read_timeout, + uint net_write_timeout); + +void spider_conn_set_timeout_from_share(SPIDER_CONN *conn, int link_idx, + THD *thd, SPIDER_SHARE *share); + +void spider_conn_set_timeout_from_direct_sql(SPIDER_CONN *conn, THD *thd, + SPIDER_DIRECT_SQL *direct_sql); + +void spider_tree_insert(SPIDER_CONN *top, SPIDER_CONN *conn); + +SPIDER_CONN *spider_tree_first(SPIDER_CONN *top); + +SPIDER_CONN *spider_tree_last(SPIDER_CONN *top); + +SPIDER_CONN *spider_tree_next(SPIDER_CONN *current); + +SPIDER_CONN *spider_tree_delete(SPIDER_CONN *conn, SPIDER_CONN *top); #ifndef WITHOUT_SPIDER_BG_SEARCH -int spider_set_conn_bg_param( - ha_spider *spider -); - -int spider_create_conn_thread( - SPIDER_CONN *conn -); - -void spider_free_conn_thread( - SPIDER_CONN *conn -); - -void spider_bg_conn_wait( - SPIDER_CONN *conn -); - -void spider_bg_all_conn_wait( - ha_spider *spider -); - -int spider_bg_all_conn_pre_next( - ha_spider *spider, - int link_idx -); - -void spider_bg_conn_break( - SPIDER_CONN *conn, - ha_spider *spider -); - -void spider_bg_all_conn_break( - ha_spider *spider -); - -bool spider_bg_conn_get_job( - SPIDER_CONN *conn -); - -int spider_bg_conn_search( - ha_spider *spider, - int link_idx, - int first_link_idx, - bool first, - bool pre_next, - bool discard_result -); - -void spider_bg_conn_simple_action( - SPIDER_CONN *conn, - uint simple_action, - bool caller_wait, - void *target, - uint link_idx, - int *error_num -); - -void *spider_bg_conn_action( - void *arg -); - -int spider_create_sts_thread( - SPIDER_SHARE *share -); - -void spider_free_sts_thread( - SPIDER_SHARE *share -); - -void *spider_bg_sts_action( - void *arg -); - -int spider_create_crd_thread( - SPIDER_SHARE *share -); - -void spider_free_crd_thread( - SPIDER_SHARE *share -); - -void *spider_bg_crd_action( - void *arg -); - -int spider_create_mon_threads( - SPIDER_TRX *trx, - SPIDER_SHARE *share -); - -void spider_free_mon_threads( - SPIDER_SHARE *share -); - -void *spider_bg_mon_action( - void *arg -); +int spider_set_conn_bg_param(ha_spider *spider); + +int spider_create_conn_thread(SPIDER_CONN *conn); + +void spider_free_conn_thread(SPIDER_CONN *conn); + +void spider_bg_conn_wait(SPIDER_CONN *conn); + +void spider_bg_all_conn_wait(ha_spider *spider); + +int spider_bg_all_conn_pre_next(ha_spider *spider, int link_idx); + +void spider_bg_conn_break(SPIDER_CONN *conn, ha_spider *spider); + +void spider_bg_all_conn_break(ha_spider *spider); + +bool spider_bg_conn_get_job(SPIDER_CONN *conn); + +int spider_bg_conn_search(ha_spider *spider, int link_idx, int first_link_idx, + bool first, bool pre_next, bool discard_result); + +void spider_bg_conn_simple_action(SPIDER_CONN *conn, uint simple_action, + bool caller_wait, void *target, uint link_idx, + int *error_num); + +void *spider_bg_conn_action(void *arg); + +int spider_create_sts_thread(SPIDER_SHARE *share); + +void spider_free_sts_thread(SPIDER_SHARE *share); + +void *spider_bg_sts_action(void *arg); + +int spider_create_crd_thread(SPIDER_SHARE *share); + +void spider_free_crd_thread(SPIDER_SHARE *share); + +void *spider_bg_crd_action(void *arg); + +int spider_create_mon_threads(SPIDER_TRX *trx, SPIDER_SHARE *share); + +void spider_free_mon_threads(SPIDER_SHARE *share); + +void *spider_bg_mon_action(void *arg); #endif -int spider_conn_first_link_idx( - THD *thd, - long *link_statuses, - long *access_balances, - uint *conn_link_idx, - int link_count, - int link_status -); - -int spider_conn_next_link_idx( - THD *thd, - long *link_statuses, - long *access_balances, - uint *conn_link_idx, - int link_idx, - int link_count, - int link_status -); - -int spider_conn_link_idx_next( - long *link_statuses, - uint *conn_link_idx, - int link_idx, - int link_count, - int link_status -); - -int spider_conn_get_link_status( - long *link_statuses, - uint *conn_link_idx, - int link_idx -); - -int spider_conn_lock_mode( - ha_spider *spider -); - -bool spider_conn_check_recovery_link( - SPIDER_SHARE *share -); - -bool spider_conn_use_handler( - ha_spider *spider, - int lock_mode, - int link_idx -); - -bool spider_conn_need_open_handler( - ha_spider *spider, - uint idx, - int link_idx -); +int spider_conn_first_link_idx(THD *thd, long *link_statuses, + long *access_balances, uint *conn_link_idx, + int link_count, int link_status); + +int spider_conn_next_link_idx(THD *thd, long *link_statuses, + long *access_balances, uint *conn_link_idx, + int link_idx, int link_count, int link_status); + +int spider_conn_link_idx_next(long *link_statuses, uint *conn_link_idx, + int link_idx, int link_count, int link_status); + +int spider_conn_get_link_status(long *link_statuses, uint *conn_link_idx, + int link_idx); + +int spider_conn_lock_mode(ha_spider *spider); + +bool spider_conn_check_recovery_link(SPIDER_SHARE *share); + +bool spider_conn_use_handler(ha_spider *spider, int lock_mode, int link_idx); + +bool spider_conn_need_open_handler(ha_spider *spider, uint idx, int link_idx); SPIDER_IP_PORT_CONN *spider_create_ipport_conn(SPIDER_CONN *conn); -SPIDER_CONN* spider_get_conn_from_idle_connection -( - SPIDER_SHARE *share, - int link_idx, - char *conn_key, - ha_spider *spider, - uint conn_kind, - int base_link_idx, - int *error_num - ); +SPIDER_CONN *spider_get_conn_from_idle_connection( + SPIDER_SHARE *share, int link_idx, char *conn_key, ha_spider *spider, + uint conn_kind, int base_link_idx, int *error_num); void spider_free_ipport_conn(void *info); diff --git a/storage/spider/spd_copy_tables.h b/storage/spider/spd_copy_tables.h index 8c06e115dea..e3304704f05 100644 --- a/storage/spider/spd_copy_tables.h +++ b/storage/spider/spd_copy_tables.h @@ -11,45 +11,29 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */ - -int spider_udf_set_copy_tables_param_default( - SPIDER_COPY_TABLES *copy_tables -); - -int spider_udf_parse_copy_tables_param( - SPIDER_COPY_TABLES *copy_tables, - char *param, - int param_length -); - -int spider_udf_get_copy_tgt_tables( - THD *thd, - SPIDER_COPY_TABLES *copy_tables, - MEM_ROOT *mem_root, - bool need_lock -); - -int spider_udf_get_copy_tgt_conns( - SPIDER_COPY_TABLES *copy_tables -); - -void spider_udf_free_copy_tables_alloc( - SPIDER_COPY_TABLES *copy_tables -); - -int spider_udf_copy_tables_create_table_list( - SPIDER_COPY_TABLES *copy_tables, - char *spider_table_name, - uint spider_table_name_length, - char *src_link_idx_list, - uint src_link_idx_list_length, - char *dst_link_idx_list, - uint dst_link_idx_list_length -); + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA +*/ + +int spider_udf_set_copy_tables_param_default(SPIDER_COPY_TABLES *copy_tables); + +int spider_udf_parse_copy_tables_param(SPIDER_COPY_TABLES *copy_tables, + char *param, int param_length); + +int spider_udf_get_copy_tgt_tables(THD *thd, SPIDER_COPY_TABLES *copy_tables, + MEM_ROOT *mem_root, bool need_lock); + +int spider_udf_get_copy_tgt_conns(SPIDER_COPY_TABLES *copy_tables); + +void spider_udf_free_copy_tables_alloc(SPIDER_COPY_TABLES *copy_tables); + +int spider_udf_copy_tables_create_table_list(SPIDER_COPY_TABLES *copy_tables, + char *spider_table_name, + uint spider_table_name_length, + char *src_link_idx_list, + uint src_link_idx_list_length, + char *dst_link_idx_list, + uint dst_link_idx_list_length); #ifndef WITHOUT_SPIDER_BG_SEARCH -int spider_udf_bg_copy_exec_sql( - SPIDER_COPY_TABLE_CONN *table_conn -); +int spider_udf_bg_copy_exec_sql(SPIDER_COPY_TABLE_CONN *table_conn); #endif diff --git a/storage/spider/spd_db_conn.h b/storage/spider/spd_db_conn.h index c66f39d9f70..447c10b279d 100644 --- a/storage/spider/spd_db_conn.h +++ b/storage/spider/spd_db_conn.h @@ -12,7 +12,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA +*/ #define SPIDER_DB_WRAPPER_STR "mariadb" #define SPIDER_DB_WRAPPER_LEN (sizeof(SPIDER_DB_WRAPPER_STR) - 1) @@ -25,16 +26,16 @@ #define SPIDER_DB_SEQUENCE_NAME_STR "" #define SPIDER_DB_SEQUENCE_NAME_LEN (sizeof(SPIDER_DB_SEQUENCE_NAME_STR) - 1) -#define SPIDER_DB_TABLE_LOCK_READ_LOCAL 0 -#define SPIDER_DB_TABLE_LOCK_READ 1 +#define SPIDER_DB_TABLE_LOCK_READ_LOCAL 0 +#define SPIDER_DB_TABLE_LOCK_READ 1 #define SPIDER_DB_TABLE_LOCK_LOW_PRIORITY_WRITE 2 -#define SPIDER_DB_TABLE_LOCK_WRITE 3 +#define SPIDER_DB_TABLE_LOCK_WRITE 3 -#define SPIDER_DB_INSERT_REPLACE (1 << 0) -#define SPIDER_DB_INSERT_IGNORE (1 << 1) -#define SPIDER_DB_INSERT_LOW_PRIORITY (1 << 2) +#define SPIDER_DB_INSERT_REPLACE (1 << 0) +#define SPIDER_DB_INSERT_IGNORE (1 << 1) +#define SPIDER_DB_INSERT_LOW_PRIORITY (1 << 2) #define SPIDER_DB_INSERT_HIGH_PRIORITY (1 << 3) -#define SPIDER_DB_INSERT_DELAYED (1 << 4) +#define SPIDER_DB_INSERT_DELAYED (1 << 4) #define SPIDER_SQL_OPEN_PAREN_STR "(" #define SPIDER_SQL_OPEN_PAREN_LEN (sizeof(SPIDER_SQL_OPEN_PAREN_STR) - 1) @@ -62,7 +63,8 @@ #define SPIDER_SQL_ID_STR "id" #define SPIDER_SQL_ID_LEN (sizeof(SPIDER_SQL_ID_STR) - 1) #define SPIDER_SQL_TMP_BKA_ENGINE_STR "memory" -#define SPIDER_SQL_TMP_BKA_ENGINE_LEN (sizeof(SPIDER_SQL_TMP_BKA_ENGINE_STR) - 1) +#define SPIDER_SQL_TMP_BKA_ENGINE_LEN \ + (sizeof(SPIDER_SQL_TMP_BKA_ENGINE_STR) - 1) #define SPIDER_SQL_INSERT_STR "insert " #define SPIDER_SQL_INSERT_LEN (sizeof(SPIDER_SQL_INSERT_STR) - 1) @@ -106,13 +108,17 @@ #define SPIDER_SQL_FOR_UPDATE_LEN (sizeof(SPIDER_SQL_FOR_UPDATE_STR) - 1) #define SPIDER_SQL_SQL_ALTER_TABLE_STR "alter table " -#define SPIDER_SQL_SQL_ALTER_TABLE_LEN (sizeof(SPIDER_SQL_SQL_ALTER_TABLE_STR) - 1) +#define SPIDER_SQL_SQL_ALTER_TABLE_LEN \ + (sizeof(SPIDER_SQL_SQL_ALTER_TABLE_STR) - 1) #define SPIDER_SQL_SQL_DISABLE_KEYS_STR " disable keys" -#define SPIDER_SQL_SQL_DISABLE_KEYS_LEN (sizeof(SPIDER_SQL_SQL_DISABLE_KEYS_STR) - 1) +#define SPIDER_SQL_SQL_DISABLE_KEYS_LEN \ + (sizeof(SPIDER_SQL_SQL_DISABLE_KEYS_STR) - 1) #define SPIDER_SQL_SQL_ENABLE_KEYS_STR " enable keys" -#define SPIDER_SQL_SQL_ENABLE_KEYS_LEN (sizeof(SPIDER_SQL_SQL_ENABLE_KEYS_STR) - 1) +#define SPIDER_SQL_SQL_ENABLE_KEYS_LEN \ + (sizeof(SPIDER_SQL_SQL_ENABLE_KEYS_STR) - 1) #define SPIDER_SQL_SQL_CHECK_TABLE_STR "check table " -#define SPIDER_SQL_SQL_CHECK_TABLE_LEN (sizeof(SPIDER_SQL_SQL_CHECK_TABLE_STR) - 1) +#define SPIDER_SQL_SQL_CHECK_TABLE_LEN \ + (sizeof(SPIDER_SQL_SQL_CHECK_TABLE_STR) - 1) #define SPIDER_SQL_SQL_ANALYZE_STR "analyze " #define SPIDER_SQL_SQL_ANALYZE_LEN (sizeof(SPIDER_SQL_SQL_ANALYZE_STR) - 1) #define SPIDER_SQL_SQL_OPTIMIZE_STR "optimize " @@ -134,7 +140,8 @@ #define SPIDER_SQL_SQL_USE_FRM_STR " use_frm" #define SPIDER_SQL_SQL_USE_FRM_LEN (sizeof(SPIDER_SQL_SQL_USE_FRM_STR) - 1) #define SPIDER_SQL_TRUNCATE_TABLE_STR "truncate table " -#define SPIDER_SQL_TRUNCATE_TABLE_LEN (sizeof(SPIDER_SQL_TRUNCATE_TABLE_STR) - 1) +#define SPIDER_SQL_TRUNCATE_TABLE_LEN \ + (sizeof(SPIDER_SQL_TRUNCATE_TABLE_STR) - 1) #define SPIDER_SQL_EXPLAIN_SELECT_STR "explain select 1 " #define SPIDER_SQL_EXPLAIN_SELECT_LEN sizeof(SPIDER_SQL_EXPLAIN_SELECT_STR) - 1 #define SPIDER_SQL_FLUSH_LOGS_STR "flush logs" @@ -144,7 +151,8 @@ #define SPIDER_SQL_WITH_READ_LOCK_STR " with read lock" #define SPIDER_SQL_WITH_READ_LOCK_LEN sizeof(SPIDER_SQL_WITH_READ_LOCK_STR) - 1 #define SPIDER_SQL_DUPLICATE_KEY_UPDATE_STR " on duplicate key update " -#define SPIDER_SQL_DUPLICATE_KEY_UPDATE_LEN (sizeof(SPIDER_SQL_DUPLICATE_KEY_UPDATE_STR) - 1) +#define SPIDER_SQL_DUPLICATE_KEY_UPDATE_LEN \ + (sizeof(SPIDER_SQL_DUPLICATE_KEY_UPDATE_STR) - 1) #define SPIDER_SQL_HANDLER_STR "handler " #define SPIDER_SQL_HANDLER_LEN (sizeof(SPIDER_SQL_HANDLER_STR) - 1) #define SPIDER_SQL_OPEN_STR " open " @@ -164,9 +172,11 @@ #define SPIDER_SQL_AS_STR "as " #define SPIDER_SQL_AS_LEN (sizeof(SPIDER_SQL_AS_STR) - 1) #define SPIDER_SQL_WITH_QUERY_EXPANSION_STR " with query expansion" -#define SPIDER_SQL_WITH_QUERY_EXPANSION_LEN (sizeof(SPIDER_SQL_WITH_QUERY_EXPANSION_STR) - 1) +#define SPIDER_SQL_WITH_QUERY_EXPANSION_LEN \ + (sizeof(SPIDER_SQL_WITH_QUERY_EXPANSION_STR) - 1) #define SPIDER_SQL_IN_BOOLEAN_MODE_STR " in boolean mode" -#define SPIDER_SQL_IN_BOOLEAN_MODE_LEN (sizeof(SPIDER_SQL_IN_BOOLEAN_MODE_STR) - 1) +#define SPIDER_SQL_IN_BOOLEAN_MODE_LEN \ + (sizeof(SPIDER_SQL_IN_BOOLEAN_MODE_STR) - 1) #define SPIDER_SQL_MATCH_STR "match(" #define SPIDER_SQL_MATCH_LEN (sizeof(SPIDER_SQL_MATCH_STR) - 1) #define SPIDER_SQL_AGAINST_STR ")against(" @@ -188,7 +198,8 @@ #define SPIDER_SQL_SQL_NO_CACHE_STR "sql_no_cache " #define SPIDER_SQL_SQL_NO_CACHE_LEN (sizeof(SPIDER_SQL_SQL_NO_CACHE_STR) - 1) #define SPIDER_SQL_SQL_QUICK_MODE_STR "quick " -#define SPIDER_SQL_SQL_QUICK_MODE_LEN (sizeof(SPIDER_SQL_SQL_QUICK_MODE_STR) - 1) +#define SPIDER_SQL_SQL_QUICK_MODE_LEN \ + (sizeof(SPIDER_SQL_SQL_QUICK_MODE_STR) - 1) #define SPIDER_SQL_SET_STR " set " #define SPIDER_SQL_SET_LEN (sizeof(SPIDER_SQL_SET_STR) - 1) #define SPIDER_SQL_UNDERSCORE_STR "_" @@ -227,8 +238,11 @@ #define SPIDER_SQL_SHOW_RECORDS_LEN sizeof(SPIDER_SQL_SHOW_RECORDS_STR) - 1 #define SPIDER_SQL_SHOW_INDEX_STR "show index from " #define SPIDER_SQL_SHOW_INDEX_LEN sizeof(SPIDER_SQL_SHOW_INDEX_STR) - 1 -#define SPIDER_SQL_SELECT_STATISTICS_STR "select `column_name`,`cardinality` from `information_schema`.`statistics` where `table_schema` = " -#define SPIDER_SQL_SELECT_STATISTICS_LEN sizeof(SPIDER_SQL_SELECT_STATISTICS_STR) - 1 +#define SPIDER_SQL_SELECT_STATISTICS_STR \ + "select `column_name`,`cardinality` from `information_schema`.`statistics` " \ + "where `table_schema` = " +#define SPIDER_SQL_SELECT_STATISTICS_LEN \ + sizeof(SPIDER_SQL_SELECT_STATISTICS_STR) - 1 #define SPIDER_SQL_MAX_STR "max" #define SPIDER_SQL_MAX_LEN sizeof(SPIDER_SQL_MAX_STR) - 1 @@ -267,956 +281,455 @@ #define SPIDER_SQL_INT_LEN 20 #define SPIDER_SQL_HANDLER_CID_LEN 6 #define SPIDER_SQL_HANDLER_CID_FORMAT "t%05u" -#define SPIDER_UDF_PING_TABLE_PING_ONLY (1 << 0) -#define SPIDER_UDF_PING_TABLE_USE_WHERE (1 << 1) +#define SPIDER_UDF_PING_TABLE_PING_ONLY (1 << 0) +#define SPIDER_UDF_PING_TABLE_USE_WHERE (1 << 1) #define SPIDER_UDF_PING_TABLE_USE_ALL_MONITORING_NODES (1 << 2) -int spider_db_connect( - const SPIDER_SHARE *share, - SPIDER_CONN *conn, - int link_idx -); - -int spider_db_ping_internal( - SPIDER_SHARE *share, - SPIDER_CONN *conn, - int all_link_idx, - int *need_mon -); - -int spider_db_ping( - ha_spider *spider, - SPIDER_CONN *conn, - int link_idx -); - -void spider_db_disconnect( - SPIDER_CONN *conn -); - -int spider_db_conn_queue_action( - SPIDER_CONN *conn -); - -int spider_db_before_query( - SPIDER_CONN *conn, - int *need_mon -); - -int spider_db_query( - SPIDER_CONN *conn, - const char *query, - uint length, - int quick_mode, - int *need_mon -); - -int spider_db_errorno( - SPIDER_CONN *conn -); - -int spider_db_set_trx_isolation( - SPIDER_CONN *conn, - int trx_isolation, - int *need_mon -); - -int spider_db_set_names_internal( - SPIDER_TRX *trx, - SPIDER_SHARE *share, - SPIDER_CONN *conn, - int all_link_idx, - int *need_mon -); - -int spider_db_set_names( - ha_spider *spider, - SPIDER_CONN *conn, - int link_idx -); - -int spider_db_query_with_set_names( - ulong sql_type, - ha_spider *spider, - SPIDER_CONN *conn, - int link_idx -); - -int spider_db_query_for_bulk_update( - ha_spider *spider, - SPIDER_CONN *conn, - int link_idx, - ha_rows *dup_key_found -); - -size_t spider_db_real_escape_string( - SPIDER_CONN *conn, - char *to, - const char *from, - size_t from_length -); - -int spider_db_consistent_snapshot( - SPIDER_CONN *conn, - int *need_mon -); - -int spider_db_start_transaction( - SPIDER_CONN *conn, - int *need_mon -); - -int spider_db_commit( - SPIDER_CONN *conn -); - -int spider_db_rollback( - SPIDER_CONN *conn -); - -int spider_db_append_hex_string( - spider_string *str, - uchar *hex_ptr, - int hex_ptr_length -); - -void spider_db_append_xid_str( - spider_string *tmp_str, - XID *xid -); - -int spider_db_xa_end( - SPIDER_CONN *conn, - XID *xid -); - -int spider_db_xa_prepare( - SPIDER_CONN *conn, - XID *xid -); - -int spider_db_xa_commit( - SPIDER_CONN *conn, - XID *xid -); - -int spider_db_xa_rollback( - SPIDER_CONN *conn, - XID *xid -); - -int spider_db_lock_tables( - ha_spider *spider, - int link_idx -); - -int spider_db_unlock_tables( - ha_spider *spider, - int link_idx -); - -int spider_db_append_name_with_quote_str( - spider_string *str, - const char *name, - uint dbton_id -); - -int spider_db_append_name_with_quote_str( - spider_string *str, - LEX_CSTRING &name, - uint dbton_id -); - -int spider_db_append_name_with_quote_str_internal( - spider_string *str, - const char *name, - int length, - uint dbton_id -); - -int spider_db_append_name_with_quote_str_internal( - spider_string *str, - const char *name, - int length, - CHARSET_INFO *cs, - uint dbton_id -); - -int spider_db_append_select( - ha_spider *spider -); - -int spider_db_append_select_columns( - ha_spider *spider -); - -int spider_db_append_null_value( - spider_string *str, - KEY_PART_INFO *key_part, - const uchar **ptr -); - -int spider_db_append_key_columns( - const key_range *start_key, - ha_spider *spider, - spider_string *str -); - -int spider_db_append_key_hint( - spider_string *str, - char *hint_str -); +int spider_db_connect(const SPIDER_SHARE *share, SPIDER_CONN *conn, + int link_idx); + +int spider_db_ping_internal(SPIDER_SHARE *share, SPIDER_CONN *conn, + int all_link_idx, int *need_mon); + +int spider_db_ping(ha_spider *spider, SPIDER_CONN *conn, int link_idx); + +void spider_db_disconnect(SPIDER_CONN *conn); + +int spider_db_conn_queue_action(SPIDER_CONN *conn); + +int spider_db_before_query(SPIDER_CONN *conn, int *need_mon); + +int spider_db_query(SPIDER_CONN *conn, const char *query, uint length, + int quick_mode, int *need_mon); + +int spider_db_errorno(SPIDER_CONN *conn); + +int spider_db_set_trx_isolation(SPIDER_CONN *conn, int trx_isolation, + int *need_mon); + +int spider_db_set_names_internal(SPIDER_TRX *trx, SPIDER_SHARE *share, + SPIDER_CONN *conn, int all_link_idx, + int *need_mon); + +int spider_db_set_names(ha_spider *spider, SPIDER_CONN *conn, int link_idx); + +int spider_db_query_with_set_names(ulong sql_type, ha_spider *spider, + SPIDER_CONN *conn, int link_idx); + +int spider_db_query_for_bulk_update(ha_spider *spider, SPIDER_CONN *conn, + int link_idx, ha_rows *dup_key_found); + +size_t spider_db_real_escape_string(SPIDER_CONN *conn, char *to, + const char *from, size_t from_length); + +int spider_db_consistent_snapshot(SPIDER_CONN *conn, int *need_mon); + +int spider_db_start_transaction(SPIDER_CONN *conn, int *need_mon); + +int spider_db_commit(SPIDER_CONN *conn); + +int spider_db_rollback(SPIDER_CONN *conn); + +int spider_db_append_hex_string(spider_string *str, uchar *hex_ptr, + int hex_ptr_length); + +void spider_db_append_xid_str(spider_string *tmp_str, XID *xid); + +int spider_db_xa_end(SPIDER_CONN *conn, XID *xid); + +int spider_db_xa_prepare(SPIDER_CONN *conn, XID *xid); + +int spider_db_xa_commit(SPIDER_CONN *conn, XID *xid); + +int spider_db_xa_rollback(SPIDER_CONN *conn, XID *xid); + +int spider_db_lock_tables(ha_spider *spider, int link_idx); + +int spider_db_unlock_tables(ha_spider *spider, int link_idx); + +int spider_db_append_name_with_quote_str(spider_string *str, const char *name, + uint dbton_id); + +int spider_db_append_name_with_quote_str(spider_string *str, LEX_CSTRING &name, + uint dbton_id); + +int spider_db_append_name_with_quote_str_internal(spider_string *str, + const char *name, int length, + uint dbton_id); + +int spider_db_append_name_with_quote_str_internal(spider_string *str, + const char *name, int length, + CHARSET_INFO *cs, + uint dbton_id); + +int spider_db_append_select(ha_spider *spider); + +int spider_db_append_select_columns(ha_spider *spider); + +int spider_db_append_null_value(spider_string *str, KEY_PART_INFO *key_part, + const uchar **ptr); + +int spider_db_append_key_columns(const key_range *start_key, ha_spider *spider, + spider_string *str); + +int spider_db_append_key_hint(spider_string *str, char *hint_str); int spider_db_append_key_where_internal( - spider_string *str, - spider_string *str_part, - spider_string *str_part2, - const key_range *start_key, - const key_range *end_key, - ha_spider *spider, - bool set_order, - ulong sql_type, - uint dbton_id -); - -int spider_db_append_key_where( - const key_range *start_key, - const key_range *end_key, - ha_spider *spider -); - -int spider_db_append_charset_name_before_string( - spider_string *str, - CHARSET_INFO *cs -); + spider_string *str, spider_string *str_part, spider_string *str_part2, + const key_range *start_key, const key_range *end_key, ha_spider *spider, + bool set_order, ulong sql_type, uint dbton_id); + +int spider_db_append_key_where(const key_range *start_key, + const key_range *end_key, ha_spider *spider); + +int spider_db_append_charset_name_before_string(spider_string *str, + CHARSET_INFO *cs); #ifdef HANDLER_HAS_DIRECT_AGGREGATE -int spider_db_refetch_for_item_sum_funcs( - ha_spider *spider -); - -int spider_db_fetch_for_item_sum_funcs( - SPIDER_DB_ROW *row, - ha_spider *spider -); - -int spider_db_fetch_for_item_sum_func( - SPIDER_DB_ROW *row, - Item_sum *item_sum, - ha_spider *spider -); +int spider_db_refetch_for_item_sum_funcs(ha_spider *spider); + +int spider_db_fetch_for_item_sum_funcs(SPIDER_DB_ROW *row, ha_spider *spider); + +int spider_db_fetch_for_item_sum_func(SPIDER_DB_ROW *row, Item_sum *item_sum, + ha_spider *spider); #endif -int spider_db_append_match_fetch( - ha_spider *spider, - st_spider_ft_info *ft_first, - st_spider_ft_info *ft_current, - SPIDER_DB_ROW *row -); - -int spider_db_append_match_where( - ha_spider *spider -); - -int spider_db_append_hint_after_table( - ha_spider *spider, - spider_string *str, - spider_string *hint -); - -int spider_db_append_show_records( - SPIDER_SHARE *share -); - -void spider_db_free_show_records( - SPIDER_SHARE *share -); - -int spider_db_append_show_index( - SPIDER_SHARE *share -); - -void spider_db_free_show_index( - SPIDER_SHARE *share -); - -void spider_db_append_handler_next( - ha_spider *spider -); - -void spider_db_get_row_from_tmp_tbl_rec( - SPIDER_RESULT *current, - SPIDER_DB_ROW **row -); - -int spider_db_get_row_from_tmp_tbl( - SPIDER_RESULT *current, - SPIDER_DB_ROW **row -); - -int spider_db_get_row_from_tmp_tbl_pos( - SPIDER_POSITION *pos, - SPIDER_DB_ROW **row -); - -int spider_db_fetch_row( - SPIDER_SHARE *share, - Field *field, - SPIDER_DB_ROW *row, - my_ptrdiff_t ptr_diff -); - -int spider_db_fetch_table( - ha_spider *spider, - uchar *buf, - TABLE *table, - SPIDER_RESULT_LIST *result_list -); - -int spider_db_fetch_key( - ha_spider *spider, - uchar *buf, - TABLE *table, - const KEY *key_info, - SPIDER_RESULT_LIST *result_list -); - -int spider_db_fetch_minimum_columns( - ha_spider *spider, - uchar *buf, - TABLE *table, - SPIDER_RESULT_LIST *result_list -); - -void spider_db_free_one_result_for_start_next( - ha_spider *spider -); - -void spider_db_free_one_result( - SPIDER_RESULT_LIST *result_list, - SPIDER_RESULT *result -); - -void spider_db_free_one_quick_result( - SPIDER_RESULT *result -); - -int spider_db_free_result( - ha_spider *spider, - bool final -); - -int spider_db_store_result( - ha_spider *spider, - int link_idx, - TABLE *table -); - -int spider_db_store_result_for_reuse_cursor( - ha_spider *spider, - int link_idx, - TABLE *table -); - -void spider_db_discard_result( - ha_spider *spider, - int link_idx, - SPIDER_CONN *conn -); - -void spider_db_discard_multiple_result( - ha_spider *spider, - int link_idx, - SPIDER_CONN *conn -); +int spider_db_append_match_fetch(ha_spider *spider, st_spider_ft_info *ft_first, + st_spider_ft_info *ft_current, + SPIDER_DB_ROW *row); + +int spider_db_append_match_where(ha_spider *spider); + +int spider_db_append_hint_after_table(ha_spider *spider, spider_string *str, + spider_string *hint); + +int spider_db_append_show_records(SPIDER_SHARE *share); + +void spider_db_free_show_records(SPIDER_SHARE *share); + +int spider_db_append_show_index(SPIDER_SHARE *share); + +void spider_db_free_show_index(SPIDER_SHARE *share); + +void spider_db_append_handler_next(ha_spider *spider); + +void spider_db_get_row_from_tmp_tbl_rec(SPIDER_RESULT *current, + SPIDER_DB_ROW **row); + +int spider_db_get_row_from_tmp_tbl(SPIDER_RESULT *current, SPIDER_DB_ROW **row); + +int spider_db_get_row_from_tmp_tbl_pos(SPIDER_POSITION *pos, + SPIDER_DB_ROW **row); + +int spider_db_fetch_row(SPIDER_SHARE *share, Field *field, SPIDER_DB_ROW *row, + my_ptrdiff_t ptr_diff); + +int spider_db_fetch_table(ha_spider *spider, uchar *buf, TABLE *table, + SPIDER_RESULT_LIST *result_list); + +int spider_db_fetch_key(ha_spider *spider, uchar *buf, TABLE *table, + const KEY *key_info, SPIDER_RESULT_LIST *result_list); + +int spider_db_fetch_minimum_columns(ha_spider *spider, uchar *buf, TABLE *table, + SPIDER_RESULT_LIST *result_list); + +void spider_db_free_one_result_for_start_next(ha_spider *spider); + +void spider_db_free_one_result(SPIDER_RESULT_LIST *result_list, + SPIDER_RESULT *result); + +void spider_db_free_one_quick_result(SPIDER_RESULT *result); + +int spider_db_free_result(ha_spider *spider, bool final); + +int spider_db_store_result(ha_spider *spider, int link_idx, TABLE *table); + +int spider_db_store_result_for_reuse_cursor(ha_spider *spider, int link_idx, + TABLE *table); + +void spider_db_discard_result(ha_spider *spider, int link_idx, + SPIDER_CONN *conn); + +void spider_db_discard_multiple_result(ha_spider *spider, int link_idx, + SPIDER_CONN *conn); #ifdef HA_CAN_BULK_ACCESS -int spider_db_bulk_store_result( - ha_spider *spider, - SPIDER_CONN *conn, - int link_idx, - bool discard_result -); +int spider_db_bulk_store_result(ha_spider *spider, SPIDER_CONN *conn, + int link_idx, bool discard_result); #endif -int spider_db_fetch( - uchar *buf, - ha_spider *spider, - TABLE *table -); - -int spider_db_seek_prev( - uchar *buf, - ha_spider *spider, - TABLE *table -); - -int spider_db_seek_next( - uchar *buf, - ha_spider *spider, - int link_idx, - TABLE *table -); - -int spider_db_seek_last( - uchar *buf, - ha_spider *spider, - int link_idx, - TABLE *table -); - -int spider_db_seek_first( - uchar *buf, - ha_spider *spider, - TABLE *table -); - -void spider_db_set_pos_to_first_row( - SPIDER_RESULT_LIST *result_list -); - -void spider_db_create_position( - ha_spider *spider, - SPIDER_POSITION *pos -); - -int spider_db_seek_tmp( - uchar *buf, - SPIDER_POSITION *pos, - ha_spider *spider, - TABLE *table -); - -int spider_db_seek_tmp_table( - uchar *buf, - SPIDER_POSITION *pos, - ha_spider *spider, - TABLE *table -); - -int spider_db_seek_tmp_key( - uchar *buf, - SPIDER_POSITION *pos, - ha_spider *spider, - TABLE *table, - const KEY *key_info -); - -int spider_db_seek_tmp_minimum_columns( - uchar *buf, - SPIDER_POSITION *pos, - ha_spider *spider, - TABLE *table -); - -int spider_db_show_table_status( - ha_spider *spider, - int link_idx, - int sts_mode, - uint flag -); - -int spider_db_simple_action( - uint simple_action, - spider_db_handler *db_handler, - int link_idx -); - -int spider_db_simple_action( - uint simple_action, - ha_spider *spider, - int link_idx, - bool pre_call -); - -void spider_db_set_cardinarity( - ha_spider *spider, - TABLE *table -); - -int spider_db_show_index( - ha_spider *spider, - int link_idx, - TABLE *table, - int crd_mode -); - -ha_rows spider_db_explain_select( - const key_range *start_key, - const key_range *end_key, - ha_spider *spider, - int link_idx -); - -int spider_db_bulk_insert_init( - ha_spider *spider, - const TABLE *table -); - -int spider_db_bulk_insert( - ha_spider *spider, - TABLE *table, - ha_copy_info *copy_info, - bool bulk_end -); +int spider_db_fetch(uchar *buf, ha_spider *spider, TABLE *table); + +int spider_db_seek_prev(uchar *buf, ha_spider *spider, TABLE *table); + +int spider_db_seek_next(uchar *buf, ha_spider *spider, int link_idx, + TABLE *table); + +int spider_db_seek_last(uchar *buf, ha_spider *spider, int link_idx, + TABLE *table); + +int spider_db_seek_first(uchar *buf, ha_spider *spider, TABLE *table); + +void spider_db_set_pos_to_first_row(SPIDER_RESULT_LIST *result_list); + +void spider_db_create_position(ha_spider *spider, SPIDER_POSITION *pos); + +int spider_db_seek_tmp(uchar *buf, SPIDER_POSITION *pos, ha_spider *spider, + TABLE *table); + +int spider_db_seek_tmp_table(uchar *buf, SPIDER_POSITION *pos, + ha_spider *spider, TABLE *table); + +int spider_db_seek_tmp_key(uchar *buf, SPIDER_POSITION *pos, ha_spider *spider, + TABLE *table, const KEY *key_info); + +int spider_db_seek_tmp_minimum_columns(uchar *buf, SPIDER_POSITION *pos, + ha_spider *spider, TABLE *table); + +int spider_db_show_table_status(ha_spider *spider, int link_idx, int sts_mode, + uint flag); + +int spider_db_simple_action(uint simple_action, spider_db_handler *db_handler, + int link_idx); + +int spider_db_simple_action(uint simple_action, ha_spider *spider, int link_idx, + bool pre_call); + +void spider_db_set_cardinarity(ha_spider *spider, TABLE *table); + +int spider_db_show_index(ha_spider *spider, int link_idx, TABLE *table, + int crd_mode); + +ha_rows spider_db_explain_select(const key_range *start_key, + const key_range *end_key, ha_spider *spider, + int link_idx); + +int spider_db_bulk_insert_init(ha_spider *spider, const TABLE *table); + +int spider_db_bulk_insert(ha_spider *spider, TABLE *table, + ha_copy_info *copy_info, bool bulk_end); #ifdef HA_CAN_BULK_ACCESS -int spider_db_bulk_bulk_insert( - ha_spider *spider -); +int spider_db_bulk_bulk_insert(ha_spider *spider); #endif -int spider_db_update_auto_increment( - ha_spider *spider, - int link_idx -); - -int spider_db_bulk_update_size_limit( - ha_spider *spider, - TABLE *table -); - -int spider_db_bulk_update_end( - ha_spider *spider, - ha_rows *dup_key_found -); - -int spider_db_bulk_update( - ha_spider *spider, - TABLE *table, - my_ptrdiff_t ptr_diff -); - -int spider_db_update( - ha_spider *spider, - TABLE *table, - const uchar *old_data -); +int spider_db_update_auto_increment(ha_spider *spider, int link_idx); + +int spider_db_bulk_update_size_limit(ha_spider *spider, TABLE *table); + +int spider_db_bulk_update_end(ha_spider *spider, ha_rows *dup_key_found); + +int spider_db_bulk_update(ha_spider *spider, TABLE *table, + my_ptrdiff_t ptr_diff); + +int spider_db_update(ha_spider *spider, TABLE *table, const uchar *old_data); #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS_WITH_HS -int spider_db_direct_update( - ha_spider *spider, - TABLE *table, - KEY_MULTI_RANGE *ranges, - uint range_count, - ha_rows *update_rows, - ha_rows *found_rows -); +int spider_db_direct_update(ha_spider *spider, TABLE *table, + KEY_MULTI_RANGE *ranges, uint range_count, + ha_rows *update_rows, ha_rows *found_rows); #else -int spider_db_direct_update( - ha_spider *spider, - TABLE *table, - ha_rows *update_rows, - ha_rows *found_rows -); +int spider_db_direct_update(ha_spider *spider, TABLE *table, + ha_rows *update_rows, ha_rows *found_rows); #endif #endif #ifdef HA_CAN_BULK_ACCESS -int spider_db_bulk_direct_update( - ha_spider *spider, - ha_rows *update_rows -); +int spider_db_bulk_direct_update(ha_spider *spider, ha_rows *update_rows); #endif -int spider_db_bulk_delete( - ha_spider *spider, - TABLE *table, - my_ptrdiff_t ptr_diff -); +int spider_db_bulk_delete(ha_spider *spider, TABLE *table, + my_ptrdiff_t ptr_diff); -int spider_db_delete( - ha_spider *spider, - TABLE *table, - const uchar *buf -); +int spider_db_delete(ha_spider *spider, TABLE *table, const uchar *buf); #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS_WITH_HS -int spider_db_direct_delete( - ha_spider *spider, - TABLE *table, - KEY_MULTI_RANGE *ranges, - uint range_count, - ha_rows *delete_rows -); +int spider_db_direct_delete(ha_spider *spider, TABLE *table, + KEY_MULTI_RANGE *ranges, uint range_count, + ha_rows *delete_rows); #else -int spider_db_direct_delete( - ha_spider *spider, - TABLE *table, - ha_rows *delete_rows -); +int spider_db_direct_delete(ha_spider *spider, TABLE *table, + ha_rows *delete_rows); #endif #endif -int spider_db_delete_all_rows( - ha_spider *spider -); - -int spider_db_disable_keys( - ha_spider *spider -); - -int spider_db_enable_keys( - ha_spider *spider -); - -int spider_db_check_table( - ha_spider *spider, - HA_CHECK_OPT* check_opt -); - -int spider_db_repair_table( - ha_spider *spider, - HA_CHECK_OPT* check_opt -); - -int spider_db_analyze_table( - ha_spider *spider -); - -int spider_db_optimize_table( - ha_spider *spider -); - -int spider_db_flush_tables( - ha_spider *spider, - bool lock -); - -int spider_db_flush_logs( - ha_spider *spider -); - -Field *spider_db_find_field_in_item_list( - Item **item_list, - uint item_count, - uint start_item, - spider_string *str, - const char *func_name, - int func_name_length -); - -int spider_db_print_item_type( - Item *item, - Field *field, - ha_spider *spider, - spider_string *str, - const char *alias, - uint alias_length, - uint dbton_id, - bool use_fields, - spider_fields *fields -); - -int spider_db_print_item_type_default( - Item *item, - ha_spider *spider, - spider_string *str -); - -int spider_db_open_item_cond( - Item_cond *item_cond, - ha_spider *spider, - spider_string *str, - const char *alias, - uint alias_length, - uint dbton_id, - bool use_fields, - spider_fields *fields -); - -int spider_db_open_item_func( - Item_func *item_func, - ha_spider *spider, - spider_string *str, - const char *alias, - uint alias_length, - uint dbton_id, - bool use_fields, - spider_fields *fields -); +int spider_db_delete_all_rows(ha_spider *spider); + +int spider_db_disable_keys(ha_spider *spider); + +int spider_db_enable_keys(ha_spider *spider); + +int spider_db_check_table(ha_spider *spider, HA_CHECK_OPT *check_opt); + +int spider_db_repair_table(ha_spider *spider, HA_CHECK_OPT *check_opt); + +int spider_db_analyze_table(ha_spider *spider); + +int spider_db_optimize_table(ha_spider *spider); + +int spider_db_flush_tables(ha_spider *spider, bool lock); + +int spider_db_flush_logs(ha_spider *spider); + +Field *spider_db_find_field_in_item_list(Item **item_list, uint item_count, + uint start_item, spider_string *str, + const char *func_name, + int func_name_length); + +int spider_db_print_item_type(Item *item, Field *field, ha_spider *spider, + spider_string *str, const char *alias, + uint alias_length, uint dbton_id, bool use_fields, + spider_fields *fields); + +int spider_db_print_item_type_default(Item *item, ha_spider *spider, + spider_string *str); + +int spider_db_open_item_cond(Item_cond *item_cond, ha_spider *spider, + spider_string *str, const char *alias, + uint alias_length, uint dbton_id, bool use_fields, + spider_fields *fields); + +int spider_db_open_item_func(Item_func *item_func, ha_spider *spider, + spider_string *str, const char *alias, + uint alias_length, uint dbton_id, bool use_fields, + spider_fields *fields); #ifdef HANDLER_HAS_DIRECT_AGGREGATE -int spider_db_open_item_sum_func( - Item_sum *item_sum, - ha_spider *spider, - spider_string *str, - const char *alias, - uint alias_length, - uint dbton_id, - bool use_fields, - spider_fields *fields -); +int spider_db_open_item_sum_func(Item_sum *item_sum, ha_spider *spider, + spider_string *str, const char *alias, + uint alias_length, uint dbton_id, + bool use_fields, spider_fields *fields); #endif -int spider_db_open_item_ident( - Item_ident *item_ident, - ha_spider *spider, - spider_string *str, - const char *alias, - uint alias_length, - uint dbton_id, - bool use_fields, - spider_fields *fields -); - -int spider_db_open_item_field( - Item_field *item_field, - ha_spider *spider, - spider_string *str, - const char *alias, - uint alias_length, - uint dbton_id, - bool use_fields, - spider_fields *fields -); - -int spider_db_open_item_ref( - Item_ref *item_ref, - ha_spider *spider, - spider_string *str, - const char *alias, - uint alias_length, - uint dbton_id, - bool use_fields, - spider_fields *fields -); - -int spider_db_open_item_row( - Item_row *item_row, - ha_spider *spider, - spider_string *str, - const char *alias, - uint alias_length, - uint dbton_id, - bool use_fields, - spider_fields *fields -); - -int spider_db_open_item_string( - Item *item, - Field *field, - ha_spider *spider, - spider_string *str, - const char *alias, - uint alias_length, - uint dbton_id, - bool use_fields, - spider_fields *fields -); - -int spider_db_open_item_int( - Item *item, - Field *field, - ha_spider *spider, - spider_string *str, - const char *alias, - uint alias_length, - uint dbton_id, - bool use_fields, - spider_fields *fields -); - -int spider_db_open_item_cache( - Item_cache *item_cache, - Field *field, - ha_spider *spider, - spider_string *str, - const char *alias, - uint alias_length, - uint dbton_id, - bool use_fields, - spider_fields *fields -); - -int spider_db_open_item_insert_value( - Item_insert_value *item_insert_value, - Field *field, - ha_spider *spider, - spider_string *str, - const char *alias, - uint alias_length, - uint dbton_id, - bool use_fields, - spider_fields *fields -); - -int spider_db_append_condition( - ha_spider *spider, - const char *alias, - uint alias_length, - bool test_flg -); +int spider_db_open_item_ident(Item_ident *item_ident, ha_spider *spider, + spider_string *str, const char *alias, + uint alias_length, uint dbton_id, bool use_fields, + spider_fields *fields); + +int spider_db_open_item_field(Item_field *item_field, ha_spider *spider, + spider_string *str, const char *alias, + uint alias_length, uint dbton_id, bool use_fields, + spider_fields *fields); + +int spider_db_open_item_ref(Item_ref *item_ref, ha_spider *spider, + spider_string *str, const char *alias, + uint alias_length, uint dbton_id, bool use_fields, + spider_fields *fields); + +int spider_db_open_item_row(Item_row *item_row, ha_spider *spider, + spider_string *str, const char *alias, + uint alias_length, uint dbton_id, bool use_fields, + spider_fields *fields); + +int spider_db_open_item_string(Item *item, Field *field, ha_spider *spider, + spider_string *str, const char *alias, + uint alias_length, uint dbton_id, + bool use_fields, spider_fields *fields); + +int spider_db_open_item_int(Item *item, Field *field, ha_spider *spider, + spider_string *str, const char *alias, + uint alias_length, uint dbton_id, bool use_fields, + spider_fields *fields); + +int spider_db_open_item_cache(Item_cache *item_cache, Field *field, + ha_spider *spider, spider_string *str, + const char *alias, uint alias_length, + uint dbton_id, bool use_fields, + spider_fields *fields); + +int spider_db_open_item_insert_value(Item_insert_value *item_insert_value, + Field *field, ha_spider *spider, + spider_string *str, const char *alias, + uint alias_length, uint dbton_id, + bool use_fields, spider_fields *fields); + +int spider_db_append_condition(ha_spider *spider, const char *alias, + uint alias_length, bool test_flg); #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS -int spider_db_append_update_columns( - ha_spider *spider, - spider_string *str, - const char *alias, - uint alias_length, - uint dbton_id, - bool use_fields, - spider_fields *fields -); +int spider_db_append_update_columns(ha_spider *spider, spider_string *str, + const char *alias, uint alias_length, + uint dbton_id, bool use_fields, + spider_fields *fields); #endif #ifdef HANDLER_HAS_DIRECT_AGGREGATE -bool spider_db_check_select_colum_in_group( - st_select_lex *select_lex, - Field *field -); +bool spider_db_check_select_colum_in_group(st_select_lex *select_lex, + Field *field); #endif -uint spider_db_check_ft_idx( - Item_func *item_func, - ha_spider *spider -); - -int spider_db_udf_fetch_row( - SPIDER_TRX *trx, - Field *field, - SPIDER_DB_ROW *row, - ulong *length -); - -int spider_db_udf_fetch_table( - SPIDER_TRX *trx, - SPIDER_CONN *conn, - TABLE *table, - SPIDER_DB_RESULT *result, - uint set_on, - uint set_off -); - -int spider_db_udf_direct_sql_connect( - const SPIDER_DIRECT_SQL *direct_sql, - SPIDER_CONN *conn -); - -int spider_db_udf_direct_sql_ping( - SPIDER_DIRECT_SQL *direct_sql -); - -int spider_db_udf_direct_sql( - SPIDER_DIRECT_SQL *direct_sql -); - -int spider_db_udf_direct_sql_select_db( - SPIDER_DIRECT_SQL *direct_sql, - SPIDER_CONN *conn -); - -int spider_db_udf_direct_sql_set_names( - SPIDER_DIRECT_SQL *direct_sql, - SPIDER_TRX *trx, - SPIDER_CONN *conn -); - -int spider_db_udf_check_and_set_set_names( - SPIDER_TRX *trx -); - -int spider_db_udf_append_set_names( - SPIDER_TRX *trx -); - -void spider_db_udf_free_set_names( - SPIDER_TRX *trx -); - -int spider_db_udf_ping_table( - SPIDER_TABLE_MON_LIST *table_mon_list, - SPIDER_SHARE *share, - SPIDER_TRX *trx, - SPIDER_CONN *conn, - char *where_clause, - uint where_clause_length, - bool ping_only, - bool use_where, - longlong limit -); +uint spider_db_check_ft_idx(Item_func *item_func, ha_spider *spider); + +int spider_db_udf_fetch_row(SPIDER_TRX *trx, Field *field, SPIDER_DB_ROW *row, + ulong *length); + +int spider_db_udf_fetch_table(SPIDER_TRX *trx, SPIDER_CONN *conn, TABLE *table, + SPIDER_DB_RESULT *result, uint set_on, + uint set_off); + +int spider_db_udf_direct_sql_connect(const SPIDER_DIRECT_SQL *direct_sql, + SPIDER_CONN *conn); + +int spider_db_udf_direct_sql_ping(SPIDER_DIRECT_SQL *direct_sql); + +int spider_db_udf_direct_sql(SPIDER_DIRECT_SQL *direct_sql); + +int spider_db_udf_direct_sql_select_db(SPIDER_DIRECT_SQL *direct_sql, + SPIDER_CONN *conn); + +int spider_db_udf_direct_sql_set_names(SPIDER_DIRECT_SQL *direct_sql, + SPIDER_TRX *trx, SPIDER_CONN *conn); + +int spider_db_udf_check_and_set_set_names(SPIDER_TRX *trx); + +int spider_db_udf_append_set_names(SPIDER_TRX *trx); + +void spider_db_udf_free_set_names(SPIDER_TRX *trx); + +int spider_db_udf_ping_table(SPIDER_TABLE_MON_LIST *table_mon_list, + SPIDER_SHARE *share, SPIDER_TRX *trx, + SPIDER_CONN *conn, char *where_clause, + uint where_clause_length, bool ping_only, + bool use_where, longlong limit); int spider_db_udf_ping_table_append_mon_next( - spider_string *str, - char *child_table_name, - uint child_table_name_length, - int link_id, - char *where_clause, - uint where_clause_length, - longlong first_sid, - int full_mon_count, - int current_mon_count, - int success_count, - int fault_count, - int flags, - longlong limit -); - -int spider_db_udf_ping_table_append_select( - spider_string *str, - SPIDER_SHARE *share, - SPIDER_TRX *trx, - spider_string *where_str, - bool use_where, - longlong limit, - uint dbton_id -); + spider_string *str, char *child_table_name, uint child_table_name_length, + int link_id, char *where_clause, uint where_clause_length, + longlong first_sid, int full_mon_count, int current_mon_count, + int success_count, int fault_count, int flags, longlong limit); + +int spider_db_udf_ping_table_append_select(spider_string *str, + SPIDER_SHARE *share, SPIDER_TRX *trx, + spider_string *where_str, + bool use_where, longlong limit, + uint dbton_id); int spider_db_udf_ping_table_mon_next( - THD *thd, - SPIDER_TABLE_MON *table_mon, - SPIDER_CONN *conn, - SPIDER_MON_TABLE_RESULT *mon_table_result, - char *child_table_name, - uint child_table_name_length, - int link_id, - char *where_clause, - uint where_clause_length, - longlong first_sid, - int full_mon_count, - int current_mon_count, - int success_count, - int fault_count, - int flags, - longlong limit -); - -int spider_db_udf_copy_tables( - SPIDER_COPY_TABLES *copy_tables, - ha_spider *spider, - TABLE *table, - longlong bulk_insert_rows -); - -int spider_db_open_handler( - ha_spider *spider, - SPIDER_CONN *conn, - int link_idx -); + THD *thd, SPIDER_TABLE_MON *table_mon, SPIDER_CONN *conn, + SPIDER_MON_TABLE_RESULT *mon_table_result, char *child_table_name, + uint child_table_name_length, int link_id, char *where_clause, + uint where_clause_length, longlong first_sid, int full_mon_count, + int current_mon_count, int success_count, int fault_count, int flags, + longlong limit); + +int spider_db_udf_copy_tables(SPIDER_COPY_TABLES *copy_tables, + ha_spider *spider, TABLE *table, + longlong bulk_insert_rows); + +int spider_db_open_handler(ha_spider *spider, SPIDER_CONN *conn, int link_idx); #ifdef HA_CAN_BULK_ACCESS -int spider_db_bulk_open_handler( - ha_spider *spider, - SPIDER_CONN *conn, - int link_idx -); +int spider_db_bulk_open_handler(ha_spider *spider, SPIDER_CONN *conn, + int link_idx); #endif -int spider_db_close_handler( - ha_spider *spider, - SPIDER_CONN *conn, - int link_idx, - uint tgt_conn_kind -); +int spider_db_close_handler(ha_spider *spider, SPIDER_CONN *conn, int link_idx, + uint tgt_conn_kind); #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) -void spider_db_hs_request_buf_reset( - SPIDER_CONN *conn -); +void spider_db_hs_request_buf_reset(SPIDER_CONN *conn); #endif -bool spider_db_conn_is_network_error( - int error_num -); +bool spider_db_conn_is_network_error(int error_num); diff --git a/storage/spider/spd_db_handlersocket.h b/storage/spider/spd_db_handlersocket.h index f7a454b66af..1d7fc714441 100644 --- a/storage/spider/spd_db_handlersocket.h +++ b/storage/spider/spd_db_handlersocket.h @@ -11,211 +11,108 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA +*/ #define SPIDER_HS_CONN dena::hstcpcli_ptr #define SPIDER_HS_CONN_CREATE dena::hstcpcli_i::create #define SPIDER_HS_RESULT dena::hstresult #define SPIDER_HS_SOCKARGS dena::socket_args -class spider_db_handlersocket_util: public spider_db_util -{ -public: +class spider_db_handlersocket_util : public spider_db_util { + public: spider_db_handlersocket_util(); ~spider_db_handlersocket_util(); - int append_name( - spider_string *str, - const char *name, - uint name_length - ); - int append_name_with_charset( - spider_string *str, - const char *name, - uint name_length, - CHARSET_INFO *name_charset - ); - int append_escaped_name( - spider_string *str, - const char *name, - uint name_length - ); - int append_escaped_name_with_charset( - spider_string *str, - const char *name, - uint name_length, - CHARSET_INFO *name_charset - ); - bool is_name_quote( - const char head_code - ); - int append_escaped_name_quote( - spider_string *str - ); - int append_column_value( - ha_spider *spider, - spider_string *str, - Field *field, - const uchar *new_ptr, - CHARSET_INFO *access_charset - ); - int append_trx_isolation( - spider_string *str, - int trx_isolation - ); - int append_autocommit( - spider_string *str, - bool autocommit - ); - int append_sql_log_off( - spider_string *str, - bool sql_log_off - ); - int append_wait_timeout( - spider_string *str, - int wait_timeout - ); - int append_sql_mode( - spider_string *str, - sql_mode_t sql_mode - ); - int append_time_zone( - spider_string *str, - Time_zone *time_zone - ); - int append_start_transaction( - spider_string *str - ); - int append_xa_start( - spider_string *str, - XID *xid - ); - int append_lock_table_head( - spider_string *str - ); - int append_lock_table_body( - spider_string *str, - const char *db_name, - uint db_name_length, - CHARSET_INFO *db_name_charset, - const char *table_name, - uint table_name_length, - CHARSET_INFO *table_name_charset, - int lock_type - ); - int append_lock_table_tail( - spider_string *str - ); - int append_unlock_table( - spider_string *str - ); - int open_item_func( - Item_func *item_func, - ha_spider *spider, - spider_string *str, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields - ); + int append_name(spider_string *str, const char *name, uint name_length); + int append_name_with_charset(spider_string *str, const char *name, + uint name_length, CHARSET_INFO *name_charset); + int append_escaped_name(spider_string *str, const char *name, + uint name_length); + int append_escaped_name_with_charset(spider_string *str, const char *name, + uint name_length, + CHARSET_INFO *name_charset); + bool is_name_quote(const char head_code); + int append_escaped_name_quote(spider_string *str); + int append_column_value(ha_spider *spider, spider_string *str, Field *field, + const uchar *new_ptr, CHARSET_INFO *access_charset); + int append_trx_isolation(spider_string *str, int trx_isolation); + int append_autocommit(spider_string *str, bool autocommit); + int append_sql_log_off(spider_string *str, bool sql_log_off); + int append_wait_timeout(spider_string *str, int wait_timeout); + int append_sql_mode(spider_string *str, sql_mode_t sql_mode); + int append_time_zone(spider_string *str, Time_zone *time_zone); + int append_start_transaction(spider_string *str); + int append_xa_start(spider_string *str, XID *xid); + int append_lock_table_head(spider_string *str); + int append_lock_table_body(spider_string *str, const char *db_name, + uint db_name_length, CHARSET_INFO *db_name_charset, + const char *table_name, uint table_name_length, + CHARSET_INFO *table_name_charset, int lock_type); + int append_lock_table_tail(spider_string *str); + int append_unlock_table(spider_string *str); + int open_item_func(Item_func *item_func, ha_spider *spider, + spider_string *str, const char *alias, uint alias_length, + bool use_fields, spider_fields *fields); #ifdef HANDLER_HAS_DIRECT_AGGREGATE - int open_item_sum_func( - Item_sum *item_sum, - ha_spider *spider, - spider_string *str, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields - ); + int open_item_sum_func(Item_sum *item_sum, ha_spider *spider, + spider_string *str, const char *alias, + uint alias_length, bool use_fields, + spider_fields *fields); #endif - int append_escaped_util( - spider_string *to, - String *from - ); - int append_escaped_util( - spider_string *to, - String *from - ); + int append_escaped_util(spider_string *to, String *from); + int append_escaped_util(spider_string *to, String *from); #ifdef SPIDER_HAS_GROUP_BY_HANDLER - int append_from_and_tables( - ha_spider *spider, - spider_fields *fields, - spider_string *str, - TABLE_LIST *table_list, - uint table_count - ); - int reappend_tables( - spider_fields *fields, - SPIDER_LINK_IDX_CHAIN *link_idx_chain, - spider_string *str - ); - int append_where( - spider_string *str - ); - int append_having( - spider_string *str - ); + int append_from_and_tables(ha_spider *spider, spider_fields *fields, + spider_string *str, TABLE_LIST *table_list, + uint table_count); + int reappend_tables(spider_fields *fields, + SPIDER_LINK_IDX_CHAIN *link_idx_chain, + spider_string *str); + int append_where(spider_string *str); + int append_having(spider_string *str); #endif }; -class spider_db_handlersocket_row: public spider_db_row -{ -public: +class spider_db_handlersocket_row : public spider_db_row { + public: SPIDER_HS_STRING_REF *hs_row; SPIDER_HS_STRING_REF *hs_row_first; - uint field_count; - uint row_size; - bool cloned; + uint field_count; + uint row_size; + bool cloned; spider_db_handlersocket_row(); ~spider_db_handlersocket_row(); - int store_to_field( - Field *field, - CHARSET_INFO *access_charset - ); - int append_to_str( - spider_string *str - ); - int append_escaped_to_str( - spider_string *str, - uint dbton_id - ); + int store_to_field(Field *field, CHARSET_INFO *access_charset); + int append_to_str(spider_string *str); + int append_escaped_to_str(spider_string *str, uint dbton_id); void first(); void next(); bool is_null(); int val_int(); double val_real(); - my_decimal *val_decimal( - my_decimal *decimal_value, - CHARSET_INFO *access_charset - ); + my_decimal *val_decimal(my_decimal *decimal_value, + CHARSET_INFO *access_charset); SPIDER_DB_ROW *clone(); - int store_to_tmp_table( - TABLE *tmp_table, - spider_string *str - ); + int store_to_tmp_table(TABLE *tmp_table, spider_string *str); uint get_byte_size(); }; -class spider_db_handlersocket_result_buffer: public spider_db_result_buffer -{ -public: - SPIDER_HS_RESULT hs_result; +class spider_db_handlersocket_result_buffer : public spider_db_result_buffer { + public: + SPIDER_HS_RESULT hs_result; spider_db_handlersocket_result_buffer(); ~spider_db_handlersocket_result_buffer(); void clear(); - bool check_size( - longlong size - ); + bool check_size(longlong size); }; -class spider_db_handlersocket_result: public spider_db_result -{ -public: - SPIDER_HS_CONN *hs_conn_p; +class spider_db_handlersocket_result : public spider_db_result { + public: + SPIDER_HS_CONN *hs_conn_p; spider_db_handlersocket_row row; - SPIDER_HS_STRING_REF hs_row; - uint field_count; - int store_error_num; + SPIDER_HS_STRING_REF hs_row; + uint field_count; + int store_error_num; spider_db_handlersocket_result(SPIDER_DB_CONN *in_db_conn); ~spider_db_handlersocket_result(); bool has_result(); @@ -223,396 +120,203 @@ public: SPIDER_DB_ROW *current_row(); SPIDER_DB_ROW *fetch_row(); SPIDER_DB_ROW *fetch_row_from_result_buffer( - spider_db_result_buffer *spider_res_buf - ); - SPIDER_DB_ROW *fetch_row_from_tmp_table( - TABLE *tmp_table - ); - int fetch_table_status( - int mode, - ha_statistics &stat - ); - int fetch_table_records( - int mode, - ha_rows &records - ); - int fetch_table_cardinality( - int mode, - TABLE *table, - longlong *cardinality, - uchar *cardinality_upd, - int bitmap_size - ); - int fetch_table_mon_status( - int &status - ); + spider_db_result_buffer *spider_res_buf); + SPIDER_DB_ROW *fetch_row_from_tmp_table(TABLE *tmp_table); + int fetch_table_status(int mode, ha_statistics &stat); + int fetch_table_records(int mode, ha_rows &records); + int fetch_table_cardinality(int mode, TABLE *table, longlong *cardinality, + uchar *cardinality_upd, int bitmap_size); + int fetch_table_mon_status(int &status); longlong num_rows(); uint num_fields(); - void move_to_pos( - longlong pos - ); + void move_to_pos(longlong pos); int get_errno(); #ifdef SPIDER_HAS_DISCOVER_TABLE_STRUCTURE - int fetch_columns_for_discover_table_structure( - spider_string *str, - CHARSET_INFO *access_charset - ); - int fetch_index_for_discover_table_structure( - spider_string *str, - CHARSET_INFO *access_charset - ); - int fetch_table_for_discover_table_structure( - spider_string *str, - SPIDER_SHARE *spider_share, - CHARSET_INFO *access_charset - ); + int fetch_columns_for_discover_table_structure(spider_string *str, + CHARSET_INFO *access_charset); + int fetch_index_for_discover_table_structure(spider_string *str, + CHARSET_INFO *access_charset); + int fetch_table_for_discover_table_structure(spider_string *str, + SPIDER_SHARE *spider_share, + CHARSET_INFO *access_charset); #endif }; -class spider_db_handlersocket: public spider_db_conn -{ +class spider_db_handlersocket : public spider_db_conn { SPIDER_HS_CONN hs_conn; - int stored_error; - uint field_count; -public: - DYNAMIC_ARRAY handler_open_array; - bool handler_open_array_inited; - uint handler_open_array_id; - const char *handler_open_array_func_name; - const char *handler_open_array_file_name; - ulong handler_open_array_line_no; + int stored_error; + uint field_count; + + public: + DYNAMIC_ARRAY handler_open_array; + bool handler_open_array_inited; + uint handler_open_array_id; + const char *handler_open_array_func_name; + const char *handler_open_array_file_name; + ulong handler_open_array_line_no; st_spider_db_request_key *request_key_req_first; st_spider_db_request_key *request_key_req_last; st_spider_db_request_key *request_key_snd_first; st_spider_db_request_key *request_key_snd_last; st_spider_db_request_key *request_key_reuse_first; st_spider_db_request_key *request_key_reuse_last; - spider_db_handlersocket( - SPIDER_CONN *conn - ); + spider_db_handlersocket(SPIDER_CONN *conn); ~spider_db_handlersocket(); int init(); bool is_connected(); void bg_connect(); - int connect( - char *tgt_host, - char *tgt_username, - char *tgt_password, - long tgt_port, - char *tgt_socket, - char *server_name, - int connect_retry_count, - longlong connect_retry_interval - ); + int connect(char *tgt_host, char *tgt_username, char *tgt_password, + long tgt_port, char *tgt_socket, char *server_name, + int connect_retry_count, longlong connect_retry_interval); int ping(); void bg_disconnect(); void disconnect(); int set_net_timeout(); - int exec_query( - const char *query, - uint length, - int quick_mode - ); + int exec_query(const char *query, uint length, int quick_mode); int get_errno(); const char *get_error(); - bool is_server_gone_error( - int error_num - ); - bool is_dup_entry_error( - int error_num - ); - bool is_xa_nota_error( - int error_num - ); - spider_db_result *store_result( - spider_db_result_buffer **spider_res_buf, - st_spider_db_request_key *request_key, - int *error_num - ); - spider_db_result *use_result( - ha_spider *spider, - st_spider_db_request_key *request_key, - int *error_num - ); + bool is_server_gone_error(int error_num); + bool is_dup_entry_error(int error_num); + bool is_xa_nota_error(int error_num); + spider_db_result *store_result(spider_db_result_buffer **spider_res_buf, + st_spider_db_request_key *request_key, + int *error_num); + spider_db_result *use_result(ha_spider *spider, + st_spider_db_request_key *request_key, + int *error_num); int next_result(); uint affected_rows(); uint matched_rows(); - bool inserted_info( - spider_db_handler *handler, - spider_copy_info *copy_info - ); + bool inserted_info(spider_db_handler *handler, spider_copy_info *copy_info); ulonglong last_insert_id(); - int set_character_set( - const char *csname - ); - int select_db( - const char *dbname - ); - int consistent_snapshot( - int *need_mon - ); + int set_character_set(const char *csname); + int select_db(const char *dbname); + int consistent_snapshot(int *need_mon); bool trx_start_in_bulk_sql(); - int start_transaction( - int *need_mon - ); - int commit( - int *need_mon - ); - int rollback( - int *need_mon - ); + int start_transaction(int *need_mon); + int commit(int *need_mon); + int rollback(int *need_mon); bool xa_start_in_bulk_sql(); - int xa_start( - XID *xid, - int *need_mon - ); - int xa_end( - XID *xid, - int *need_mon - ); - int xa_prepare( - XID *xid, - int *need_mon - ); - int xa_commit( - XID *xid, - int *need_mon - ); - int xa_rollback( - XID *xid, - int *need_mon - ); + int xa_start(XID *xid, int *need_mon); + int xa_end(XID *xid, int *need_mon); + int xa_prepare(XID *xid, int *need_mon); + int xa_commit(XID *xid, int *need_mon); + int xa_rollback(XID *xid, int *need_mon); bool set_trx_isolation_in_bulk_sql(); - int set_trx_isolation( - int trx_isolation, - int *need_mon - ); + int set_trx_isolation(int trx_isolation, int *need_mon); bool set_autocommit_in_bulk_sql(); - int set_autocommit( - bool autocommit, - int *need_mon - ); + int set_autocommit(bool autocommit, int *need_mon); bool set_sql_log_off_in_bulk_sql(); - int set_sql_log_off( - bool sql_log_off, - int *need_mon - ); + int set_sql_log_off(bool sql_log_off, int *need_mon); bool set_wait_timeout_in_bulk_sql(); - int set_wait_timeout( - int wait_timeout, - int *need_mon - ); + int set_wait_timeout(int wait_timeout, int *need_mon); bool set_sql_mode_in_bulk_sql(); - int set_sql_mode( - sql_mode_t sql_mode, - int *need_mon - ); + int set_sql_mode(sql_mode_t sql_mode, int *need_mon); bool set_time_zone_in_bulk_sql(); - int set_time_zone( - Time_zone *time_zone, - int *need_mon - ); - int show_master_status( - SPIDER_TRX *trx, - SPIDER_SHARE *share, - int all_link_idx, - int *need_mon, - TABLE *table, - spider_string *str, - int mode, - SPIDER_DB_RESULT **res1, - SPIDER_DB_RESULT **res2 - ); - int append_sql( - char *sql, - ulong sql_length, - st_spider_db_request_key *request_key - ); - int append_open_handler( - uint handler_id, - const char *db_name, - const char *table_name, - const char *index_name, - const char *sql, - st_spider_db_request_key *request_key - ); - int append_select( - uint handler_id, - spider_string *sql, - SPIDER_DB_HS_STRING_REF_BUFFER *keys, - int limit, - int skip, - st_spider_db_request_key *request_key - ); - int append_insert( - uint handler_id, - SPIDER_DB_HS_STRING_REF_BUFFER *upds, - st_spider_db_request_key *request_key - ); - int append_update( - uint handler_id, - spider_string *sql, - SPIDER_DB_HS_STRING_REF_BUFFER *keys, - SPIDER_DB_HS_STRING_REF_BUFFER *upds, - int limit, - int skip, - bool increment, - bool decrement, - st_spider_db_request_key *request_key - ); - int append_delete( - uint handler_id, - spider_string *sql, - SPIDER_DB_HS_STRING_REF_BUFFER *keys, - int limit, - int skip, - st_spider_db_request_key *request_key - ); + int set_time_zone(Time_zone *time_zone, int *need_mon); + int show_master_status(SPIDER_TRX *trx, SPIDER_SHARE *share, int all_link_idx, + int *need_mon, TABLE *table, spider_string *str, + int mode, SPIDER_DB_RESULT **res1, + SPIDER_DB_RESULT **res2); + int append_sql(char *sql, ulong sql_length, + st_spider_db_request_key *request_key); + int append_open_handler(uint handler_id, const char *db_name, + const char *table_name, const char *index_name, + const char *sql, + st_spider_db_request_key *request_key); + int append_select(uint handler_id, spider_string *sql, + SPIDER_DB_HS_STRING_REF_BUFFER *keys, int limit, int skip, + st_spider_db_request_key *request_key); + int append_insert(uint handler_id, SPIDER_DB_HS_STRING_REF_BUFFER *upds, + st_spider_db_request_key *request_key); + int append_update(uint handler_id, spider_string *sql, + SPIDER_DB_HS_STRING_REF_BUFFER *keys, + SPIDER_DB_HS_STRING_REF_BUFFER *upds, int limit, int skip, + bool increment, bool decrement, + st_spider_db_request_key *request_key); + int append_delete(uint handler_id, spider_string *sql, + SPIDER_DB_HS_STRING_REF_BUFFER *keys, int limit, int skip, + st_spider_db_request_key *request_key); void reset_request_queue(); - size_t escape_string( - char *to, - const char *from, - size_t from_length - ); + size_t escape_string(char *to, const char *from, size_t from_length); bool have_lock_table_list(); - int append_lock_tables( - spider_string *str - ); - int append_unlock_tables( - spider_string *str - ); + int append_lock_tables(spider_string *str); + int append_unlock_tables(spider_string *str); uint get_lock_table_hash_count(); void reset_lock_table_hash(); uint get_opened_handler_count(); void reset_opened_handler(); - void set_dup_key_idx( - ha_spider *spider, - int link_idx - ); - int append_request_key( - st_spider_db_request_key *request_key - ); + void set_dup_key_idx(ha_spider *spider, int link_idx); + int append_request_key(st_spider_db_request_key *request_key); void reset_request_key_req(); void reset_request_key_snd(); void move_request_key_to_snd(); - int check_request_key( - st_spider_db_request_key *request_key - ); - bool cmp_request_key_to_snd( - st_spider_db_request_key *request_key - ); + int check_request_key(st_spider_db_request_key *request_key); + bool cmp_request_key_to_snd(st_spider_db_request_key *request_key); }; -class spider_handlersocket_share: public spider_db_share -{ -public: - spider_string *table_names_str; - spider_string *db_names_str; - spider_string *db_table_str; +class spider_handlersocket_share : public spider_db_share { + public: + spider_string *table_names_str; + spider_string *db_names_str; + spider_string *db_table_str; #ifdef SPIDER_HAS_HASH_VALUE_TYPE my_hash_value_type *db_table_str_hash_value; #endif - uint table_nm_max_length; - uint db_nm_max_length; - spider_string *column_name_str; - bool same_db_table_name; - int first_all_link_idx; - spider_handlersocket_share( - st_spider_share *share - ); + uint table_nm_max_length; + uint db_nm_max_length; + spider_string *column_name_str; + bool same_db_table_name; + int first_all_link_idx; + spider_handlersocket_share(st_spider_share *share); ~spider_handlersocket_share(); int init(); - int append_table_name( - spider_string *str, - int all_link_idx - ); + int append_table_name(spider_string *str, int all_link_idx); int create_table_names_str(); void free_table_names_str(); int create_column_name_str(); void free_column_name_str(); - uint get_column_name_length( - uint field_index - ); - int append_column_name( - spider_string *str, - uint field_index - ); - int append_column_name_with_alias( - spider_string *str, - uint field_index, - const char *alias, - uint alias_length - ); + uint get_column_name_length(uint field_index); + int append_column_name(spider_string *str, uint field_index); + int append_column_name_with_alias(spider_string *str, uint field_index, + const char *alias, uint alias_length); bool need_change_db_table_name(); #ifdef SPIDER_HAS_DISCOVER_TABLE_STRUCTURE - int discover_table_structure( - SPIDER_TRX *trx, - SPIDER_SHARE *spider_share, - spider_string *str - ); + int discover_table_structure(SPIDER_TRX *trx, SPIDER_SHARE *spider_share, + spider_string *str); #endif }; -class spider_handlersocket_handler: public spider_db_handler -{ - spider_string hs_sql; -public: - bool hs_adding_keys; +class spider_handlersocket_handler : public spider_db_handler { + spider_string hs_sql; + + public: + bool hs_adding_keys; SPIDER_DB_HS_STRING_REF_BUFFER hs_keys; SPIDER_DB_HS_STRING_REF_BUFFER hs_upds; SPIDER_DB_HS_STR_BUFFER hs_strs; - uint hs_strs_pos; - int hs_limit; - int hs_skip; + uint hs_strs_pos; + int hs_limit; + int hs_skip; spider_handlersocket_share *handlersocket_share; - SPIDER_LINK_FOR_HASH *link_for_hash; - uchar *minimum_select_bitmap; - spider_handlersocket_handler( - ha_spider *spider, - spider_handlersocket_share *db_share - ); + SPIDER_LINK_FOR_HASH *link_for_hash; + uchar *minimum_select_bitmap; + spider_handlersocket_handler(ha_spider *spider, + spider_handlersocket_share *db_share); ~spider_handlersocket_handler(); int init(); - int append_index_hint( - spider_string *str, - int link_idx, - ulong sql_type - ); - int append_table_name_with_adjusting( - spider_string *str, - int link_idx, - ulong sql_type - ); - int append_tmp_table_and_sql_for_bka( - const key_range *start_key - ); + int append_index_hint(spider_string *str, int link_idx, ulong sql_type); + int append_table_name_with_adjusting(spider_string *str, int link_idx, + ulong sql_type); + int append_tmp_table_and_sql_for_bka(const key_range *start_key); int reuse_tmp_table_and_sql_for_bka(); - int append_union_table_and_sql_for_bka( - const key_range *start_key - ); + int append_union_table_and_sql_for_bka(const key_range *start_key); int reuse_union_table_and_sql_for_bka(); - int append_insert_for_recovery( - ulong sql_type, - int link_idx - ); - int append_update( - const TABLE *table, - my_ptrdiff_t ptr_diff - ); - int append_update( - const TABLE *table, - my_ptrdiff_t ptr_diff, - int link_idx - ); - int append_delete( - const TABLE *table, - my_ptrdiff_t ptr_diff - ); - int append_delete( - const TABLE *table, - my_ptrdiff_t ptr_diff, - int link_idx - ); + int append_insert_for_recovery(ulong sql_type, int link_idx); + int append_update(const TABLE *table, my_ptrdiff_t ptr_diff); + int append_update(const TABLE *table, my_ptrdiff_t ptr_diff, int link_idx); + int append_delete(const TABLE *table, my_ptrdiff_t ptr_diff); + int append_delete(const TABLE *table, my_ptrdiff_t ptr_diff, int link_idx); int append_insert_part(); int append_update_part(); int append_delete_part(); @@ -623,469 +327,176 @@ public: #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS int append_direct_update_set_part(); #endif - int append_minimum_select_without_quote( - spider_string *str - ); + int append_minimum_select_without_quote(spider_string *str); #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS - int append_minimum_select_by_field_idx_list( - spider_string *str, - uint32 *field_idxs, - size_t field_idxs_num - ); - int append_dup_update_pushdown_part( - const char *alias, - uint alias_length - ); - int append_update_columns_part( - const char *alias, - uint alias_length - ); + int append_minimum_select_by_field_idx_list(spider_string *str, + uint32 *field_idxs, + size_t field_idxs_num); + int append_dup_update_pushdown_part(const char *alias, uint alias_length); + int append_update_columns_part(const char *alias, uint alias_length); int check_update_columns_part(); - int append_select_part( - ulong sql_type - ); + int append_select_part(ulong sql_type); #endif - int append_table_select_part( - ulong sql_type - ); - int append_key_select_part( - ulong sql_type, - uint idx - ); - int append_minimum_select_part( - ulong sql_type - ); - int append_hint_after_table_part( - ulong sql_type - ); - void set_where_pos( - ulong sql_type - ); - void set_where_to_pos( - ulong sql_type - ); - int check_item_type( - Item *item - ); - int append_values_connector_part( - ulong sql_type - ); - int append_values_terminator_part( - ulong sql_type - ); - int append_union_table_connector_part( - ulong sql_type - ); - int append_union_table_terminator_part( - ulong sql_type - ); - int append_key_column_values_part( - const key_range *start_key, - ulong sql_type - ); - int append_key_column_values_with_name_part( - const key_range *start_key, - ulong sql_type - ); - int append_key_where_part( - const key_range *start_key, - const key_range *end_key, - ulong sql_type - ); - int append_key_where( - spider_string *str, - spider_string *str_part, - spider_string *str_part2, - const key_range *start_key, - const key_range *end_key, - ulong sql_type, - bool set_order - ); - int append_is_null_part( - ulong sql_type, - KEY_PART_INFO *key_part, - const key_range *key, - const uchar **ptr, - bool key_eq, - bool tgt_final - ); - int append_is_null( - ulong sql_type, - spider_string *str, - spider_string *str_part, - spider_string *str_part2, - KEY_PART_INFO *key_part, - const key_range *key, - const uchar **ptr, - bool key_eq, - bool tgt_final - ); - int append_where_terminator_part( - ulong sql_type, - bool set_order, - int key_count - ); - int append_match_where_part( - ulong sql_type - ); - int append_condition_part( - const char *alias, - uint alias_length, - ulong sql_type, - bool test_flg - ); - int append_match_select_part( - ulong sql_type, - const char *alias, - uint alias_length - ); + int append_table_select_part(ulong sql_type); + int append_key_select_part(ulong sql_type, uint idx); + int append_minimum_select_part(ulong sql_type); + int append_hint_after_table_part(ulong sql_type); + void set_where_pos(ulong sql_type); + void set_where_to_pos(ulong sql_type); + int check_item_type(Item *item); + int append_values_connector_part(ulong sql_type); + int append_values_terminator_part(ulong sql_type); + int append_union_table_connector_part(ulong sql_type); + int append_union_table_terminator_part(ulong sql_type); + int append_key_column_values_part(const key_range *start_key, ulong sql_type); + int append_key_column_values_with_name_part(const key_range *start_key, + ulong sql_type); + int append_key_where_part(const key_range *start_key, + const key_range *end_key, ulong sql_type); + int append_key_where(spider_string *str, spider_string *str_part, + spider_string *str_part2, const key_range *start_key, + const key_range *end_key, ulong sql_type, + bool set_order); + int append_is_null_part(ulong sql_type, KEY_PART_INFO *key_part, + const key_range *key, const uchar **ptr, bool key_eq, + bool tgt_final); + int append_is_null(ulong sql_type, spider_string *str, + spider_string *str_part, spider_string *str_part2, + KEY_PART_INFO *key_part, const key_range *key, + const uchar **ptr, bool key_eq, bool tgt_final); + int append_where_terminator_part(ulong sql_type, bool set_order, + int key_count); + int append_match_where_part(ulong sql_type); + int append_condition_part(const char *alias, uint alias_length, + ulong sql_type, bool test_flg); + int append_match_select_part(ulong sql_type, const char *alias, + uint alias_length); #ifdef HANDLER_HAS_DIRECT_AGGREGATE - int append_sum_select_part( - ulong sql_type, - const char *alias, - uint alias_length - ); + int append_sum_select_part(ulong sql_type, const char *alias, + uint alias_length); #endif - void set_order_pos( - ulong sql_type - ); - void set_order_to_pos( - ulong sql_type - ); + void set_order_pos(ulong sql_type); + void set_order_to_pos(ulong sql_type); #ifdef HANDLER_HAS_DIRECT_AGGREGATE - int append_group_by_part( - const char *alias, - uint alias_length, - ulong sql_type - ); + int append_group_by_part(const char *alias, uint alias_length, + ulong sql_type); #endif - int append_key_order_for_merge_with_alias_part( - const char *alias, - uint alias_length, - ulong sql_type - ); - int append_key_order_for_direct_order_limit_with_alias_part( - const char *alias, - uint alias_length, - ulong sql_type - ); - int append_key_order_with_alias_part( - const char *alias, - uint alias_length, - ulong sql_type - ); - int append_limit_part( - longlong offset, - longlong limit, - ulong sql_type - ); - int reappend_limit_part( - longlong offset, - longlong limit, - ulong sql_type - ); - int append_select_lock_part( - ulong sql_type - ); - int append_union_all_start_part( - ulong sql_type - ); - int append_union_all_part( - ulong sql_type - ); - int append_union_all_end_part( - ulong sql_type - ); - int append_multi_range_cnt_part( - ulong sql_type, - uint multi_range_cnt, - bool with_comma - ); - int append_multi_range_cnt_with_name_part( - ulong sql_type, - uint multi_range_cnt - ); - int append_open_handler_part( - ulong sql_type, - uint handler_id, - SPIDER_CONN *conn, - int link_idx - ); - int append_open_handler( - spider_string *str, - uint handler_id, - SPIDER_CONN *conn, - int link_idx - ); - int append_close_handler_part( - ulong sql_type, - int link_idx - ); - int append_insert_terminator_part( - ulong sql_type - ); - int append_insert_values_part( - ulong sql_type - ); - int append_insert_values( - spider_string *str - ); - int append_into_part( - ulong sql_type - ); - void set_insert_to_pos( - ulong sql_type - ); - int append_from_part( - ulong sql_type, - int link_idx - ); - int append_delete_all_rows_part( - ulong sql_type - ); - int append_explain_select_part( - const key_range *start_key, - const key_range *end_key, - ulong sql_type, - int link_idx - ); - bool is_sole_projection_field( - uint16 field_index - ); - bool is_bulk_insert_exec_period( - bool bulk_end - ); - bool sql_is_filled_up( - ulong sql_type - ); - bool sql_is_empty( - ulong sql_type - ); + int append_key_order_for_merge_with_alias_part(const char *alias, + uint alias_length, + ulong sql_type); + int append_key_order_for_direct_order_limit_with_alias_part(const char *alias, + uint alias_length, + ulong sql_type); + int append_key_order_with_alias_part(const char *alias, uint alias_length, + ulong sql_type); + int append_limit_part(longlong offset, longlong limit, ulong sql_type); + int reappend_limit_part(longlong offset, longlong limit, ulong sql_type); + int append_select_lock_part(ulong sql_type); + int append_union_all_start_part(ulong sql_type); + int append_union_all_part(ulong sql_type); + int append_union_all_end_part(ulong sql_type); + int append_multi_range_cnt_part(ulong sql_type, uint multi_range_cnt, + bool with_comma); + int append_multi_range_cnt_with_name_part(ulong sql_type, + uint multi_range_cnt); + int append_open_handler_part(ulong sql_type, uint handler_id, + SPIDER_CONN *conn, int link_idx); + int append_open_handler(spider_string *str, uint handler_id, + SPIDER_CONN *conn, int link_idx); + int append_close_handler_part(ulong sql_type, int link_idx); + int append_insert_terminator_part(ulong sql_type); + int append_insert_values_part(ulong sql_type); + int append_insert_values(spider_string *str); + int append_into_part(ulong sql_type); + void set_insert_to_pos(ulong sql_type); + int append_from_part(ulong sql_type, int link_idx); + int append_delete_all_rows_part(ulong sql_type); + int append_explain_select_part(const key_range *start_key, + const key_range *end_key, ulong sql_type, + int link_idx); + bool is_sole_projection_field(uint16 field_index); + bool is_bulk_insert_exec_period(bool bulk_end); + bool sql_is_filled_up(ulong sql_type); + bool sql_is_empty(ulong sql_type); bool support_multi_split_read(); bool support_bulk_update(); int bulk_tmp_table_insert(); - int bulk_tmp_table_insert( - int link_idx - ); + int bulk_tmp_table_insert(int link_idx); int bulk_tmp_table_end_bulk_insert(); int bulk_tmp_table_rnd_init(); int bulk_tmp_table_rnd_next(); int bulk_tmp_table_rnd_end(); - bool need_copy_for_update( - int link_idx - ); + bool need_copy_for_update(int link_idx); bool bulk_tmp_table_created(); int mk_bulk_tmp_table_and_bulk_start(); void rm_bulk_tmp_table(); - int insert_lock_tables_list( - SPIDER_CONN *conn, - int link_idx - ); - int append_lock_tables_list( - SPIDER_CONN *conn, - int link_idx, - int *appended - ); - int realloc_sql( - ulong *realloced - ); - int reset_sql( - ulong sql_type - ); - int reset_keys( - ulong sql_type - ); - int reset_upds( - ulong sql_type - ); - int reset_strs( - ulong sql_type - ); - int reset_strs_pos( - ulong sql_type - ); - int push_back_upds( - SPIDER_HS_STRING_REF &info - ); - int request_buf_find( - int link_idx - ); - int request_buf_insert( - int link_idx - ); - int request_buf_update( - int link_idx - ); - int request_buf_delete( - int link_idx - ); - bool need_lock_before_set_sql_for_exec( - ulong sql_type - ); + int insert_lock_tables_list(SPIDER_CONN *conn, int link_idx); + int append_lock_tables_list(SPIDER_CONN *conn, int link_idx, int *appended); + int realloc_sql(ulong *realloced); + int reset_sql(ulong sql_type); + int reset_keys(ulong sql_type); + int reset_upds(ulong sql_type); + int reset_strs(ulong sql_type); + int reset_strs_pos(ulong sql_type); + int push_back_upds(SPIDER_HS_STRING_REF &info); + int request_buf_find(int link_idx); + int request_buf_insert(int link_idx); + int request_buf_update(int link_idx); + int request_buf_delete(int link_idx); + bool need_lock_before_set_sql_for_exec(ulong sql_type); #ifdef SPIDER_HAS_GROUP_BY_HANDLER - int set_sql_for_exec( - ulong sql_type, - int link_idx, - SPIDER_LINK_IDX_CHAIN *link_idx_chain - ); + int set_sql_for_exec(ulong sql_type, int link_idx, + SPIDER_LINK_IDX_CHAIN *link_idx_chain); #endif - int set_sql_for_exec( - ulong sql_type, - int link_idx - ); - int set_sql_for_exec( - spider_db_copy_table *tgt_ct, - ulong sql_type - ); - int execute_sql( - ulong sql_type, - SPIDER_CONN *conn, - int quick_mode, - int *need_mon - ); + int set_sql_for_exec(ulong sql_type, int link_idx); + int set_sql_for_exec(spider_db_copy_table *tgt_ct, ulong sql_type); + int execute_sql(ulong sql_type, SPIDER_CONN *conn, int quick_mode, + int *need_mon); int reset(); - int sts_mode_exchange( - int sts_mode - ); - int show_table_status( - int link_idx, - int sts_mode, - uint flag - ); - int crd_mode_exchange( - int crd_mode - ); - int show_index( - int link_idx, - int crd_mode - ); - int show_records( - int link_idx - ); - int show_last_insert_id( - int link_idx, - ulonglong &last_insert_id - ); - ha_rows explain_select( - const key_range *start_key, - const key_range *end_key, - int link_idx - ); - int lock_tables( - int link_idx - ); - int unlock_tables( - int link_idx - ); - int disable_keys( - SPIDER_CONN *conn, - int link_idx - ); - int enable_keys( - SPIDER_CONN *conn, - int link_idx - ); - int check_table( - SPIDER_CONN *conn, - int link_idx, - HA_CHECK_OPT* check_opt - ); - int repair_table( - SPIDER_CONN *conn, - int link_idx, - HA_CHECK_OPT* check_opt - ); - int analyze_table( - SPIDER_CONN *conn, - int link_idx - ); - int optimize_table( - SPIDER_CONN *conn, - int link_idx - ); - int flush_tables( - SPIDER_CONN *conn, - int link_idx, - bool lock - ); - int flush_logs( - SPIDER_CONN *conn, - int link_idx - ); - int insert_opened_handler( - SPIDER_CONN *conn, - int link_idx - ); - int delete_opened_handler( - SPIDER_CONN *conn, - int link_idx - ); - int sync_from_clone_source( - spider_db_handler *dbton_hdl - ); - bool support_use_handler( - int use_handler - ); + int sts_mode_exchange(int sts_mode); + int show_table_status(int link_idx, int sts_mode, uint flag); + int crd_mode_exchange(int crd_mode); + int show_index(int link_idx, int crd_mode); + int show_records(int link_idx); + int show_last_insert_id(int link_idx, ulonglong &last_insert_id); + ha_rows explain_select(const key_range *start_key, const key_range *end_key, + int link_idx); + int lock_tables(int link_idx); + int unlock_tables(int link_idx); + int disable_keys(SPIDER_CONN *conn, int link_idx); + int enable_keys(SPIDER_CONN *conn, int link_idx); + int check_table(SPIDER_CONN *conn, int link_idx, HA_CHECK_OPT *check_opt); + int repair_table(SPIDER_CONN *conn, int link_idx, HA_CHECK_OPT *check_opt); + int analyze_table(SPIDER_CONN *conn, int link_idx); + int optimize_table(SPIDER_CONN *conn, int link_idx); + int flush_tables(SPIDER_CONN *conn, int link_idx, bool lock); + int flush_logs(SPIDER_CONN *conn, int link_idx); + int insert_opened_handler(SPIDER_CONN *conn, int link_idx); + int delete_opened_handler(SPIDER_CONN *conn, int link_idx); + int sync_from_clone_source(spider_db_handler *dbton_hdl); + bool support_use_handler(int use_handler); void minimum_select_bitmap_create(); - bool minimum_select_bit_is_set( - uint field_index - ); - void copy_minimum_select_bitmap( - uchar *bitmap - ); + bool minimum_select_bit_is_set(uint field_index); + void copy_minimum_select_bitmap(uchar *bitmap); int init_union_table_name_pos(); int set_union_table_name_pos(); - int reset_union_table_name( - spider_string *str, - int link_idx, - ulong sql_type - ); + int reset_union_table_name(spider_string *str, int link_idx, ulong sql_type); #ifdef SPIDER_HAS_GROUP_BY_HANDLER - int append_from_and_tables_part( - spider_fields *fields, - ulong sql_type - ); - int reappend_tables_part( - spider_fields *fields, - ulong sql_type - ); - int append_where_part( - ulong sql_type - ); - int append_having_part( - ulong sql_type - ); - int append_item_type_part( - Item *item, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields, - ulong sql_type - ); - int append_list_item_select_part( - List<Item> *select, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields, - ulong sql_type - ); - int append_group_by_part( - ORDER *order, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields, - ulong sql_type - ); - int append_order_by_part( - ORDER *order, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields, - ulong sql_type - ); + int append_from_and_tables_part(spider_fields *fields, ulong sql_type); + int reappend_tables_part(spider_fields *fields, ulong sql_type); + int append_where_part(ulong sql_type); + int append_having_part(ulong sql_type); + int append_item_type_part(Item *item, const char *alias, uint alias_length, + bool use_fields, spider_fields *fields, + ulong sql_type); + int append_list_item_select_part(List<Item> *select, const char *alias, + uint alias_length, bool use_fields, + spider_fields *fields, ulong sql_type); + int append_group_by_part(ORDER *order, const char *alias, uint alias_length, + bool use_fields, spider_fields *fields, + ulong sql_type); + int append_order_by_part(ORDER *order, const char *alias, uint alias_length, + bool use_fields, spider_fields *fields, + ulong sql_type); #endif }; diff --git a/storage/spider/spd_db_include.h b/storage/spider/spd_db_include.h index 886ffed3b4b..030fcb81b5b 100644 --- a/storage/spider/spd_db_include.h +++ b/storage/spider/spd_db_include.h @@ -12,7 +12,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA +*/ #include "hs_compat.h" #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) @@ -166,7 +167,9 @@ typedef st_spider_result SPIDER_RESULT; #define SPIDER_SQL_MBR_DISJOINT_LEN (sizeof(SPIDER_SQL_MBR_DISJOINT_STR) - 1) #define SPIDER_SQL_NOT_BETWEEN_STR "not between" #define SPIDER_SQL_NOT_BETWEEN_LEN (sizeof(SPIDER_SQL_NOT_BETWEEN_STR) - 1) -#define SPIDER_SQL_TO_FLOAT_STR "/* create function to_float(a decimal(20,6)) returns float return a */ to_float(" +#define SPIDER_SQL_TO_FLOAT_STR \ + "/* create function to_float(a decimal(20,6)) returns float return a */ " \ + "to_float(" #define SPIDER_SQL_TO_FLOAT_LEN (sizeof(SPIDER_SQL_TO_FLOAT_STR) - 1) #define SPIDER_SQL_IN_STR "in(" #define SPIDER_SQL_IN_LEN (sizeof(SPIDER_SQL_IN_STR) - 1) @@ -207,7 +210,8 @@ typedef st_spider_result SPIDER_RESULT; #define SPIDER_SQL_CREATE_TABLE_STR "create table " #define SPIDER_SQL_CREATE_TABLE_LEN (sizeof(SPIDER_SQL_CREATE_TABLE_STR) - 1) #define SPIDER_SQL_DEFAULT_CHARSET_STR " default charset " -#define SPIDER_SQL_DEFAULT_CHARSET_LEN (sizeof(SPIDER_SQL_DEFAULT_CHARSET_STR) - 1) +#define SPIDER_SQL_DEFAULT_CHARSET_LEN \ + (sizeof(SPIDER_SQL_DEFAULT_CHARSET_STR) - 1) #define SPIDER_SQL_CHARACTER_SET_STR " character set " #define SPIDER_SQL_CHARACTER_SET_LEN (sizeof(SPIDER_SQL_CHARACTER_SET_STR) - 1) #define SPIDER_SQL_COLLATE_STR " collate " @@ -217,12 +221,14 @@ typedef st_spider_result SPIDER_RESULT; #define SPIDER_SQL_CONNECTION_STR " connection " #define SPIDER_SQL_CONNECTION_LEN (sizeof(SPIDER_SQL_CONNECTION_STR) - 1) #define SPIDER_SQL_LCL_NAME_QUOTE_STR "`" -#define SPIDER_SQL_LCL_NAME_QUOTE_LEN (sizeof(SPIDER_SQL_LCL_NAME_QUOTE_STR) - 1) +#define SPIDER_SQL_LCL_NAME_QUOTE_LEN \ + (sizeof(SPIDER_SQL_LCL_NAME_QUOTE_STR) - 1) #define SPIDER_SQL_MIN_STR "min" #define SPIDER_SQL_MIN_LEN (sizeof(SPIDER_SQL_MIN_STR) - 1) #define SPIDER_SQL_LOP_CHK_PRM_PRF_STR "spider_lc_" -#define SPIDER_SQL_LOP_CHK_PRM_PRF_LEN (sizeof(SPIDER_SQL_LOP_CHK_PRM_PRF_STR) - 1) +#define SPIDER_SQL_LOP_CHK_PRM_PRF_LEN \ + (sizeof(SPIDER_SQL_LOP_CHK_PRM_PRF_STR) - 1) #define SPIDER_CONN_KIND_MYSQL (1 << 0) #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) @@ -257,11 +263,7 @@ enum spider_bulk_upd_start { SPD_BU_START_BY_BULK_INIT }; -enum spider_index_rnd_init { - SPD_NONE, - SPD_INDEX, - SPD_RND -}; +enum spider_index_rnd_init { SPD_NONE, SPD_INDEX, SPD_RND }; struct st_spider_ft_info; struct st_spider_result; @@ -271,9 +273,8 @@ class ha_spider; class spider_db_copy_table; class spider_db_handler; -class spider_string -{ -public: +class spider_string { + public: bool mem_calc_inited; String str; uint id; @@ -284,301 +285,105 @@ public: spider_string *next; spider_string(); - spider_string( - uint32 length_arg - ); - spider_string( - const char *str, - CHARSET_INFO *cs - ); - spider_string( - const char *str, - uint32 len, - CHARSET_INFO *cs - ); - spider_string( - char *str, - uint32 len, - CHARSET_INFO *cs - ); - spider_string( - const String &str - ); + spider_string(uint32 length_arg); + spider_string(const char *str, CHARSET_INFO *cs); + spider_string(const char *str, uint32 len, CHARSET_INFO *cs); + spider_string(char *str, uint32 len, CHARSET_INFO *cs); + spider_string(const String &str); ~spider_string(); - void init_mem_calc( - uint id, - const char *func_name, - const char *file_name, - ulong line_no - ); + void init_mem_calc(uint id, const char *func_name, const char *file_name, + ulong line_no); void mem_calc(); String *get_str(); - void set_charset( - CHARSET_INFO *charset_arg - ); + void set_charset(CHARSET_INFO *charset_arg); CHARSET_INFO *charset() const; uint32 length() const; uint32 alloced_length() const; - char &operator [] ( - uint32 i - ) const; - void length( - uint32 len - ); + char &operator[](uint32 i) const; + void length(uint32 len); bool is_empty() const; const char *ptr() const; char *c_ptr(); char *c_ptr_quick(); char *c_ptr_safe(); LEX_STRING lex_string() const; - void set( - String &str, - uint32 offset, - uint32 arg_length - ); - void set( - char *str, - uint32 arg_length, - CHARSET_INFO *cs - ); - void set( - const char *str, - uint32 arg_length, - CHARSET_INFO *cs - ); - bool set_ascii( - const char *str, - uint32 arg_length - ); - bool set_int( - longlong num, - bool unsigned_flag, - CHARSET_INFO *cs - ); - bool set( - longlong num, - CHARSET_INFO *cs - ); - bool set( - ulonglong num, - CHARSET_INFO *cs - ); - bool set_real( - double num, - uint decimals, - CHARSET_INFO *cs - ); + void set(String &str, uint32 offset, uint32 arg_length); + void set(char *str, uint32 arg_length, CHARSET_INFO *cs); + void set(const char *str, uint32 arg_length, CHARSET_INFO *cs); + bool set_ascii(const char *str, uint32 arg_length); + bool set_int(longlong num, bool unsigned_flag, CHARSET_INFO *cs); + bool set(longlong num, CHARSET_INFO *cs); + bool set(ulonglong num, CHARSET_INFO *cs); + bool set_real(double num, uint decimals, CHARSET_INFO *cs); void chop(); void free(); - bool alloc( - uint32 arg_length - ); - bool real_alloc( - uint32 arg_length - ); - bool realloc( - uint32 arg_length - ); - void shrink( - uint32 arg_length - ); + bool alloc(uint32 arg_length); + bool real_alloc(uint32 arg_length); + bool realloc(uint32 arg_length); + void shrink(uint32 arg_length); bool is_alloced(); - spider_string& operator = ( - const String &s - ); + spider_string &operator=(const String &s); bool copy(); - bool copy( - const spider_string &s - ); - bool copy( - const String &s - ); - bool copy( - const char *s, - uint32 arg_length, - CHARSET_INFO *cs - ); - bool needs_conversion( - uint32 arg_length, - CHARSET_INFO *cs_from, - CHARSET_INFO *cs_to, - uint32 *offset - ); - bool copy_aligned( - const char *s, - uint32 arg_length, - uint32 offset, - CHARSET_INFO *cs - ); - bool set_or_copy_aligned( - const char *s, - uint32 arg_length, - CHARSET_INFO *cs - ); - bool copy( - const char *s, - uint32 arg_length, - CHARSET_INFO *csfrom, - CHARSET_INFO *csto, - uint *errors - ); - bool append( - const spider_string &s - ); - bool append( - const String &s - ); - bool append( - const char *s - ); - bool append( - LEX_STRING *ls - ); - bool append( - const char *s, - uint32 arg_length - ); - bool append( - const char *s, - uint32 arg_length, - CHARSET_INFO *cs - ); - bool append_ulonglong( - ulonglong val - ); - bool append( - IO_CACHE *file, - uint32 arg_length - ); - bool append_with_prefill( - const char *s, - uint32 arg_length, - uint32 full_length, - char fill_char - ); - int strstr( - const String &search, - uint32 offset = 0 - ); - int strrstr( - const String &search, - uint32 offset = 0 - ); - bool replace( - uint32 offset, - uint32 arg_length, - const char *to, - uint32 length - ); - bool replace( - uint32 offset, - uint32 arg_length, - const String &to - ); - inline bool append( - char chr - ); - bool fill( - uint32 max_length, - char fill - ); + bool copy(const spider_string &s); + bool copy(const String &s); + bool copy(const char *s, uint32 arg_length, CHARSET_INFO *cs); + bool needs_conversion(uint32 arg_length, CHARSET_INFO *cs_from, + CHARSET_INFO *cs_to, uint32 *offset); + bool copy_aligned(const char *s, uint32 arg_length, uint32 offset, + CHARSET_INFO *cs); + bool set_or_copy_aligned(const char *s, uint32 arg_length, CHARSET_INFO *cs); + bool copy(const char *s, uint32 arg_length, CHARSET_INFO *csfrom, + CHARSET_INFO *csto, uint *errors); + bool append(const spider_string &s); + bool append(const String &s); + bool append(const char *s); + bool append(LEX_STRING *ls); + bool append(const char *s, uint32 arg_length); + bool append(const char *s, uint32 arg_length, CHARSET_INFO *cs); + bool append_ulonglong(ulonglong val); + bool append(IO_CACHE *file, uint32 arg_length); + bool append_with_prefill(const char *s, uint32 arg_length, uint32 full_length, + char fill_char); + int strstr(const String &search, uint32 offset = 0); + int strrstr(const String &search, uint32 offset = 0); + bool replace(uint32 offset, uint32 arg_length, const char *to, uint32 length); + bool replace(uint32 offset, uint32 arg_length, const String &to); + inline bool append(char chr); + bool fill(uint32 max_length, char fill); void strip_sp(); uint32 numchars(); - int charpos( - int i, - uint32 offset=0 - ); - int reserve( - uint32 space_needed - ); - int reserve( - uint32 space_needed, - uint32 grow_by - ); - void q_append( - const char c - ); - void q_append( - const uint32 n - ); - void q_append( - double d - ); - void q_append( - double *d - ); - void q_append( - const char *data, - uint32 data_len - ); - void write_at_position( - int position, - uint32 value - ); - void qs_append( - const char *str, - uint32 len - ); - void qs_append( - double d - ); - void qs_append( - double *d - ); - void qs_append( - const char c - ); - void qs_append( - int i - ); - void qs_append( - uint i - ); - char *prep_append( - uint32 arg_length, - uint32 step_alloc - ); - bool append( - const char *s, - uint32 arg_length, - uint32 step_alloc - ); - void append_escape_string( - const char *st, - uint len - ); - void append_escape_string( - const char *st, - uint len, - CHARSET_INFO *cs - ); - bool append_for_single_quote( - const char *st, - uint len - ); - bool append_for_single_quote( - const String *s - ); - bool append_for_single_quote( - const char *st - ); - void print( - String *print - ); - void swap( - spider_string &s - ); - bool uses_buffer_owned_by( - const String *s - ) const; + int charpos(int i, uint32 offset = 0); + int reserve(uint32 space_needed); + int reserve(uint32 space_needed, uint32 grow_by); + void q_append(const char c); + void q_append(const uint32 n); + void q_append(double d); + void q_append(double *d); + void q_append(const char *data, uint32 data_len); + void write_at_position(int position, uint32 value); + void qs_append(const char *str, uint32 len); + void qs_append(double d); + void qs_append(double *d); + void qs_append(const char c); + void qs_append(int i); + void qs_append(uint i); + char *prep_append(uint32 arg_length, uint32 step_alloc); + bool append(const char *s, uint32 arg_length, uint32 step_alloc); + void append_escape_string(const char *st, uint len); + void append_escape_string(const char *st, uint len, CHARSET_INFO *cs); + bool append_for_single_quote(const char *st, uint len); + bool append_for_single_quote(const String *s); + bool append_for_single_quote(const char *st); + void print(String *print); + void swap(spider_string &s); + bool uses_buffer_owned_by(const String *s) const; bool is_ascii() const; }; typedef struct spider_table_link_idx_holder SPIDER_TABLE_LINK_IDX_HOLDER; typedef struct spider_table_holder SPIDER_TABLE_HOLDER; -typedef struct spider_link_idx_holder -{ +typedef struct spider_link_idx_holder { spider_table_link_idx_holder *table_link_idx_holder; int link_idx; int link_status; @@ -586,8 +391,7 @@ typedef struct spider_link_idx_holder spider_link_idx_holder *next; } SPIDER_LINK_IDX_HOLDER; -typedef struct spider_link_idx_chain -{ +typedef struct spider_link_idx_chain { SPIDER_CONN *conn; spider_link_idx_holder *link_idx_holder; spider_link_idx_holder *current_link_idx_holder; @@ -595,8 +399,7 @@ typedef struct spider_link_idx_chain spider_link_idx_chain *next; } SPIDER_LINK_IDX_CHAIN; -typedef struct spider_table_link_idx_holder -{ +typedef struct spider_table_link_idx_holder { spider_table_holder *table_holder; spider_link_idx_holder *first_link_idx_holder; spider_link_idx_holder *last_link_idx_holder; @@ -604,8 +407,7 @@ typedef struct spider_table_link_idx_holder uint link_idx_holder_count; } SPIDER_TABLE_LINK_IDX_HOLDER; -typedef struct spider_conn_holder -{ +typedef struct spider_conn_holder { SPIDER_CONN *conn; spider_table_link_idx_holder *table_link_idx_holder; uint link_idx_holder_count_max; @@ -615,29 +417,25 @@ typedef struct spider_conn_holder spider_conn_holder *next; } SPIDER_CONN_HOLDER; -typedef struct spider_table_holder -{ +typedef struct spider_table_holder { TABLE *table; ha_spider *spider; spider_string *alias; } SPIDER_TABLE_HOLDER; -typedef struct spider_field_holder -{ +typedef struct spider_field_holder { Field *field; ha_spider *spider; spider_string *alias; spider_field_holder *next; } SPIDER_FIELD_HOLDER; -typedef struct spider_field_chain -{ +typedef struct spider_field_chain { spider_field_holder *field_holder; spider_field_chain *next; } SPIDER_FIELD_CHAIN; -class spider_fields -{ +class spider_fields { uint dbton_count; uint current_dbton_num; uint dbton_ids[SPIDER_DBTON_SIZE]; @@ -659,69 +457,45 @@ class spider_fields SPIDER_FIELD_CHAIN *current_field_chain; Field **first_field_ptr; Field **current_field_ptr; -public: + + public: spider_fields(); virtual ~spider_fields(); - void add_dbton_id( - uint dbton_id_arg - ); + void add_dbton_id(uint dbton_id_arg); void set_pos_to_first_dbton_id(); uint get_next_dbton_id(); - int make_link_idx_chain( - int link_status - ); + int make_link_idx_chain(int link_status); SPIDER_LINK_IDX_CHAIN *create_link_idx_chain(); void set_pos_to_first_link_idx_chain(); SPIDER_LINK_IDX_CHAIN *get_next_link_idx_chain(); SPIDER_LINK_IDX_HOLDER *get_dup_link_idx_holder( - SPIDER_TABLE_LINK_IDX_HOLDER *table_link_idx_holder, - SPIDER_LINK_IDX_HOLDER *current - ); + SPIDER_TABLE_LINK_IDX_HOLDER *table_link_idx_holder, + SPIDER_LINK_IDX_HOLDER *current); bool check_link_ok_chain(); - bool is_first_link_ok_chain( - SPIDER_LINK_IDX_CHAIN *link_idx_chain_arg - ); + bool is_first_link_ok_chain(SPIDER_LINK_IDX_CHAIN *link_idx_chain_arg); int get_ok_link_idx(); void set_first_link_idx(); - int add_link_idx( - SPIDER_CONN_HOLDER *conn_holder_arg, - ha_spider *spider_arg, - int link_idx - ); + int add_link_idx(SPIDER_CONN_HOLDER *conn_holder_arg, ha_spider *spider_arg, + int link_idx); SPIDER_LINK_IDX_HOLDER *create_link_idx_holder(); void set_pos_to_first_table_on_link_idx_chain( - SPIDER_LINK_IDX_CHAIN *link_idx_chain_arg - ); + SPIDER_LINK_IDX_CHAIN *link_idx_chain_arg); SPIDER_LINK_IDX_HOLDER *get_next_table_on_link_idx_chain( - SPIDER_LINK_IDX_CHAIN *link_idx_chain_arg - ); - SPIDER_CONN_HOLDER *add_conn( - SPIDER_CONN *conn_arg, - long access_balance - ); + SPIDER_LINK_IDX_CHAIN *link_idx_chain_arg); + SPIDER_CONN_HOLDER *add_conn(SPIDER_CONN *conn_arg, long access_balance); SPIDER_CONN_HOLDER *create_conn_holder(); void set_pos_to_first_conn_holder(); SPIDER_CONN_HOLDER *get_next_conn_holder(); bool has_conn_holder(); void clear_conn_holder_from_conn(); - bool check_conn_same_conn( - SPIDER_CONN *conn_arg - ); + bool check_conn_same_conn(SPIDER_CONN *conn_arg); bool remove_conn_if_not_checked(); - void check_support_dbton( - uchar *dbton_bitmap - ); + void check_support_dbton(uchar *dbton_bitmap); void choose_a_conn(); - void free_conn_holder( - SPIDER_CONN_HOLDER *conn_holder_arg - ); - SPIDER_TABLE_HOLDER *add_table( - ha_spider *spider_arg - ); + void free_conn_holder(SPIDER_CONN_HOLDER *conn_holder_arg); + SPIDER_TABLE_HOLDER *add_table(ha_spider *spider_arg); bool all_query_fields_are_query_table_members(); - int create_table_holder( - uint table_count_arg - ); + int create_table_holder(uint table_count_arg); void set_pos_to_first_table_holder(); SPIDER_TABLE_HOLDER *get_next_table_holder(); SPIDER_TABLE_HOLDER *get_table_holder(TABLE *table); @@ -735,9 +509,7 @@ public: SPIDER_FIELD_CHAIN *get_next_field_chain(); void set_field_ptr(Field **field_arg); Field **get_next_field_ptr(); - int ping_table_mon_from_table( - SPIDER_LINK_IDX_CHAIN *link_idx_chain - ); + int ping_table_mon_from_table(SPIDER_LINK_IDX_CHAIN *link_idx_chain); }; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) @@ -745,213 +517,126 @@ public: #define SPIDER_HS_STRING_REF dena::string_ref #ifndef HANDLERSOCKET_MYSQL_UTIL #define SPIDER_HS_VECTOR std::vector -class spider_db_hs_string_ref_buffer -{ +class spider_db_hs_string_ref_buffer { SPIDER_HS_VECTOR<SPIDER_HS_STRING_REF> hs_conds; -public: + + public: spider_db_hs_string_ref_buffer(); ~spider_db_hs_string_ref_buffer(); int init(); void clear(); - int push_back( - SPIDER_HS_STRING_REF &cond - ); + int push_back(SPIDER_HS_STRING_REF &cond); SPIDER_HS_STRING_REF *ptr(); uint size(); }; #else -class spider_db_hs_string_ref_buffer -{ - bool hs_da_init; - DYNAMIC_ARRAY hs_conds; - uint hs_conds_id; - const char *hs_conds_func_name; - const char *hs_conds_file_name; - ulong hs_conds_line_no; -public: +class spider_db_hs_string_ref_buffer { + bool hs_da_init; + DYNAMIC_ARRAY hs_conds; + uint hs_conds_id; + const char *hs_conds_func_name; + const char *hs_conds_file_name; + ulong hs_conds_line_no; + + public: spider_db_hs_string_ref_buffer(); ~spider_db_hs_string_ref_buffer(); int init(); void clear(); - int push_back( - SPIDER_HS_STRING_REF &cond - ); + int push_back(SPIDER_HS_STRING_REF &cond); SPIDER_HS_STRING_REF *ptr(); uint size(); }; #endif -class spider_db_hs_str_buffer -{ - bool hs_da_init; - DYNAMIC_ARRAY hs_conds; - uint hs_conds_id; - const char *hs_conds_func_name; - const char *hs_conds_file_name; - ulong hs_conds_line_no; -public: +class spider_db_hs_str_buffer { + bool hs_da_init; + DYNAMIC_ARRAY hs_conds; + uint hs_conds_id; + const char *hs_conds_func_name; + const char *hs_conds_file_name; + ulong hs_conds_line_no; + + public: spider_db_hs_str_buffer(); ~spider_db_hs_str_buffer(); int init(); void clear(); - spider_string *add( - uint *strs_pos, - const char *str, - uint str_len - ); + spider_string *add(uint *strs_pos, const char *str, uint str_len); }; #define SPIDER_DB_HS_STRING_REF_BUFFER spider_db_hs_string_ref_buffer #define SPIDER_DB_HS_STR_BUFFER spider_db_hs_str_buffer #endif -struct st_spider_db_request_key -{ - ulonglong spider_thread_id; - query_id_t query_id; - void *handler; - ulonglong request_id; +struct st_spider_db_request_key { + ulonglong spider_thread_id; + query_id_t query_id; + void *handler; + ulonglong request_id; st_spider_db_request_key *next; }; -class spider_db_util -{ -public: +class spider_db_util { + public: uint dbton_id; spider_db_util() {} virtual ~spider_db_util() {} - virtual int append_name( - spider_string *str, - const char *name, - uint name_length - ) = 0; - virtual int append_name_with_charset( - spider_string *str, - const char *name, - uint name_length, - CHARSET_INFO *name_charset - ) = 0; - virtual int append_escaped_name( - spider_string *str, - const char *name, - uint name_length - ) = 0; - virtual int append_escaped_name_with_charset( - spider_string *str, - const char *name, - uint name_length, - CHARSET_INFO *name_charset - ) = 0; - virtual bool is_name_quote( - const char head_code - ) = 0; - virtual int append_escaped_name_quote( - spider_string *str - ) = 0; - virtual int append_column_value( - ha_spider *spider, - spider_string *str, - Field *field, - const uchar *new_ptr, - CHARSET_INFO *access_charset - ) = 0; - virtual int append_trx_isolation( - spider_string *str, - int trx_isolation - ) = 0; - virtual int append_autocommit( - spider_string *str, - bool autocommit - ) = 0; - virtual int append_sql_log_off( - spider_string *str, - bool sql_log_off - ) = 0; - virtual int append_wait_timeout( - spider_string *str, - int wait_timeout - ) = 0; - virtual int append_sql_mode( - spider_string *str, - sql_mode_t sql_mode - ) = 0; - virtual int append_time_zone( - spider_string *str, - Time_zone *time_zone - ) = 0; - virtual int append_loop_check( - spider_string *str, - SPIDER_CONN *conn - ); - virtual int append_start_transaction( - spider_string *str - ) = 0; - virtual int append_xa_start( - spider_string *str, - XID *xid - ) = 0; - virtual int append_lock_table_head( - spider_string *str - ) = 0; - virtual int append_lock_table_body( - spider_string *str, - const char *db_name, - uint db_name_length, - CHARSET_INFO *db_name_charset, - const char *table_name, - uint table_name_length, - CHARSET_INFO *table_name_charset, - int lock_type - ) = 0; - virtual int append_lock_table_tail( - spider_string *str - ) = 0; - virtual int append_unlock_table( - spider_string *str - ) = 0; - virtual int open_item_func( - Item_func *item_func, - ha_spider *spider, - spider_string *str, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields - ) = 0; + virtual int append_name(spider_string *str, const char *name, + uint name_length) = 0; + virtual int append_name_with_charset(spider_string *str, const char *name, + uint name_length, + CHARSET_INFO *name_charset) = 0; + virtual int append_escaped_name(spider_string *str, const char *name, + uint name_length) = 0; + virtual int append_escaped_name_with_charset(spider_string *str, + const char *name, + uint name_length, + CHARSET_INFO *name_charset) = 0; + virtual bool is_name_quote(const char head_code) = 0; + virtual int append_escaped_name_quote(spider_string *str) = 0; + virtual int append_column_value(ha_spider *spider, spider_string *str, + Field *field, const uchar *new_ptr, + CHARSET_INFO *access_charset) = 0; + virtual int append_trx_isolation(spider_string *str, int trx_isolation) = 0; + virtual int append_autocommit(spider_string *str, bool autocommit) = 0; + virtual int append_sql_log_off(spider_string *str, bool sql_log_off) = 0; + virtual int append_wait_timeout(spider_string *str, int wait_timeout) = 0; + virtual int append_sql_mode(spider_string *str, sql_mode_t sql_mode) = 0; + virtual int append_time_zone(spider_string *str, Time_zone *time_zone) = 0; + virtual int append_loop_check(spider_string *str, SPIDER_CONN *conn); + virtual int append_start_transaction(spider_string *str) = 0; + virtual int append_xa_start(spider_string *str, XID *xid) = 0; + virtual int append_lock_table_head(spider_string *str) = 0; + virtual int append_lock_table_body(spider_string *str, const char *db_name, + uint db_name_length, + CHARSET_INFO *db_name_charset, + const char *table_name, + uint table_name_length, + CHARSET_INFO *table_name_charset, + int lock_type) = 0; + virtual int append_lock_table_tail(spider_string *str) = 0; + virtual int append_unlock_table(spider_string *str) = 0; + virtual int open_item_func(Item_func *item_func, ha_spider *spider, + spider_string *str, const char *alias, + uint alias_length, bool use_fields, + spider_fields *fields) = 0; #ifdef HANDLER_HAS_DIRECT_AGGREGATE - virtual int open_item_sum_func( - Item_sum *item_sum, - ha_spider *spider, - spider_string *str, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields - ) = 0; + virtual int open_item_sum_func(Item_sum *item_sum, ha_spider *spider, + spider_string *str, const char *alias, + uint alias_length, bool use_fields, + spider_fields *fields) = 0; #endif - virtual int append_escaped_util( - spider_string *to, - String *from - ) = 0; + virtual int append_escaped_util(spider_string *to, String *from) = 0; #ifdef SPIDER_HAS_GROUP_BY_HANDLER - virtual int append_from_and_tables( - ha_spider *spider, - spider_fields *fields, - spider_string *str, - TABLE_LIST *table_list, - uint table_count - ) = 0; - virtual int reappend_tables( - spider_fields *fields, - SPIDER_LINK_IDX_CHAIN *link_idx_chain, - spider_string *str - ) = 0; - virtual int append_where( - spider_string *str - ) = 0; - virtual int append_having( - spider_string *str - ) = 0; + virtual int append_from_and_tables(ha_spider *spider, spider_fields *fields, + spider_string *str, TABLE_LIST *table_list, + uint table_count) = 0; + virtual int reappend_tables(spider_fields *fields, + SPIDER_LINK_IDX_CHAIN *link_idx_chain, + spider_string *str) = 0; + virtual int append_where(spider_string *str) = 0; + virtual int append_having(spider_string *str) = 0; #endif virtual bool tables_on_different_db_are_joinable(); virtual bool socket_has_default_value(); @@ -963,57 +648,39 @@ public: virtual uint limit_mode(); }; -class spider_db_row -{ -public: +class spider_db_row { + public: uint dbton_id; SPIDER_DB_ROW *next_pos; spider_db_row(uint in_dbton_id) : dbton_id(in_dbton_id), next_pos(NULL) {} virtual ~spider_db_row() {} - virtual int store_to_field( - Field *field, - CHARSET_INFO *access_charset - ) = 0; - virtual int append_to_str( - spider_string *str - ) = 0; - virtual int append_escaped_to_str( - spider_string *str, - uint dbton_id - ) = 0; + virtual int store_to_field(Field *field, CHARSET_INFO *access_charset) = 0; + virtual int append_to_str(spider_string *str) = 0; + virtual int append_escaped_to_str(spider_string *str, uint dbton_id) = 0; virtual void first() = 0; virtual void next() = 0; virtual bool is_null() = 0; virtual int val_int() = 0; virtual double val_real() = 0; - virtual my_decimal *val_decimal( - my_decimal *decimal_value, - CHARSET_INFO *access_charset - ) = 0; + virtual my_decimal *val_decimal(my_decimal *decimal_value, + CHARSET_INFO *access_charset) = 0; virtual SPIDER_DB_ROW *clone() = 0; - virtual int store_to_tmp_table( - TABLE *tmp_table, - spider_string *str - ) = 0; + virtual int store_to_tmp_table(TABLE *tmp_table, spider_string *str) = 0; virtual uint get_byte_size() = 0; }; -class spider_db_result_buffer -{ -public: +class spider_db_result_buffer { + public: spider_db_result_buffer() {} virtual ~spider_db_result_buffer() {} virtual void clear() = 0; - virtual bool check_size( - longlong size - ) = 0; + virtual bool check_size(longlong size) = 0; }; -class spider_db_result -{ -public: +class spider_db_result { + public: SPIDER_DB_CONN *db_conn; - uint dbton_id; + uint dbton_id; spider_db_result(SPIDER_DB_CONN *in_db_conn); virtual ~spider_db_result() {} virtual void set_limit(longlong value) {} @@ -1022,329 +689,181 @@ public: virtual SPIDER_DB_ROW *current_row() = 0; virtual SPIDER_DB_ROW *fetch_row() = 0; virtual SPIDER_DB_ROW *fetch_row_from_result_buffer( - spider_db_result_buffer *spider_res_buf - ) = 0; - virtual SPIDER_DB_ROW *fetch_row_from_tmp_table( - TABLE *tmp_table - ) = 0; - virtual int fetch_table_status( - int mode, - ha_statistics &stat - ) = 0; - virtual int fetch_table_records( - int mode, - ha_rows &records - ) = 0; + spider_db_result_buffer *spider_res_buf) = 0; + virtual SPIDER_DB_ROW *fetch_row_from_tmp_table(TABLE *tmp_table) = 0; + virtual int fetch_table_status(int mode, ha_statistics &stat) = 0; + virtual int fetch_table_records(int mode, ha_rows &records) = 0; #ifdef HA_HAS_CHECKSUM_EXTENDED - virtual int fetch_table_checksum( - ha_spider *spider - ); + virtual int fetch_table_checksum(ha_spider *spider); #endif - virtual int fetch_table_cardinality( - int mode, - TABLE *table, - longlong *cardinality, - uchar *cardinality_upd, - int bitmap_size - ) = 0; - virtual int fetch_table_mon_status( - int &status - ) = 0; + virtual int fetch_table_cardinality(int mode, TABLE *table, + longlong *cardinality, + uchar *cardinality_upd, + int bitmap_size) = 0; + virtual int fetch_table_mon_status(int &status) = 0; virtual longlong num_rows() = 0; virtual uint num_fields() = 0; - virtual void move_to_pos( - longlong pos - ) = 0; + virtual void move_to_pos(longlong pos) = 0; virtual int get_errno() = 0; #ifdef SPIDER_HAS_DISCOVER_TABLE_STRUCTURE virtual int fetch_columns_for_discover_table_structure( - spider_string *str, - CHARSET_INFO *access_charset - ) = 0; + spider_string *str, CHARSET_INFO *access_charset) = 0; virtual int fetch_index_for_discover_table_structure( - spider_string *str, - CHARSET_INFO *access_charset - ) = 0; + spider_string *str, CHARSET_INFO *access_charset) = 0; virtual int fetch_table_for_discover_table_structure( - spider_string *str, - SPIDER_SHARE *spider_share, - CHARSET_INFO *access_charset - ) = 0; + spider_string *str, SPIDER_SHARE *spider_share, + CHARSET_INFO *access_charset) = 0; #endif virtual uint limit_mode(); }; -class spider_db_conn -{ -public: - SPIDER_CONN *conn; - uint dbton_id; - spider_db_conn( - SPIDER_CONN *in_conn - ); +class spider_db_conn { + public: + SPIDER_CONN *conn; + uint dbton_id; + spider_db_conn(SPIDER_CONN *in_conn); virtual ~spider_db_conn() {} virtual int init() = 0; virtual void set_limit(longlong value) {} virtual bool is_connected() = 0; virtual void bg_connect() = 0; - virtual int connect( - char *tgt_host, - char *tgt_username, - char *tgt_password, - long tgt_port, - char *tgt_socket, - char *server_name, - int connect_retry_count, - longlong connect_retry_interval - ) = 0; + virtual int connect(char *tgt_host, char *tgt_username, char *tgt_password, + long tgt_port, char *tgt_socket, char *server_name, + int connect_retry_count, + longlong connect_retry_interval) = 0; virtual int ping() = 0; virtual void bg_disconnect() = 0; virtual void disconnect() = 0; virtual int set_net_timeout() = 0; - virtual int exec_query( - const char *query, - uint length, - int quick_mode - ) = 0; + virtual int exec_query(const char *query, uint length, int quick_mode) = 0; virtual int get_errno() = 0; virtual const char *get_error() = 0; - virtual bool is_server_gone_error( - int error_num - ) = 0; - virtual bool is_dup_entry_error( - int error_num - ) = 0; - virtual bool is_xa_nota_error( - int error_num - ) = 0; + virtual bool is_server_gone_error(int error_num) = 0; + virtual bool is_dup_entry_error(int error_num) = 0; + virtual bool is_xa_nota_error(int error_num) = 0; virtual spider_db_result *store_result( - spider_db_result_buffer **spider_res_buf, - st_spider_db_request_key *request_key, - int *error_num - ) = 0; - virtual spider_db_result *use_result( - ha_spider *spider, - st_spider_db_request_key *request_key, - int *error_num - ) = 0; + spider_db_result_buffer **spider_res_buf, + st_spider_db_request_key *request_key, int *error_num) = 0; + virtual spider_db_result *use_result(ha_spider *spider, + st_spider_db_request_key *request_key, + int *error_num) = 0; virtual int next_result() = 0; virtual uint affected_rows() = 0; virtual uint matched_rows() = 0; - virtual bool inserted_info( - spider_db_handler *handler, - ha_copy_info *copy_info - ) = 0; + virtual bool inserted_info(spider_db_handler *handler, + ha_copy_info *copy_info) = 0; virtual ulonglong last_insert_id() = 0; - virtual int set_character_set( - const char *csname - ) = 0; - virtual int select_db( - const char *dbname - ) = 0; - virtual int consistent_snapshot( - int *need_mon - ) = 0; + virtual int set_character_set(const char *csname) = 0; + virtual int select_db(const char *dbname) = 0; + virtual int consistent_snapshot(int *need_mon) = 0; virtual bool trx_start_in_bulk_sql() = 0; - virtual int start_transaction( - int *need_mon - ) = 0; - virtual int commit( - int *need_mon - ) = 0; - virtual int rollback( - int *need_mon - ) = 0; + virtual int start_transaction(int *need_mon) = 0; + virtual int commit(int *need_mon) = 0; + virtual int rollback(int *need_mon) = 0; virtual bool xa_start_in_bulk_sql() = 0; - virtual int xa_start( - XID *xid, - int *need_mon - ) = 0; - virtual int xa_end( - XID *xid, - int *need_mon - ) = 0; - virtual int xa_prepare( - XID *xid, - int *need_mon - ) = 0; - virtual int xa_commit( - XID *xid, - int *need_mon - ) = 0; - virtual int xa_rollback( - XID *xid, - int *need_mon - ) = 0; + virtual int xa_start(XID *xid, int *need_mon) = 0; + virtual int xa_end(XID *xid, int *need_mon) = 0; + virtual int xa_prepare(XID *xid, int *need_mon) = 0; + virtual int xa_commit(XID *xid, int *need_mon) = 0; + virtual int xa_rollback(XID *xid, int *need_mon) = 0; virtual bool set_trx_isolation_in_bulk_sql() = 0; - virtual int set_trx_isolation( - int trx_isolation, - int *need_mon - ) = 0; + virtual int set_trx_isolation(int trx_isolation, int *need_mon) = 0; virtual bool set_autocommit_in_bulk_sql() = 0; - virtual int set_autocommit( - bool autocommit, - int *need_mon - ) = 0; + virtual int set_autocommit(bool autocommit, int *need_mon) = 0; virtual bool set_sql_log_off_in_bulk_sql() = 0; - virtual int set_sql_log_off( - bool sql_log_off, - int *need_mon - ) = 0; + virtual int set_sql_log_off(bool sql_log_off, int *need_mon) = 0; virtual bool set_wait_timeout_in_bulk_sql() = 0; - virtual int set_wait_timeout( - int wait_timeout, - int *need_mon - ) = 0; + virtual int set_wait_timeout(int wait_timeout, int *need_mon) = 0; virtual bool set_sql_mode_in_bulk_sql() = 0; - virtual int set_sql_mode( - sql_mode_t sql_mode, - int *need_mon - ) = 0; + virtual int set_sql_mode(sql_mode_t sql_mode, int *need_mon) = 0; virtual bool set_time_zone_in_bulk_sql() = 0; - virtual int set_time_zone( - Time_zone *time_zone, - int *need_mon - ) = 0; + virtual int set_time_zone(Time_zone *time_zone, int *need_mon) = 0; virtual bool set_loop_check_in_bulk_sql(); - virtual int set_loop_check( - int *need_mon - ); + virtual int set_loop_check(int *need_mon); virtual int fin_loop_check(); - virtual int show_master_status( - SPIDER_TRX *trx, - SPIDER_SHARE *share, - int all_link_idx, - int *need_mon, - TABLE *table, - spider_string *str, - int mode, - SPIDER_DB_RESULT **res1, - SPIDER_DB_RESULT **res2 - ) = 0; + virtual int show_master_status(SPIDER_TRX *trx, SPIDER_SHARE *share, + int all_link_idx, int *need_mon, TABLE *table, + spider_string *str, int mode, + SPIDER_DB_RESULT **res1, + SPIDER_DB_RESULT **res2) = 0; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - virtual int append_sql( - char *sql, - ulong sql_length, - st_spider_db_request_key *request_key - ) = 0; - virtual int append_open_handler( - uint handler_id, - const char *db_name, - const char *table_name, - const char *index_name, - const char *sql, - st_spider_db_request_key *request_key - ) = 0; - virtual int append_select( - uint handler_id, - spider_string *sql, - SPIDER_DB_HS_STRING_REF_BUFFER *keys, - int limit, - int skip, - st_spider_db_request_key *request_key - ) = 0; - virtual int append_insert( - uint handler_id, - SPIDER_DB_HS_STRING_REF_BUFFER *upds, - st_spider_db_request_key *request_key - ) = 0; - virtual int append_update( - uint handler_id, - spider_string *sql, - SPIDER_DB_HS_STRING_REF_BUFFER *keys, - SPIDER_DB_HS_STRING_REF_BUFFER *upds, - int limit, - int skip, - bool increment, - bool decrement, - st_spider_db_request_key *request_key - ) = 0; - virtual int append_delete( - uint handler_id, - spider_string *sql, - SPIDER_DB_HS_STRING_REF_BUFFER *keys, - int limit, - int skip, - st_spider_db_request_key *request_key - ) = 0; + virtual int append_sql(char *sql, ulong sql_length, + st_spider_db_request_key *request_key) = 0; + virtual int append_open_handler(uint handler_id, const char *db_name, + const char *table_name, + const char *index_name, const char *sql, + st_spider_db_request_key *request_key) = 0; + virtual int append_select(uint handler_id, spider_string *sql, + SPIDER_DB_HS_STRING_REF_BUFFER *keys, int limit, + int skip, + st_spider_db_request_key *request_key) = 0; + virtual int append_insert(uint handler_id, + SPIDER_DB_HS_STRING_REF_BUFFER *upds, + st_spider_db_request_key *request_key) = 0; + virtual int append_update(uint handler_id, spider_string *sql, + SPIDER_DB_HS_STRING_REF_BUFFER *keys, + SPIDER_DB_HS_STRING_REF_BUFFER *upds, int limit, + int skip, bool increment, bool decrement, + st_spider_db_request_key *request_key) = 0; + virtual int append_delete(uint handler_id, spider_string *sql, + SPIDER_DB_HS_STRING_REF_BUFFER *keys, int limit, + int skip, + st_spider_db_request_key *request_key) = 0; virtual void reset_request_queue() = 0; #endif - virtual size_t escape_string( - char *to, - const char *from, - size_t from_length - ) = 0; + virtual size_t escape_string(char *to, const char *from, + size_t from_length) = 0; virtual bool have_lock_table_list() = 0; - virtual int append_lock_tables( - spider_string *str - ) = 0; - virtual int append_unlock_tables( - spider_string *str - ) = 0; + virtual int append_lock_tables(spider_string *str) = 0; + virtual int append_unlock_tables(spider_string *str) = 0; virtual uint get_lock_table_hash_count() = 0; virtual void reset_lock_table_hash() = 0; virtual uint get_opened_handler_count() = 0; virtual void reset_opened_handler() = 0; - virtual void set_dup_key_idx( - ha_spider *spider, - int link_idx - ) = 0; + virtual void set_dup_key_idx(ha_spider *spider, int link_idx) = 0; virtual bool cmp_request_key_to_snd( - st_spider_db_request_key *request_key - ) = 0; + st_spider_db_request_key *request_key) = 0; virtual uint limit_mode(); }; -class spider_db_share -{ -protected: - uint mem_calc_id; - const char *mem_calc_func_name; - const char *mem_calc_file_name; - ulong mem_calc_line_no; -public: +class spider_db_share { + protected: + uint mem_calc_id; + const char *mem_calc_func_name; + const char *mem_calc_file_name; + ulong mem_calc_line_no; + + public: uint dbton_id; st_spider_share *spider_share; - spider_db_share( - st_spider_share *share, - uint dbton_id - ) : dbton_id(dbton_id), spider_share(share) {} + spider_db_share(st_spider_share *share, uint dbton_id) + : dbton_id(dbton_id), spider_share(share) {} virtual ~spider_db_share() {} virtual int init() = 0; - virtual uint get_column_name_length( - uint field_index - ) = 0; - virtual int append_column_name( - spider_string *str, - uint field_index - ) = 0; - virtual int append_column_name_with_alias( - spider_string *str, - uint field_index, - const char *alias, - uint alias_length - ) = 0; + virtual uint get_column_name_length(uint field_index) = 0; + virtual int append_column_name(spider_string *str, uint field_index) = 0; + virtual int append_column_name_with_alias(spider_string *str, + uint field_index, const char *alias, + uint alias_length) = 0; virtual bool need_change_db_table_name() = 0; #ifdef SPIDER_HAS_DISCOVER_TABLE_STRUCTURE - virtual int discover_table_structure( - SPIDER_TRX *trx, - SPIDER_SHARE *spider_share, - spider_string *str - ) = 0; + virtual int discover_table_structure(SPIDER_TRX *trx, + SPIDER_SHARE *spider_share, + spider_string *str) = 0; #endif #ifdef HA_HAS_CHECKSUM_EXTENDED virtual bool checksum_support(); #endif }; -class spider_db_handler -{ -protected: - uint mem_calc_id; - const char *mem_calc_func_name; - const char *mem_calc_file_name; - ulong mem_calc_line_no; -public: +class spider_db_handler { + protected: + uint mem_calc_id; + const char *mem_calc_func_name; + const char *mem_calc_file_name; + ulong mem_calc_line_no; + + public: uint dbton_id; ha_spider *spider; spider_db_share *db_share; @@ -1354,51 +873,29 @@ public: #endif bool strict_group_by; bool no_where_cond; - spider_db_handler(ha_spider *spider, spider_db_share *db_share) : - dbton_id(db_share->dbton_id), spider(spider), db_share(db_share), - first_link_idx(-1) {} + spider_db_handler(ha_spider *spider, spider_db_share *db_share) + : dbton_id(db_share->dbton_id), + spider(spider), + db_share(db_share), + first_link_idx(-1) {} virtual ~spider_db_handler() {} virtual int init() = 0; - virtual int append_index_hint( - spider_string *str, - int link_idx, - ulong sql_type - ) = 0; - virtual int append_table_name_with_adjusting( - spider_string *str, - int link_idx, - ulong sql_type - ) = 0; - virtual int append_tmp_table_and_sql_for_bka( - const key_range *start_key - ) = 0; + virtual int append_index_hint(spider_string *str, int link_idx, + ulong sql_type) = 0; + virtual int append_table_name_with_adjusting(spider_string *str, int link_idx, + ulong sql_type) = 0; + virtual int append_tmp_table_and_sql_for_bka(const key_range *start_key) = 0; virtual int reuse_tmp_table_and_sql_for_bka() = 0; virtual int append_union_table_and_sql_for_bka( - const key_range *start_key - ) = 0; + const key_range *start_key) = 0; virtual int reuse_union_table_and_sql_for_bka() = 0; - virtual int append_insert_for_recovery( - ulong sql_type, - int link_idx - ) = 0; - virtual int append_update( - const TABLE *table, - my_ptrdiff_t ptr_diff - ) = 0; - virtual int append_update( - const TABLE *table, - my_ptrdiff_t ptr_diff, - int link_idx - ) = 0; - virtual int append_delete( - const TABLE *table, - my_ptrdiff_t ptr_diff - ) = 0; - virtual int append_delete( - const TABLE *table, - my_ptrdiff_t ptr_diff, - int link_idx - ) = 0; + virtual int append_insert_for_recovery(ulong sql_type, int link_idx) = 0; + virtual int append_update(const TABLE *table, my_ptrdiff_t ptr_diff) = 0; + virtual int append_update(const TABLE *table, my_ptrdiff_t ptr_diff, + int link_idx) = 0; + virtual int append_delete(const TABLE *table, my_ptrdiff_t ptr_diff) = 0; + virtual int append_delete(const TABLE *table, my_ptrdiff_t ptr_diff, + int link_idx) = 0; virtual int append_insert_part() = 0; virtual int append_update_part() = 0; virtual int append_delete_part() = 0; @@ -1410,537 +907,238 @@ public: virtual int append_update_set_part() = 0; #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS virtual int append_direct_update_set_part() = 0; - virtual int append_dup_update_pushdown_part( - const char *alias, - uint alias_length - ) = 0; - virtual int append_update_columns_part( - const char *alias, - uint alias_length - ) = 0; + virtual int append_dup_update_pushdown_part(const char *alias, + uint alias_length) = 0; + virtual int append_update_columns_part(const char *alias, + uint alias_length) = 0; virtual int check_update_columns_part() = 0; #endif - virtual int append_select_part( - ulong sql_type - ) = 0; - virtual int append_select( - spider_string *str, - ulong sql_type - ) = 0; - virtual int append_table_select_part( - ulong sql_type - ) = 0; - virtual int append_key_select_part( - ulong sql_type, - uint idx - ) = 0; - virtual int append_minimum_select_part( - ulong sql_type - ) = 0; - virtual int append_hint_after_table_part( - ulong sql_type - ) = 0; - virtual void set_where_pos( - ulong sql_type - ) = 0; - virtual void set_where_to_pos( - ulong sql_type - ) = 0; - virtual int check_item_type( - Item *item - ) = 0; - virtual int append_values_connector_part( - ulong sql_type - ) = 0; - virtual int append_values_terminator_part( - ulong sql_type - ) = 0; - virtual int append_union_table_connector_part( - ulong sql_type - ) = 0; - virtual int append_union_table_terminator_part( - ulong sql_type - ) = 0; - virtual int append_key_column_values_part( - const key_range *start_key, - ulong sql_type - ) = 0; + virtual int append_select_part(ulong sql_type) = 0; + virtual int append_select(spider_string *str, ulong sql_type) = 0; + virtual int append_table_select_part(ulong sql_type) = 0; + virtual int append_key_select_part(ulong sql_type, uint idx) = 0; + virtual int append_minimum_select_part(ulong sql_type) = 0; + virtual int append_hint_after_table_part(ulong sql_type) = 0; + virtual void set_where_pos(ulong sql_type) = 0; + virtual void set_where_to_pos(ulong sql_type) = 0; + virtual int check_item_type(Item *item) = 0; + virtual int append_values_connector_part(ulong sql_type) = 0; + virtual int append_values_terminator_part(ulong sql_type) = 0; + virtual int append_union_table_connector_part(ulong sql_type) = 0; + virtual int append_union_table_terminator_part(ulong sql_type) = 0; + virtual int append_key_column_values_part(const key_range *start_key, + ulong sql_type) = 0; virtual int append_key_column_values_with_name_part( - const key_range *start_key, - ulong sql_type - ) = 0; - virtual int append_key_where_part( - const key_range *start_key, - const key_range *end_key, - ulong sql_type - ) = 0; - virtual int append_is_null_part( - ulong sql_type, - KEY_PART_INFO *key_part, - const key_range *key, - const uchar **ptr, - bool key_eq, - bool tgt_final - ) = 0; - virtual int append_where_terminator_part( - ulong sql_type, - bool set_order, - int key_count - ) = 0; - virtual int append_match_where_part( - ulong sql_type - ) = 0; - virtual int append_condition_part( - const char *alias, - uint alias_length, - ulong sql_type, - bool test_flg - ) = 0; - virtual int append_match_select_part( - ulong sql_type, - const char *alias, - uint alias_length - ) = 0; + const key_range *start_key, ulong sql_type) = 0; + virtual int append_key_where_part(const key_range *start_key, + const key_range *end_key, + ulong sql_type) = 0; + virtual int append_is_null_part(ulong sql_type, KEY_PART_INFO *key_part, + const key_range *key, const uchar **ptr, + bool key_eq, bool tgt_final) = 0; + virtual int append_where_terminator_part(ulong sql_type, bool set_order, + int key_count) = 0; + virtual int append_match_where_part(ulong sql_type) = 0; + virtual int append_condition_part(const char *alias, uint alias_length, + ulong sql_type, bool test_flg) = 0; + virtual int append_match_select_part(ulong sql_type, const char *alias, + uint alias_length) = 0; #ifdef HANDLER_HAS_DIRECT_AGGREGATE - virtual int append_sum_select_part( - ulong sql_type, - const char *alias, - uint alias_length - ) = 0; + virtual int append_sum_select_part(ulong sql_type, const char *alias, + uint alias_length) = 0; #endif - virtual void set_order_pos( - ulong sql_type - ) = 0; - virtual void set_order_to_pos( - ulong sql_type - ) = 0; + virtual void set_order_pos(ulong sql_type) = 0; + virtual void set_order_to_pos(ulong sql_type) = 0; #ifdef HANDLER_HAS_DIRECT_AGGREGATE - virtual int append_group_by_part( - const char *alias, - uint alias_length, - ulong sql_type - ) = 0; + virtual int append_group_by_part(const char *alias, uint alias_length, + ulong sql_type) = 0; #endif - virtual int append_key_order_for_merge_with_alias_part( - const char *alias, - uint alias_length, - ulong sql_type - ) = 0; + virtual int append_key_order_for_merge_with_alias_part(const char *alias, + uint alias_length, + ulong sql_type) = 0; virtual int append_key_order_for_direct_order_limit_with_alias_part( - const char *alias, - uint alias_length, - ulong sql_type - ) = 0; - virtual int append_key_order_with_alias_part( - const char *alias, - uint alias_length, - ulong sql_type - ) = 0; - virtual int append_limit_part( - longlong offset, - longlong limit, - ulong sql_type - ) = 0; - virtual int reappend_limit_part( - longlong offset, - longlong limit, - ulong sql_type - ) = 0; - virtual int append_select_lock_part( - ulong sql_type - ) = 0; - virtual int append_union_all_start_part( - ulong sql_type - ) = 0; - virtual int append_union_all_part( - ulong sql_type - ) = 0; - virtual int append_union_all_end_part( - ulong sql_type - ) = 0; - virtual int append_multi_range_cnt_part( - ulong sql_type, - uint multi_range_cnt, - bool with_comma - ) = 0; - virtual int append_multi_range_cnt_with_name_part( - ulong sql_type, - uint multi_range_cnt - ) = 0; - virtual int append_open_handler_part( - ulong sql_type, - uint handler_id, - SPIDER_CONN *conn, - int link_idx - ) = 0; - virtual int append_close_handler_part( - ulong sql_type, - int link_idx - ) = 0; - virtual int append_insert_terminator_part( - ulong sql_type - ) = 0; - virtual int append_insert_values_part( - ulong sql_type - ) = 0; - virtual int append_into_part( - ulong sql_type - ) = 0; - virtual void set_insert_to_pos( - ulong sql_type - ) = 0; - virtual int append_from_part( - ulong sql_type, - int link_idx - ) = 0; - virtual int append_delete_all_rows_part( - ulong sql_type - ) = 0; - virtual int append_explain_select_part( - const key_range *start_key, - const key_range *end_key, - ulong sql_type, - int link_idx - ) = 0; - virtual bool is_sole_projection_field( - uint16 field_index - ) = 0; - virtual bool is_bulk_insert_exec_period( - bool bulk_end - ) = 0; - virtual bool sql_is_filled_up( - ulong sql_type - ) = 0; - virtual bool sql_is_empty( - ulong sql_type - ) = 0; + const char *alias, uint alias_length, ulong sql_type) = 0; + virtual int append_key_order_with_alias_part(const char *alias, + uint alias_length, + ulong sql_type) = 0; + virtual int append_limit_part(longlong offset, longlong limit, + ulong sql_type) = 0; + virtual int reappend_limit_part(longlong offset, longlong limit, + ulong sql_type) = 0; + virtual int append_select_lock_part(ulong sql_type) = 0; + virtual int append_union_all_start_part(ulong sql_type) = 0; + virtual int append_union_all_part(ulong sql_type) = 0; + virtual int append_union_all_end_part(ulong sql_type) = 0; + virtual int append_multi_range_cnt_part(ulong sql_type, uint multi_range_cnt, + bool with_comma) = 0; + virtual int append_multi_range_cnt_with_name_part(ulong sql_type, + uint multi_range_cnt) = 0; + virtual int append_open_handler_part(ulong sql_type, uint handler_id, + SPIDER_CONN *conn, int link_idx) = 0; + virtual int append_close_handler_part(ulong sql_type, int link_idx) = 0; + virtual int append_insert_terminator_part(ulong sql_type) = 0; + virtual int append_insert_values_part(ulong sql_type) = 0; + virtual int append_into_part(ulong sql_type) = 0; + virtual void set_insert_to_pos(ulong sql_type) = 0; + virtual int append_from_part(ulong sql_type, int link_idx) = 0; + virtual int append_delete_all_rows_part(ulong sql_type) = 0; + virtual int append_explain_select_part(const key_range *start_key, + const key_range *end_key, + ulong sql_type, int link_idx) = 0; + virtual bool is_sole_projection_field(uint16 field_index) = 0; + virtual bool is_bulk_insert_exec_period(bool bulk_end) = 0; + virtual bool sql_is_filled_up(ulong sql_type) = 0; + virtual bool sql_is_empty(ulong sql_type) = 0; virtual bool support_multi_split_read() = 0; virtual bool support_bulk_update() = 0; virtual int bulk_tmp_table_insert() = 0; - virtual int bulk_tmp_table_insert( - int link_idx - ) = 0; + virtual int bulk_tmp_table_insert(int link_idx) = 0; virtual int bulk_tmp_table_end_bulk_insert() = 0; virtual int bulk_tmp_table_rnd_init() = 0; virtual int bulk_tmp_table_rnd_next() = 0; virtual int bulk_tmp_table_rnd_end() = 0; - virtual bool need_copy_for_update( - int link_idx - ) = 0; + virtual bool need_copy_for_update(int link_idx) = 0; virtual bool bulk_tmp_table_created() = 0; virtual int mk_bulk_tmp_table_and_bulk_start() = 0; virtual void rm_bulk_tmp_table() = 0; - virtual int insert_lock_tables_list( - SPIDER_CONN *conn, - int link_idx - ) = 0; - virtual int append_lock_tables_list( - SPIDER_CONN *conn, - int link_idx, - int *appended - ) = 0; - virtual int realloc_sql( - ulong *realloced - ) = 0; - virtual int reset_sql( - ulong sql_type - ) = 0; + virtual int insert_lock_tables_list(SPIDER_CONN *conn, int link_idx) = 0; + virtual int append_lock_tables_list(SPIDER_CONN *conn, int link_idx, + int *appended) = 0; + virtual int realloc_sql(ulong *realloced) = 0; + virtual int reset_sql(ulong sql_type) = 0; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - virtual int reset_keys( - ulong sql_type - ) = 0; - virtual int reset_upds( - ulong sql_type - ) = 0; - virtual int reset_strs( - ulong sql_type - ) = 0; - virtual int reset_strs_pos( - ulong sql_type - ) = 0; - virtual int push_back_upds( - SPIDER_HS_STRING_REF &info - ) = 0; + virtual int reset_keys(ulong sql_type) = 0; + virtual int reset_upds(ulong sql_type) = 0; + virtual int reset_strs(ulong sql_type) = 0; + virtual int reset_strs_pos(ulong sql_type) = 0; + virtual int push_back_upds(SPIDER_HS_STRING_REF &info) = 0; #endif - virtual bool need_lock_before_set_sql_for_exec( - ulong sql_type - ) = 0; + virtual bool need_lock_before_set_sql_for_exec(ulong sql_type) = 0; #ifdef SPIDER_HAS_GROUP_BY_HANDLER - virtual int set_sql_for_exec( - ulong sql_type, - int link_idx, - SPIDER_LINK_IDX_CHAIN *link_idx_chain - ) = 0; + virtual int set_sql_for_exec(ulong sql_type, int link_idx, + SPIDER_LINK_IDX_CHAIN *link_idx_chain) = 0; #endif - virtual int set_sql_for_exec( - ulong sql_type, - int link_idx - ) = 0; - virtual int set_sql_for_exec( - spider_db_copy_table *tgt_ct, - ulong sql_type - ) = 0; - virtual int execute_sql( - ulong sql_type, - SPIDER_CONN *conn, - int quick_mode, - int *need_mon - ) = 0; + virtual int set_sql_for_exec(ulong sql_type, int link_idx) = 0; + virtual int set_sql_for_exec(spider_db_copy_table *tgt_ct, + ulong sql_type) = 0; + virtual int execute_sql(ulong sql_type, SPIDER_CONN *conn, int quick_mode, + int *need_mon) = 0; virtual int reset() = 0; - virtual int sts_mode_exchange( - int sts_mode - ) = 0; - virtual int show_table_status( - int link_idx, - int sts_mode, - uint flag - ) = 0; - virtual int crd_mode_exchange( - int crd_mode - ) = 0; - virtual int show_index( - int link_idx, - int crd_mode - ) = 0; - virtual int show_records( - int link_idx - ) = 0; + virtual int sts_mode_exchange(int sts_mode) = 0; + virtual int show_table_status(int link_idx, int sts_mode, uint flag) = 0; + virtual int crd_mode_exchange(int crd_mode) = 0; + virtual int show_index(int link_idx, int crd_mode) = 0; + virtual int show_records(int link_idx) = 0; #ifdef HA_HAS_CHECKSUM_EXTENDED - virtual int checksum_table( - int link_idx - ); + virtual int checksum_table(int link_idx); #endif - virtual int show_last_insert_id( - int link_idx, - ulonglong &last_insert_id - ) = 0; - virtual ha_rows explain_select( - const key_range *start_key, - const key_range *end_key, - int link_idx - ) = 0; - virtual int lock_tables( - int link_idx - ) = 0; - virtual int unlock_tables( - int link_idx - ) = 0; - virtual int disable_keys( - SPIDER_CONN *conn, - int link_idx - ) = 0; - virtual int enable_keys( - SPIDER_CONN *conn, - int link_idx - ) = 0; - virtual int check_table( - SPIDER_CONN *conn, - int link_idx, - HA_CHECK_OPT* check_opt - ) = 0; - virtual int repair_table( - SPIDER_CONN *conn, - int link_idx, - HA_CHECK_OPT* check_opt - ) = 0; - virtual int analyze_table( - SPIDER_CONN *conn, - int link_idx - ) = 0; - virtual int optimize_table( - SPIDER_CONN *conn, - int link_idx - ) = 0; - virtual int flush_tables( - SPIDER_CONN *conn, - int link_idx, - bool lock - ) = 0; - virtual int flush_logs( - SPIDER_CONN *conn, - int link_idx - ) = 0; - virtual int insert_opened_handler( - SPIDER_CONN *conn, - int link_idx - ) = 0; - virtual int delete_opened_handler( - SPIDER_CONN *conn, - int link_idx - ) = 0; - virtual int sync_from_clone_source( - spider_db_handler *dbton_hdl - ) = 0; - virtual bool support_use_handler( - int use_handler - ) = 0; - virtual bool minimum_select_bit_is_set( - uint field_index - ) = 0; - virtual void copy_minimum_select_bitmap( - uchar *bitmap - ) = 0; + virtual int show_last_insert_id(int link_idx, ulonglong &last_insert_id) = 0; + virtual ha_rows explain_select(const key_range *start_key, + const key_range *end_key, int link_idx) = 0; + virtual int lock_tables(int link_idx) = 0; + virtual int unlock_tables(int link_idx) = 0; + virtual int disable_keys(SPIDER_CONN *conn, int link_idx) = 0; + virtual int enable_keys(SPIDER_CONN *conn, int link_idx) = 0; + virtual int check_table(SPIDER_CONN *conn, int link_idx, + HA_CHECK_OPT *check_opt) = 0; + virtual int repair_table(SPIDER_CONN *conn, int link_idx, + HA_CHECK_OPT *check_opt) = 0; + virtual int analyze_table(SPIDER_CONN *conn, int link_idx) = 0; + virtual int optimize_table(SPIDER_CONN *conn, int link_idx) = 0; + virtual int flush_tables(SPIDER_CONN *conn, int link_idx, bool lock) = 0; + virtual int flush_logs(SPIDER_CONN *conn, int link_idx) = 0; + virtual int insert_opened_handler(SPIDER_CONN *conn, int link_idx) = 0; + virtual int delete_opened_handler(SPIDER_CONN *conn, int link_idx) = 0; + virtual int sync_from_clone_source(spider_db_handler *dbton_hdl) = 0; + virtual bool support_use_handler(int use_handler) = 0; + virtual bool minimum_select_bit_is_set(uint field_index) = 0; + virtual void copy_minimum_select_bitmap(uchar *bitmap) = 0; virtual int init_union_table_name_pos() = 0; virtual int set_union_table_name_pos() = 0; - virtual int reset_union_table_name( - spider_string *str, - int link_idx, - ulong sql_type - ) = 0; + virtual int reset_union_table_name(spider_string *str, int link_idx, + ulong sql_type) = 0; #ifdef SPIDER_HAS_GROUP_BY_HANDLER - virtual int append_from_and_tables_part( - spider_fields *fields, - ulong sql_type - ) = 0; - virtual int reappend_tables_part( - spider_fields *fields, - ulong sql_type - ) = 0; - virtual int append_where_part( - ulong sql_type - ) = 0; - virtual int append_having_part( - ulong sql_type - ) = 0; - virtual int append_item_type_part( - Item *item, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields, - ulong sql_type - ) = 0; - virtual int append_list_item_select_part( - List<Item> *select, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields, - ulong sql_type - ) = 0; - virtual int append_group_by_part( - ORDER *order, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields, - ulong sql_type - ) = 0; - virtual int append_order_by_part( - ORDER *order, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields, - ulong sql_type - ) = 0; + virtual int append_from_and_tables_part(spider_fields *fields, + ulong sql_type) = 0; + virtual int reappend_tables_part(spider_fields *fields, ulong sql_type) = 0; + virtual int append_where_part(ulong sql_type) = 0; + virtual int append_having_part(ulong sql_type) = 0; + virtual int append_item_type_part(Item *item, const char *alias, + uint alias_length, bool use_fields, + spider_fields *fields, ulong sql_type) = 0; + virtual int append_list_item_select_part(List<Item> *select, + const char *alias, uint alias_length, + bool use_fields, + spider_fields *fields, + ulong sql_type) = 0; + virtual int append_group_by_part(ORDER *order, const char *alias, + uint alias_length, bool use_fields, + spider_fields *fields, ulong sql_type) = 0; + virtual int append_order_by_part(ORDER *order, const char *alias, + uint alias_length, bool use_fields, + spider_fields *fields, ulong sql_type) = 0; #endif #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS - virtual bool check_direct_update( - st_select_lex *select_lex, - longlong select_limit, - longlong offset_limit - ); - virtual bool check_direct_delete( - st_select_lex *select_lex, - longlong select_limit, - longlong offset_limit - ); + virtual bool check_direct_update(st_select_lex *select_lex, + longlong select_limit, + longlong offset_limit); + virtual bool check_direct_delete(st_select_lex *select_lex, + longlong select_limit, + longlong offset_limit); #endif }; -class spider_db_copy_table -{ -public: +class spider_db_copy_table { + public: uint dbton_id; spider_db_share *db_share; - spider_db_copy_table(spider_db_share *db_share) : - dbton_id(db_share->dbton_id), db_share(db_share) {} + spider_db_copy_table(spider_db_share *db_share) + : dbton_id(db_share->dbton_id), db_share(db_share) {} virtual ~spider_db_copy_table() {} virtual int init() = 0; - virtual void set_sql_charset( - CHARSET_INFO *cs - ) = 0; + virtual void set_sql_charset(CHARSET_INFO *cs) = 0; virtual int append_select_str() = 0; - virtual int append_insert_str( - int insert_flg - ) = 0; - virtual int append_table_columns( - TABLE_SHARE *table_share - ) = 0; + virtual int append_insert_str(int insert_flg) = 0; + virtual int append_table_columns(TABLE_SHARE *table_share) = 0; virtual int append_from_str() = 0; - virtual int append_table_name( - int link_idx - ) = 0; + virtual int append_table_name(int link_idx) = 0; virtual void set_sql_pos() = 0; virtual void set_sql_to_pos() = 0; - virtual int append_copy_where( - spider_db_copy_table *source_ct, - KEY *key_info, - ulong *last_row_pos, - ulong *last_lengths - ) = 0; - virtual int append_key_order_str( - KEY *key_info, - int start_pos, - bool desc_flg - ) = 0; - virtual int append_limit( - longlong offset, - longlong limit - ) = 0; + virtual int append_copy_where(spider_db_copy_table *source_ct, KEY *key_info, + ulong *last_row_pos, ulong *last_lengths) = 0; + virtual int append_key_order_str(KEY *key_info, int start_pos, + bool desc_flg) = 0; + virtual int append_limit(longlong offset, longlong limit) = 0; virtual int append_into_str() = 0; virtual int append_open_paren_str() = 0; virtual int append_values_str() = 0; - virtual int append_select_lock_str( - int lock_mode - ) = 0; - virtual int exec_query( - SPIDER_CONN *conn, - int quick_mode, - int *need_mon - ) = 0; - virtual int copy_rows( - TABLE *table, - SPIDER_DB_ROW *row, - ulong **last_row_pos, - ulong **last_lengths - ) = 0; - virtual int copy_rows( - TABLE *table, - SPIDER_DB_ROW *row - ) = 0; + virtual int append_select_lock_str(int lock_mode) = 0; + virtual int exec_query(SPIDER_CONN *conn, int quick_mode, int *need_mon) = 0; + virtual int copy_rows(TABLE *table, SPIDER_DB_ROW *row, ulong **last_row_pos, + ulong **last_lengths) = 0; + virtual int copy_rows(TABLE *table, SPIDER_DB_ROW *row) = 0; virtual int append_insert_terminator() = 0; - virtual int copy_insert_values( - spider_db_copy_table *source_ct - ) = 0; + virtual int copy_insert_values(spider_db_copy_table *source_ct) = 0; }; -enum spider_db_access_type -{ +enum spider_db_access_type { SPIDER_DB_ACCESS_TYPE_SQL, SPIDER_DB_ACCESS_TYPE_NOSQL }; -#define SPIDER_MATURITY_UNKNOWN 0 +#define SPIDER_MATURITY_UNKNOWN 0 #define SPIDER_MATURITY_EXPERIMENTAL 1 -#define SPIDER_MATURITY_ALPHA 2 -#define SPIDER_MATURITY_BETA 3 -#define SPIDER_MATURITY_GAMMA 4 -#define SPIDER_MATURITY_STABLE 5 - -static const LEX_CSTRING maturity_name[] = -{ - { STRING_WITH_LEN("Unknown") }, - { STRING_WITH_LEN("Experimental") }, - { STRING_WITH_LEN("Alpha") }, - { STRING_WITH_LEN("Beta") }, - { STRING_WITH_LEN("Gamma") }, - { STRING_WITH_LEN("Stable") } -}; +#define SPIDER_MATURITY_ALPHA 2 +#define SPIDER_MATURITY_BETA 3 +#define SPIDER_MATURITY_GAMMA 4 +#define SPIDER_MATURITY_STABLE 5 -typedef struct st_spider_dbton -{ +static const LEX_CSTRING maturity_name[] = { + {STRING_WITH_LEN("Unknown")}, {STRING_WITH_LEN("Experimental")}, + {STRING_WITH_LEN("Alpha")}, {STRING_WITH_LEN("Beta")}, + {STRING_WITH_LEN("Gamma")}, {STRING_WITH_LEN("Stable")}}; + +typedef struct st_spider_dbton { uint dbton_id; const char *wrapper; enum spider_db_access_type db_access_type; @@ -1948,9 +1146,8 @@ typedef struct st_spider_dbton int (*deinit)(); spider_db_share *(*create_db_share)(st_spider_share *share); spider_db_handler *(*create_db_handler)(ha_spider *spider, - spider_db_share *db_share); - spider_db_copy_table *(*create_db_copy_table)( - spider_db_share *db_share); + spider_db_share *db_share); + spider_db_copy_table *(*create_db_copy_table)(spider_db_share *db_share); SPIDER_DB_CONN *(*create_db_conn)(SPIDER_CONN *conn); bool (*support_direct_join)(); spider_db_util *db_util; @@ -1959,164 +1156,160 @@ typedef struct st_spider_dbton unsigned int maturity; } SPIDER_DBTON; -typedef struct st_spider_position -{ - SPIDER_DB_ROW *row; - uint pos_mode; - bool use_position; - bool mrr_with_cnt; +typedef struct st_spider_position { + SPIDER_DB_ROW *row; + uint pos_mode; + bool use_position; + bool mrr_with_cnt; #ifdef HANDLER_HAS_DIRECT_AGGREGATE - bool direct_aggregate; + bool direct_aggregate; #endif - uint sql_kind; - uchar *position_bitmap; - st_spider_ft_info *ft_first; - st_spider_ft_info *ft_current; - my_off_t tmp_tbl_pos; - SPIDER_RESULT *result; + uint sql_kind; + uchar *position_bitmap; + st_spider_ft_info *ft_first; + st_spider_ft_info *ft_current; + my_off_t tmp_tbl_pos; + SPIDER_RESULT *result; } SPIDER_POSITION; -typedef struct st_spider_condition -{ - COND *cond; - st_spider_condition *next; +typedef struct st_spider_condition { + COND *cond; + st_spider_condition *next; } SPIDER_CONDITION; -typedef struct st_spider_result -{ - uint dbton_id; - SPIDER_DB_RESULT *result; +typedef struct st_spider_result { + uint dbton_id; + SPIDER_DB_RESULT *result; #ifndef WITHOUT_SPIDER_BG_SEARCH volatile #endif - st_spider_result *prev; + st_spider_result *prev; #ifndef WITHOUT_SPIDER_BG_SEARCH volatile #endif - st_spider_result *next; - SPIDER_POSITION *first_position; /* for quick mode */ - int pos_page_size; /* for quick mode */ - longlong record_num; - bool finish_flg; - bool use_position; - bool first_pos_use_position; - bool tmp_tbl_use_position; - uint field_count; /* for quick mode */ - TABLE *result_tmp_tbl; - TMP_TABLE_PARAM result_tmp_tbl_prm; - THD *result_tmp_tbl_thd; - uint result_tmp_tbl_inited; - SPIDER_DB_ROW *tmp_tbl_row; + st_spider_result *next; + SPIDER_POSITION *first_position; /* for quick mode */ + int pos_page_size; /* for quick mode */ + longlong record_num; + bool finish_flg; + bool use_position; + bool first_pos_use_position; + bool tmp_tbl_use_position; + uint field_count; /* for quick mode */ + TABLE *result_tmp_tbl; + TMP_TABLE_PARAM result_tmp_tbl_prm; + THD *result_tmp_tbl_thd; + uint result_tmp_tbl_inited; + SPIDER_DB_ROW *tmp_tbl_row; } SPIDER_RESULT; -typedef struct st_spider_result_list -{ +typedef struct st_spider_result_list { #ifndef WITHOUT_SPIDER_BG_SEARCH volatile #endif - SPIDER_RESULT *first; + SPIDER_RESULT *first; #ifndef WITHOUT_SPIDER_BG_SEARCH volatile #endif - SPIDER_RESULT *last; + SPIDER_RESULT *last; #ifndef WITHOUT_SPIDER_BG_SEARCH volatile #endif - SPIDER_RESULT *current; - KEY *key_info; - int key_order; + SPIDER_RESULT *current; + KEY *key_info; + int key_order; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - ulonglong hs_upd_rows; - SPIDER_DB_RESULT *hs_result; + ulonglong hs_upd_rows; + SPIDER_DB_RESULT *hs_result; SPIDER_DB_RESULT_BUFFER *hs_result_buf; - bool hs_has_result; - SPIDER_DB_CONN *hs_conn; + bool hs_has_result; + SPIDER_DB_CONN *hs_conn; #endif #ifdef HA_CAN_BULK_ACCESS #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - uchar *hs_r_bulk_open_index; - uchar *hs_w_bulk_open_index; + uchar *hs_r_bulk_open_index; + uchar *hs_w_bulk_open_index; #endif #endif - spider_string *sqls; - int ha_read_kind; - bool have_sql_kind_backup; - uint *sql_kind_backup; - uint sql_kinds_backup; - bool use_union; - bool use_both_key; - const key_range *end_key; - spider_string *insert_sqls; - spider_string *update_sqls; - TABLE **upd_tmp_tbls; - TMP_TABLE_PARAM *upd_tmp_tbl_prms; - bool tmp_table_join; - uchar *tmp_table_join_first; - bool tmp_tables_created; - uchar *tmp_table_created; - bool tmp_table_join_break_after_get_next; - key_part_map tmp_table_join_key_part_map; - spider_string *tmp_sqls; - bool tmp_reuse_sql; - bool sorted; - bool desc_flg; - longlong current_row_num; - longlong record_num; - bool finish_flg; - longlong limit_num; - longlong internal_offset; - longlong internal_limit; - longlong split_read; - int multi_split_read; - int max_order; - int quick_mode; - longlong quick_page_size; - longlong quick_page_byte; - int low_mem_read; - int bulk_update_mode; - int bulk_update_size; - spider_bulk_upd_start bulk_update_start; - bool check_direct_order_limit; - bool direct_order_limit; + spider_string *sqls; + int ha_read_kind; + bool have_sql_kind_backup; + uint *sql_kind_backup; + uint sql_kinds_backup; + bool use_union; + bool use_both_key; + const key_range *end_key; + spider_string *insert_sqls; + spider_string *update_sqls; + TABLE **upd_tmp_tbls; + TMP_TABLE_PARAM *upd_tmp_tbl_prms; + bool tmp_table_join; + uchar *tmp_table_join_first; + bool tmp_tables_created; + uchar *tmp_table_created; + bool tmp_table_join_break_after_get_next; + key_part_map tmp_table_join_key_part_map; + spider_string *tmp_sqls; + bool tmp_reuse_sql; + bool sorted; + bool desc_flg; + longlong current_row_num; + longlong record_num; + bool finish_flg; + longlong limit_num; + longlong internal_offset; + longlong internal_limit; + longlong split_read; + int multi_split_read; + int max_order; + int quick_mode; + longlong quick_page_size; + longlong quick_page_byte; + int low_mem_read; + int bulk_update_mode; + int bulk_update_size; + spider_bulk_upd_start bulk_update_start; + bool check_direct_order_limit; + bool direct_order_limit; /* the limit_offeset, without where condition */ - bool direct_limit_offset; - bool direct_distinct; + bool direct_limit_offset; + bool direct_distinct; #ifdef HANDLER_HAS_DIRECT_AGGREGATE - bool direct_aggregate; - bool snap_mrr_with_cnt; - bool snap_direct_aggregate; - SPIDER_DB_ROW *snap_row; + bool direct_aggregate; + bool snap_mrr_with_cnt; + bool snap_direct_aggregate; + SPIDER_DB_ROW *snap_row; #endif - bool in_cmp_ref; - bool set_split_read; - bool insert_dup_update_pushdown; - longlong split_read_base; - double semi_split_read; - longlong semi_split_read_limit; - longlong semi_split_read_base; - longlong first_read; - longlong second_read; - int set_split_read_count; - int *casual_read; + bool in_cmp_ref; + bool set_split_read; + bool insert_dup_update_pushdown; + longlong split_read_base; + double semi_split_read; + longlong semi_split_read_limit; + longlong semi_split_read_base; + longlong first_read; + longlong second_read; + int set_split_read_count; + int *casual_read; #ifndef WITHOUT_SPIDER_BG_SEARCH /* 0:nomal 1:store 2:store end */ volatile #endif - int quick_phase; - bool keyread; - TABLE *table; + int quick_phase; + bool keyread; + TABLE *table; #ifndef WITHOUT_SPIDER_BG_SEARCH - volatile int bgs_error; - bool bgs_error_with_message; - char bgs_error_msg[MYSQL_ERRMSG_SIZE]; - volatile bool bgs_working; + volatile int bgs_error; + bool bgs_error_with_message; + char bgs_error_msg[MYSQL_ERRMSG_SIZE]; + volatile bool bgs_working; /* 0:not use bg 1:first read 2:second read 3:after second read */ - volatile int bgs_phase; - volatile longlong bgs_first_read; - volatile longlong bgs_second_read; - volatile longlong bgs_split_read; + volatile int bgs_phase; + volatile longlong bgs_first_read; + volatile longlong bgs_second_read; + volatile longlong bgs_split_read; volatile #endif - SPIDER_RESULT *bgs_current; - SPIDER_DB_ROW *tmp_pos_row_first; + SPIDER_RESULT *bgs_current; + SPIDER_DB_ROW *tmp_pos_row_first; } SPIDER_RESULT_LIST; diff --git a/storage/spider/spd_db_mysql.h b/storage/spider/spd_db_mysql.h index af7b860f3f5..a7bb5dd6277 100644 --- a/storage/spider/spd_db_mysql.h +++ b/storage/spider/spd_db_mysql.h @@ -11,193 +11,81 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA +*/ -class spider_db_mbase_util: public spider_db_util -{ -public: +class spider_db_mbase_util : public spider_db_util { + public: spider_db_mbase_util(); virtual ~spider_db_mbase_util(); - int append_name( - spider_string *str, - const char *name, - uint name_length - ); - int append_name_with_charset( - spider_string *str, - const char *name, - uint name_length, - CHARSET_INFO *name_charset - ); - int append_escaped_name( - spider_string *str, - const char *name, - uint name_length - ); - int append_escaped_name_with_charset( - spider_string *str, - const char *name, - uint name_length, - CHARSET_INFO *name_charset - ); - bool is_name_quote( - const char head_code - ); - int append_escaped_name_quote( - spider_string *str - ); - int append_column_value( - ha_spider *spider, - spider_string *str, - Field *field, - const uchar *new_ptr, - CHARSET_INFO *access_charset - ); - int append_from_with_alias( - spider_string *str, - const char **table_names, - uint *table_name_lengths, - const char **table_aliases, - uint *table_alias_lengths, - uint table_count, - int *table_name_pos, - bool over_write - ); - int append_trx_isolation( - spider_string *str, - int trx_isolation - ); - int append_autocommit( - spider_string *str, - bool autocommit - ); - int append_sql_log_off( - spider_string *str, - bool sql_log_off - ); - int append_wait_timeout( - spider_string *str, - int wait_timeout - ); - virtual int append_sql_mode_internal( - spider_string *str, - sql_mode_t sql_mode - ); - int append_sql_mode( - spider_string *str, - sql_mode_t sql_mode - ); - int append_time_zone( - spider_string *str, - Time_zone *time_zone - ); - int append_loop_check( - spider_string *str, - SPIDER_CONN *conn - ); - int append_start_transaction( - spider_string *str - ); - int append_xa_start( - spider_string *str, - XID *xid - ); - int append_lock_table_head( - spider_string *str - ); - int append_lock_table_body( - spider_string *str, - const char *db_name, - uint db_name_length, - CHARSET_INFO *db_name_charset, - const char *table_name, - uint table_name_length, - CHARSET_INFO *table_name_charset, - int lock_type - ); - int append_lock_table_tail( - spider_string *str - ); - int append_unlock_table( - spider_string *str - ); - int open_item_func( - Item_func *item_func, - ha_spider *spider, - spider_string *str, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields - ); + int append_name(spider_string *str, const char *name, uint name_length); + int append_name_with_charset(spider_string *str, const char *name, + uint name_length, CHARSET_INFO *name_charset); + int append_escaped_name(spider_string *str, const char *name, + uint name_length); + int append_escaped_name_with_charset(spider_string *str, const char *name, + uint name_length, + CHARSET_INFO *name_charset); + bool is_name_quote(const char head_code); + int append_escaped_name_quote(spider_string *str); + int append_column_value(ha_spider *spider, spider_string *str, Field *field, + const uchar *new_ptr, CHARSET_INFO *access_charset); + int append_from_with_alias(spider_string *str, const char **table_names, + uint *table_name_lengths, + const char **table_aliases, + uint *table_alias_lengths, uint table_count, + int *table_name_pos, bool over_write); + int append_trx_isolation(spider_string *str, int trx_isolation); + int append_autocommit(spider_string *str, bool autocommit); + int append_sql_log_off(spider_string *str, bool sql_log_off); + int append_wait_timeout(spider_string *str, int wait_timeout); + virtual int append_sql_mode_internal(spider_string *str, sql_mode_t sql_mode); + int append_sql_mode(spider_string *str, sql_mode_t sql_mode); + int append_time_zone(spider_string *str, Time_zone *time_zone); + int append_loop_check(spider_string *str, SPIDER_CONN *conn); + int append_start_transaction(spider_string *str); + int append_xa_start(spider_string *str, XID *xid); + int append_lock_table_head(spider_string *str); + int append_lock_table_body(spider_string *str, const char *db_name, + uint db_name_length, CHARSET_INFO *db_name_charset, + const char *table_name, uint table_name_length, + CHARSET_INFO *table_name_charset, int lock_type); + int append_lock_table_tail(spider_string *str); + int append_unlock_table(spider_string *str); + int open_item_func(Item_func *item_func, ha_spider *spider, + spider_string *str, const char *alias, uint alias_length, + bool use_fields, spider_fields *fields); #ifdef HANDLER_HAS_DIRECT_AGGREGATE - int open_item_sum_func( - Item_sum *item_sum, - ha_spider *spider, - spider_string *str, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields - ); + int open_item_sum_func(Item_sum *item_sum, ha_spider *spider, + spider_string *str, const char *alias, + uint alias_length, bool use_fields, + spider_fields *fields); #endif - int append_escaped_util( - spider_string *to, - String *from - ); + int append_escaped_util(spider_string *to, String *from); #ifdef SPIDER_HAS_GROUP_BY_HANDLER - int append_table( - ha_spider *spider, - spider_fields *fields, - spider_string *str, - TABLE_LIST *table_list, - TABLE_LIST **used_table_list, - uint *current_pos, - TABLE_LIST **cond_table_list_ptr, - bool top_down, - bool first - ); - int append_tables_top_down( - ha_spider *spider, - spider_fields *fields, - spider_string *str, - TABLE_LIST *table_list, - TABLE_LIST **used_table_list, - uint *current_pos, - TABLE_LIST **cond_table_list_ptr - ); - int append_tables_top_down_check( - TABLE_LIST *table_list, - TABLE_LIST **used_table_list, - uint *current_pos - ); - int append_embedding_tables( - ha_spider *spider, - spider_fields *fields, - spider_string *str, - TABLE_LIST *table_list, - TABLE_LIST **used_table_list, - uint *current_pos, - TABLE_LIST **cond_table_list_ptr - ); - int append_from_and_tables( - ha_spider *spider, - spider_fields *fields, - spider_string *str, - TABLE_LIST *table_list, - uint table_count - ); - int reappend_tables( - spider_fields *fields, - SPIDER_LINK_IDX_CHAIN *link_idx_chain, - spider_string *str - ); - int append_where( - spider_string *str - ); - int append_having( - spider_string *str - ); + int append_table(ha_spider *spider, spider_fields *fields, spider_string *str, + TABLE_LIST *table_list, TABLE_LIST **used_table_list, + uint *current_pos, TABLE_LIST **cond_table_list_ptr, + bool top_down, bool first); + int append_tables_top_down(ha_spider *spider, spider_fields *fields, + spider_string *str, TABLE_LIST *table_list, + TABLE_LIST **used_table_list, uint *current_pos, + TABLE_LIST **cond_table_list_ptr); + int append_tables_top_down_check(TABLE_LIST *table_list, + TABLE_LIST **used_table_list, + uint *current_pos); + int append_embedding_tables(ha_spider *spider, spider_fields *fields, + spider_string *str, TABLE_LIST *table_list, + TABLE_LIST **used_table_list, uint *current_pos, + TABLE_LIST **cond_table_list_ptr); + int append_from_and_tables(ha_spider *spider, spider_fields *fields, + spider_string *str, TABLE_LIST *table_list, + uint table_count); + int reappend_tables(spider_fields *fields, + SPIDER_LINK_IDX_CHAIN *link_idx_chain, + spider_string *str); + int append_where(spider_string *str); + int append_having(spider_string *str); #endif bool tables_on_different_db_are_joinable(); bool socket_has_default_value(); @@ -208,537 +96,299 @@ public: bool append_charset_name_before_string(); }; -class spider_db_mysql_util: public spider_db_mbase_util -{ -public: +class spider_db_mysql_util : public spider_db_mbase_util { + public: spider_db_mysql_util(); ~spider_db_mysql_util(); - int append_column_value( - ha_spider *spider, - spider_string *str, - Field *field, - const uchar *new_ptr, - CHARSET_INFO *access_charset - ); + int append_column_value(ha_spider *spider, spider_string *str, Field *field, + const uchar *new_ptr, CHARSET_INFO *access_charset); }; -class spider_db_mariadb_util: public spider_db_mbase_util -{ -public: +class spider_db_mariadb_util : public spider_db_mbase_util { + public: spider_db_mariadb_util(); ~spider_db_mariadb_util(); - int append_sql_mode_internal( - spider_string *str, - sql_mode_t sql_mode - ); - int append_column_value( - ha_spider *spider, - spider_string *str, - Field *field, - const uchar *new_ptr, - CHARSET_INFO *access_charset - ); + int append_sql_mode_internal(spider_string *str, sql_mode_t sql_mode); + int append_column_value(ha_spider *spider, spider_string *str, Field *field, + const uchar *new_ptr, CHARSET_INFO *access_charset); }; -class spider_db_mbase_row: public spider_db_row -{ -public: - MYSQL_ROW row; - MYSQL_ROW row_first; - ulong *lengths; - ulong *lengths_first; - uint field_count; - uint record_size; - bool cloned; - spider_db_mbase_row( - uint dbton_id - ); +class spider_db_mbase_row : public spider_db_row { + public: + MYSQL_ROW row; + MYSQL_ROW row_first; + ulong *lengths; + ulong *lengths_first; + uint field_count; + uint record_size; + bool cloned; + spider_db_mbase_row(uint dbton_id); virtual ~spider_db_mbase_row(); - int store_to_field( - Field *field, - CHARSET_INFO *access_charset - ); - int append_to_str( - spider_string *str - ); - int append_escaped_to_str( - spider_string *str, - uint dbton_id - ); + int store_to_field(Field *field, CHARSET_INFO *access_charset); + int append_to_str(spider_string *str); + int append_escaped_to_str(spider_string *str, uint dbton_id); void first(); void next(); bool is_null(); int val_int(); double val_real(); - my_decimal *val_decimal( - my_decimal *decimal_value, - CHARSET_INFO *access_charset - ); + my_decimal *val_decimal(my_decimal *decimal_value, + CHARSET_INFO *access_charset); SPIDER_DB_ROW *clone(); - int store_to_tmp_table( - TABLE *tmp_table, - spider_string *str - ); + int store_to_tmp_table(TABLE *tmp_table, spider_string *str); uint get_byte_size(); }; -class spider_db_mysql_row: public spider_db_mbase_row -{ -public: +class spider_db_mysql_row : public spider_db_mbase_row { + public: spider_db_mysql_row(); ~spider_db_mysql_row(); }; -class spider_db_mariadb_row: public spider_db_mbase_row -{ -public: +class spider_db_mariadb_row : public spider_db_mbase_row { + public: spider_db_mariadb_row(); ~spider_db_mariadb_row(); }; -class spider_db_mbase_result: public spider_db_result -{ -public: - MYSQL_RES *db_result; +class spider_db_mbase_result : public spider_db_result { + public: + MYSQL_RES *db_result; spider_db_mbase_row row; - MYSQL_ROW_OFFSET first_row; - int store_error_num; - spider_db_mbase_result( - SPIDER_DB_CONN *in_db_conn - ); + MYSQL_ROW_OFFSET first_row; + int store_error_num; + spider_db_mbase_result(SPIDER_DB_CONN *in_db_conn); virtual ~spider_db_mbase_result(); bool has_result(); void free_result(); SPIDER_DB_ROW *current_row(); SPIDER_DB_ROW *fetch_row(); SPIDER_DB_ROW *fetch_row_from_result_buffer( - spider_db_result_buffer *spider_res_buf - ); - SPIDER_DB_ROW *fetch_row_from_tmp_table( - TABLE *tmp_table - ); - int fetch_table_status( - int mode, - ha_statistics &stat - ); - int fetch_simple_action( - uint simple_action, - uint position, - void *param - ); - int fetch_table_records( - int mode, - ha_rows &records - ); + spider_db_result_buffer *spider_res_buf); + SPIDER_DB_ROW *fetch_row_from_tmp_table(TABLE *tmp_table); + int fetch_table_status(int mode, ha_statistics &stat); + int fetch_simple_action(uint simple_action, uint position, void *param); + int fetch_table_records(int mode, ha_rows &records); #ifdef HA_HAS_CHECKSUM_EXTENDED - int fetch_table_checksum( - ha_spider *spider - ); + int fetch_table_checksum(ha_spider *spider); #endif - int fetch_table_cardinality( - int mode, - TABLE *table, - longlong *cardinality, - uchar *cardinality_upd, - int bitmap_size - ); - int fetch_table_mon_status( - int &status - ); - int fetch_show_master_status( - const char **binlog_file_name, - const char **binlog_pos - ); - int fetch_select_binlog_gtid_pos( - const char **gtid_pos - ); + int fetch_table_cardinality(int mode, TABLE *table, longlong *cardinality, + uchar *cardinality_upd, int bitmap_size); + int fetch_table_mon_status(int &status); + int fetch_show_master_status(const char **binlog_file_name, + const char **binlog_pos); + int fetch_select_binlog_gtid_pos(const char **gtid_pos); longlong num_rows(); uint num_fields(); - void move_to_pos( - longlong pos - ); + void move_to_pos(longlong pos); int get_errno(); #ifdef SPIDER_HAS_DISCOVER_TABLE_STRUCTURE - int fetch_columns_for_discover_table_structure( - spider_string *str, - CHARSET_INFO *access_charset - ); - int fetch_index_for_discover_table_structure( - spider_string *str, - CHARSET_INFO *access_charset - ); - int fetch_table_for_discover_table_structure( - spider_string *str, - SPIDER_SHARE *spider_share, - CHARSET_INFO *access_charset - ); + int fetch_columns_for_discover_table_structure(spider_string *str, + CHARSET_INFO *access_charset); + int fetch_index_for_discover_table_structure(spider_string *str, + CHARSET_INFO *access_charset); + int fetch_table_for_discover_table_structure(spider_string *str, + SPIDER_SHARE *spider_share, + CHARSET_INFO *access_charset); #endif }; -class spider_db_mysql_result: public spider_db_mbase_result -{ -public: - spider_db_mysql_result( - SPIDER_DB_CONN *in_db_conn - ); +class spider_db_mysql_result : public spider_db_mbase_result { + public: + spider_db_mysql_result(SPIDER_DB_CONN *in_db_conn); ~spider_db_mysql_result(); }; -class spider_db_mariadb_result: public spider_db_mbase_result -{ -public: - spider_db_mariadb_result( - SPIDER_DB_CONN *in_db_conn - ); +class spider_db_mariadb_result : public spider_db_mbase_result { + public: + spider_db_mariadb_result(SPIDER_DB_CONN *in_db_conn); ~spider_db_mariadb_result(); }; -class spider_db_mbase: public spider_db_conn -{ -protected: - int stored_error; +class spider_db_mbase : public spider_db_conn { + protected: + int stored_error; spider_db_mbase_util *spider_db_mbase_utility; -public: - MYSQL *db_conn; - HASH lock_table_hash; - bool lock_table_hash_inited; - uint lock_table_hash_id; - const char *lock_table_hash_func_name; - const char *lock_table_hash_file_name; - ulong lock_table_hash_line_no; - DYNAMIC_ARRAY handler_open_array; - bool handler_open_array_inited; - uint handler_open_array_id; - const char *handler_open_array_func_name; - const char *handler_open_array_file_name; - ulong handler_open_array_line_no; - spider_db_mbase( - SPIDER_CONN *conn, - spider_db_mbase_util *spider_db_mbase_utility - ); + + public: + MYSQL *db_conn; + HASH lock_table_hash; + bool lock_table_hash_inited; + uint lock_table_hash_id; + const char *lock_table_hash_func_name; + const char *lock_table_hash_file_name; + ulong lock_table_hash_line_no; + DYNAMIC_ARRAY handler_open_array; + bool handler_open_array_inited; + uint handler_open_array_id; + const char *handler_open_array_func_name; + const char *handler_open_array_file_name; + ulong handler_open_array_line_no; + spider_db_mbase(SPIDER_CONN *conn, + spider_db_mbase_util *spider_db_mbase_utility); virtual ~spider_db_mbase(); int init(); bool is_connected(); void bg_connect(); - int connect( - char *tgt_host, - char *tgt_username, - char *tgt_password, - long tgt_port, - char *tgt_socket, - char *server_name, - int connect_retry_count, - longlong connect_retry_interval - ); + int connect(char *tgt_host, char *tgt_username, char *tgt_password, + long tgt_port, char *tgt_socket, char *server_name, + int connect_retry_count, longlong connect_retry_interval); int ping(); void bg_disconnect(); void disconnect(); int set_net_timeout(); - int exec_query( - const char *query, - uint length, - int quick_mode - ); + int exec_query(const char *query, uint length, int quick_mode); int get_errno(); const char *get_error(); - bool is_server_gone_error( - int error_num - ); - bool is_dup_entry_error( - int error_num - ); - bool is_xa_nota_error( - int error_num - ); - int print_warnings( - struct tm *l_time - ); - spider_db_result *store_result( - spider_db_result_buffer **spider_res_buf, - st_spider_db_request_key *request_key, - int *error_num - ); - spider_db_result *use_result( - ha_spider *spider, - st_spider_db_request_key *request_key, - int *error_num - ); + bool is_server_gone_error(int error_num); + bool is_dup_entry_error(int error_num); + bool is_xa_nota_error(int error_num); + int print_warnings(struct tm *l_time); + spider_db_result *store_result(spider_db_result_buffer **spider_res_buf, + st_spider_db_request_key *request_key, + int *error_num); + spider_db_result *use_result(ha_spider *spider, + st_spider_db_request_key *request_key, + int *error_num); int next_result(); uint affected_rows(); uint matched_rows(); - bool inserted_info( - spider_db_handler *handler, - ha_copy_info *copy_info - ); + bool inserted_info(spider_db_handler *handler, ha_copy_info *copy_info); ulonglong last_insert_id(); - int set_character_set( - const char *csname - ); - int select_db( - const char *dbname - ); - int consistent_snapshot( - int *need_mon - ); + int set_character_set(const char *csname); + int select_db(const char *dbname); + int consistent_snapshot(int *need_mon); bool trx_start_in_bulk_sql(); - int start_transaction( - int *need_mon - ); - int commit( - int *need_mon - ); - int rollback( - int *need_mon - ); + int start_transaction(int *need_mon); + int commit(int *need_mon); + int rollback(int *need_mon); bool xa_start_in_bulk_sql(); - int xa_start( - XID *xid, - int *need_mon - ); - int xa_end( - XID *xid, - int *need_mon - ); - int xa_prepare( - XID *xid, - int *need_mon - ); - int xa_commit( - XID *xid, - int *need_mon - ); - int xa_rollback( - XID *xid, - int *need_mon - ); + int xa_start(XID *xid, int *need_mon); + int xa_end(XID *xid, int *need_mon); + int xa_prepare(XID *xid, int *need_mon); + int xa_commit(XID *xid, int *need_mon); + int xa_rollback(XID *xid, int *need_mon); bool set_trx_isolation_in_bulk_sql(); - int set_trx_isolation( - int trx_isolation, - int *need_mon - ); + int set_trx_isolation(int trx_isolation, int *need_mon); bool set_autocommit_in_bulk_sql(); - int set_autocommit( - bool autocommit, - int *need_mon - ); + int set_autocommit(bool autocommit, int *need_mon); bool set_sql_log_off_in_bulk_sql(); - int set_sql_log_off( - bool sql_log_off, - int *need_mon - ); + int set_sql_log_off(bool sql_log_off, int *need_mon); bool set_wait_timeout_in_bulk_sql(); - int set_wait_timeout( - int wait_timeout, - int *need_mon - ); + int set_wait_timeout(int wait_timeout, int *need_mon); bool set_sql_mode_in_bulk_sql(); - int set_sql_mode( - sql_mode_t sql_mode, - int *need_mon - ); + int set_sql_mode(sql_mode_t sql_mode, int *need_mon); bool set_time_zone_in_bulk_sql(); - int set_time_zone( - Time_zone *time_zone, - int *need_mon - ); + int set_time_zone(Time_zone *time_zone, int *need_mon); bool set_loop_check_in_bulk_sql(); - int set_loop_check( - int *need_mon - ); + int set_loop_check(int *need_mon); int fin_loop_check(); - int exec_simple_sql_with_result( - SPIDER_TRX *trx, - SPIDER_SHARE *share, - const char *sql, - uint sql_length, - int all_link_idx, - int *need_mon, - SPIDER_DB_RESULT **res - ); - int show_master_status( - SPIDER_TRX *trx, - SPIDER_SHARE *share, - int all_link_idx, - int *need_mon, - TABLE *table, - spider_string *str, - int mode, - SPIDER_DB_RESULT **res1, - SPIDER_DB_RESULT **res2 - ); - int select_binlog_gtid_pos( - SPIDER_TRX *trx, - SPIDER_SHARE *share, - int all_link_idx, - int *need_mon, - TABLE *table, - spider_string *str, - const char *binlog_file_name, - uint binlog_file_name_length, - const char *binlog_pos, - uint binlog_pos_length, - SPIDER_DB_RESULT **res - ); + int exec_simple_sql_with_result(SPIDER_TRX *trx, SPIDER_SHARE *share, + const char *sql, uint sql_length, + int all_link_idx, int *need_mon, + SPIDER_DB_RESULT **res); + int show_master_status(SPIDER_TRX *trx, SPIDER_SHARE *share, int all_link_idx, + int *need_mon, TABLE *table, spider_string *str, + int mode, SPIDER_DB_RESULT **res1, + SPIDER_DB_RESULT **res2); + int select_binlog_gtid_pos(SPIDER_TRX *trx, SPIDER_SHARE *share, + int all_link_idx, int *need_mon, TABLE *table, + spider_string *str, const char *binlog_file_name, + uint binlog_file_name_length, + const char *binlog_pos, uint binlog_pos_length, + SPIDER_DB_RESULT **res); #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - int append_sql( - char *sql, - ulong sql_length, - st_spider_db_request_key *request_key - ); - int append_open_handler( - uint handler_id, - const char *db_name, - const char *table_name, - const char *index_name, - const char *sql, - st_spider_db_request_key *request_key - ); - int append_select( - uint handler_id, - spider_string *sql, - SPIDER_DB_HS_STRING_REF_BUFFER *keys, - int limit, - int skip, - st_spider_db_request_key *request_key - ); - int append_insert( - uint handler_id, - SPIDER_DB_HS_STRING_REF_BUFFER *upds, - st_spider_db_request_key *request_key - ); - int append_update( - uint handler_id, - spider_string *sql, - SPIDER_DB_HS_STRING_REF_BUFFER *keys, - SPIDER_DB_HS_STRING_REF_BUFFER *upds, - int limit, - int skip, - bool increment, - bool decrement, - st_spider_db_request_key *request_key - ); - int append_delete( - uint handler_id, - spider_string *sql, - SPIDER_DB_HS_STRING_REF_BUFFER *keys, - int limit, - int skip, - st_spider_db_request_key *request_key - ); + int append_sql(char *sql, ulong sql_length, + st_spider_db_request_key *request_key); + int append_open_handler(uint handler_id, const char *db_name, + const char *table_name, const char *index_name, + const char *sql, + st_spider_db_request_key *request_key); + int append_select(uint handler_id, spider_string *sql, + SPIDER_DB_HS_STRING_REF_BUFFER *keys, int limit, int skip, + st_spider_db_request_key *request_key); + int append_insert(uint handler_id, SPIDER_DB_HS_STRING_REF_BUFFER *upds, + st_spider_db_request_key *request_key); + int append_update(uint handler_id, spider_string *sql, + SPIDER_DB_HS_STRING_REF_BUFFER *keys, + SPIDER_DB_HS_STRING_REF_BUFFER *upds, int limit, int skip, + bool increment, bool decrement, + st_spider_db_request_key *request_key); + int append_delete(uint handler_id, spider_string *sql, + SPIDER_DB_HS_STRING_REF_BUFFER *keys, int limit, int skip, + st_spider_db_request_key *request_key); void reset_request_queue(); #endif - size_t escape_string( - char *to, - const char *from, - size_t from_length - ); + size_t escape_string(char *to, const char *from, size_t from_length); bool have_lock_table_list(); - int append_lock_tables( - spider_string *str - ); - int append_unlock_tables( - spider_string *str - ); + int append_lock_tables(spider_string *str); + int append_unlock_tables(spider_string *str); uint get_lock_table_hash_count(); void reset_lock_table_hash(); uint get_opened_handler_count(); void reset_opened_handler(); - void set_dup_key_idx( - ha_spider *spider, - int link_idx - ); - bool cmp_request_key_to_snd( - st_spider_db_request_key *request_key - ); + void set_dup_key_idx(ha_spider *spider, int link_idx); + bool cmp_request_key_to_snd(st_spider_db_request_key *request_key); }; -class spider_db_mysql: public spider_db_mbase -{ -public: - spider_db_mysql( - SPIDER_CONN *conn - ); +class spider_db_mysql : public spider_db_mbase { + public: + spider_db_mysql(SPIDER_CONN *conn); ~spider_db_mysql(); }; -class spider_db_mariadb: public spider_db_mbase -{ -public: - spider_db_mariadb( - SPIDER_CONN *conn - ); +class spider_db_mariadb : public spider_db_mbase { + public: + spider_db_mariadb(SPIDER_CONN *conn); ~spider_db_mariadb(); }; -class spider_mbase_share: public spider_db_share -{ -protected: +class spider_mbase_share : public spider_db_share { + protected: spider_db_mbase_util *spider_db_mbase_utility; -public: - spider_string *table_select; - int table_select_pos; - spider_string *key_select; - int *key_select_pos; - spider_string *key_hint; - spider_string *show_table_status; - spider_string *show_records; - spider_string *show_index; - spider_string *table_names_str; - spider_string *db_names_str; - spider_string *db_table_str; + + public: + spider_string *table_select; + int table_select_pos; + spider_string *key_select; + int *key_select_pos; + spider_string *key_hint; + spider_string *show_table_status; + spider_string *show_records; + spider_string *show_index; + spider_string *table_names_str; + spider_string *db_names_str; + spider_string *db_table_str; #ifdef SPIDER_HAS_HASH_VALUE_TYPE my_hash_value_type *db_table_str_hash_value; #endif - uint table_nm_max_length; - uint db_nm_max_length; - spider_string *column_name_str; - bool same_db_table_name; - int first_all_link_idx; + uint table_nm_max_length; + uint db_nm_max_length; + spider_string *column_name_str; + bool same_db_table_name; + int first_all_link_idx; - spider_mbase_share( - st_spider_share *share, - uint dbton_id, - spider_db_mbase_util *spider_db_mbase_utility - ); + spider_mbase_share(st_spider_share *share, uint dbton_id, + spider_db_mbase_util *spider_db_mbase_utility); virtual ~spider_mbase_share(); int init(); - uint get_column_name_length( - uint field_index - ); - int append_column_name( - spider_string *str, - uint field_index - ); - int append_column_name_with_alias( - spider_string *str, - uint field_index, - const char *alias, - uint alias_length - ); - int append_table_name( - spider_string *str, - int all_link_idx - ); - int append_table_name_with_adjusting( - spider_string *str, - int all_link_idx - ); - int append_from_with_adjusted_table_name( - spider_string *str, - int *table_name_pos - ); + uint get_column_name_length(uint field_index); + int append_column_name(spider_string *str, uint field_index); + int append_column_name_with_alias(spider_string *str, uint field_index, + const char *alias, uint alias_length); + int append_table_name(spider_string *str, int all_link_idx); + int append_table_name_with_adjusting(spider_string *str, int all_link_idx); + int append_from_with_adjusted_table_name(spider_string *str, + int *table_name_pos); bool need_change_db_table_name(); #ifdef SPIDER_HAS_DISCOVER_TABLE_STRUCTURE - int discover_table_structure( - SPIDER_TRX *trx, - SPIDER_SHARE *spider_share, - spider_string *str - ); + int discover_table_structure(SPIDER_TRX *trx, SPIDER_SHARE *spider_share, + spider_string *str); #endif #ifdef HA_HAS_CHECKSUM_EXTENDED bool checksum_support(); #endif -protected: + protected: int create_table_names_str(); void free_table_names_str(); int create_column_name_str(); @@ -751,1064 +401,452 @@ protected: int append_show_index(); void free_show_index(); int append_table_select(); - int append_key_select( - uint idx - ); + int append_key_select(uint idx); }; -class spider_mysql_share: public spider_mbase_share -{ -public: - spider_mysql_share( - st_spider_share *share - ); +class spider_mysql_share : public spider_mbase_share { + public: + spider_mysql_share(st_spider_share *share); ~spider_mysql_share(); }; -class spider_mariadb_share: public spider_mbase_share -{ -public: - spider_mariadb_share( - st_spider_share *share - ); +class spider_mariadb_share : public spider_mbase_share { + public: + spider_mariadb_share(st_spider_share *share); ~spider_mariadb_share(); }; -class spider_mbase_handler: public spider_db_handler -{ -protected: - spider_db_mbase_util *spider_db_mbase_utility; - spider_string sql; - spider_string sql_part; - spider_string sql_part2; - spider_string ha_sql; - int where_pos; - int order_pos; - int limit_pos; -public: - int table_name_pos; -protected: - int ha_read_pos; - int ha_next_pos; - int ha_where_pos; - int ha_limit_pos; - int ha_table_name_pos; - uint ha_sql_handler_id; - spider_string insert_sql; - int insert_pos; - int insert_table_name_pos; - spider_string update_sql; - TABLE *upd_tmp_tbl; - TMP_TABLE_PARAM upd_tmp_tbl_prm; - spider_string tmp_sql; - int tmp_sql_pos1; /* drop db nm pos at tmp_table_join */ - int tmp_sql_pos2; /* create db nm pos at tmp_table_join */ - int tmp_sql_pos3; /* insert db nm pos at tmp_table_join */ - int tmp_sql_pos4; /* insert val pos at tmp_table_join */ - int tmp_sql_pos5; /* end of drop tbl at tmp_table_join */ - spider_string dup_update_sql; - spider_string *exec_sql; - spider_string *exec_insert_sql; - spider_string *exec_update_sql; - spider_string *exec_tmp_sql; - spider_string *exec_ha_sql; - bool reading_from_bulk_tmp_table; - bool filled_up; +class spider_mbase_handler : public spider_db_handler { + protected: + spider_db_mbase_util *spider_db_mbase_utility; + spider_string sql; + spider_string sql_part; + spider_string sql_part2; + spider_string ha_sql; + int where_pos; + int order_pos; + int limit_pos; + + public: + int table_name_pos; + + protected: + int ha_read_pos; + int ha_next_pos; + int ha_where_pos; + int ha_limit_pos; + int ha_table_name_pos; + uint ha_sql_handler_id; + spider_string insert_sql; + int insert_pos; + int insert_table_name_pos; + spider_string update_sql; + TABLE *upd_tmp_tbl; + TMP_TABLE_PARAM upd_tmp_tbl_prm; + spider_string tmp_sql; + int tmp_sql_pos1; /* drop db nm pos at tmp_table_join */ + int tmp_sql_pos2; /* create db nm pos at tmp_table_join */ + int tmp_sql_pos3; /* insert db nm pos at tmp_table_join */ + int tmp_sql_pos4; /* insert val pos at tmp_table_join */ + int tmp_sql_pos5; /* end of drop tbl at tmp_table_join */ + spider_string dup_update_sql; + spider_string *exec_sql; + spider_string *exec_insert_sql; + spider_string *exec_update_sql; + spider_string *exec_tmp_sql; + spider_string *exec_ha_sql; + bool reading_from_bulk_tmp_table; + bool filled_up; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) SPIDER_DB_HS_STRING_REF_BUFFER hs_upds; #endif - SPIDER_INT_HLD *union_table_name_pos_first; - SPIDER_INT_HLD *union_table_name_pos_current; -public: - spider_mbase_share *mysql_share; - SPIDER_LINK_FOR_HASH *link_for_hash; - uchar *minimum_select_bitmap; - uchar direct_insert_kind; - spider_mbase_handler( - ha_spider *spider, - spider_mbase_share *share, - spider_db_mbase_util *spider_db_mbase_utility - ); + SPIDER_INT_HLD *union_table_name_pos_first; + SPIDER_INT_HLD *union_table_name_pos_current; + + public: + spider_mbase_share *mysql_share; + SPIDER_LINK_FOR_HASH *link_for_hash; + uchar *minimum_select_bitmap; + uchar direct_insert_kind; + spider_mbase_handler(ha_spider *spider, spider_mbase_share *share, + spider_db_mbase_util *spider_db_mbase_utility); virtual ~spider_mbase_handler(); int init(); - int append_index_hint( - spider_string *str, - int link_idx, - ulong sql_type - ); - int append_table_name_with_adjusting( - spider_string *str, - int link_idx, - ulong sql_type - ); - int append_key_column_types( - const key_range *start_key, - spider_string *str - ); - int append_key_join_columns_for_bka( - const key_range *start_key, - spider_string *str, - const char **table_aliases, - uint *table_alias_lengths - ); - int append_tmp_table_and_sql_for_bka( - const key_range *start_key - ); + int append_index_hint(spider_string *str, int link_idx, ulong sql_type); + int append_table_name_with_adjusting(spider_string *str, int link_idx, + ulong sql_type); + int append_key_column_types(const key_range *start_key, spider_string *str); + int append_key_join_columns_for_bka(const key_range *start_key, + spider_string *str, + const char **table_aliases, + uint *table_alias_lengths); + int append_tmp_table_and_sql_for_bka(const key_range *start_key); int reuse_tmp_table_and_sql_for_bka(); - void create_tmp_bka_table_name( - char *tmp_table_name, - int *tmp_table_name_length, - int link_idx - ); - int append_create_tmp_bka_table( - const key_range *start_key, - spider_string *str, - char *tmp_table_name, - int tmp_table_name_length, - int *db_name_pos, - CHARSET_INFO *table_charset - ); - int append_drop_tmp_bka_table( - spider_string *str, - char *tmp_table_name, - int tmp_table_name_length, - int *db_name_pos, - int *drop_table_end_pos, - bool with_semicolon - ); - int append_insert_tmp_bka_table( - const key_range *start_key, - spider_string *str, - char *tmp_table_name, - int tmp_table_name_length, - int *db_name_pos - ); - int append_union_table_and_sql_for_bka( - const key_range *start_key - ); + void create_tmp_bka_table_name(char *tmp_table_name, + int *tmp_table_name_length, int link_idx); + int append_create_tmp_bka_table(const key_range *start_key, + spider_string *str, char *tmp_table_name, + int tmp_table_name_length, int *db_name_pos, + CHARSET_INFO *table_charset); + int append_drop_tmp_bka_table(spider_string *str, char *tmp_table_name, + int tmp_table_name_length, int *db_name_pos, + int *drop_table_end_pos, bool with_semicolon); + int append_insert_tmp_bka_table(const key_range *start_key, + spider_string *str, char *tmp_table_name, + int tmp_table_name_length, int *db_name_pos); + int append_union_table_and_sql_for_bka(const key_range *start_key); int reuse_union_table_and_sql_for_bka(); - int append_insert_for_recovery( - ulong sql_type, - int link_idx - ); - int append_update( - const TABLE *table, - my_ptrdiff_t ptr_diff - ); - int append_update( - const TABLE *table, - my_ptrdiff_t ptr_diff, - int link_idx - ); - int append_delete( - const TABLE *table, - my_ptrdiff_t ptr_diff - ); - int append_delete( - const TABLE *table, - my_ptrdiff_t ptr_diff, - int link_idx - ); + int append_insert_for_recovery(ulong sql_type, int link_idx); + int append_update(const TABLE *table, my_ptrdiff_t ptr_diff); + int append_update(const TABLE *table, my_ptrdiff_t ptr_diff, int link_idx); + int append_delete(const TABLE *table, my_ptrdiff_t ptr_diff); + int append_delete(const TABLE *table, my_ptrdiff_t ptr_diff, int link_idx); int append_insert_part(); - int append_insert( - spider_string *str, - int link_idx - ); + int append_insert(spider_string *str, int link_idx); int append_update_part(); - int append_update( - spider_string *str, - int link_idx - ); + int append_update(spider_string *str, int link_idx); int append_delete_part(); - int append_delete( - spider_string *str - ); - #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS + int append_delete(spider_string *str); +#if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) +#ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS int append_increment_update_set_part(); - int append_increment_update_set( - spider_string *str - ); - #endif - #endif + int append_increment_update_set(spider_string *str); +#endif +#endif int append_update_set_part(); - int append_update_set( - spider_string *str - ); - #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS + int append_update_set(spider_string *str); +#ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS int append_direct_update_set_part(); - int append_direct_update_set( - spider_string *str - ); - int append_dup_update_pushdown_part( - const char *alias, - uint alias_length - ); - int append_update_columns_part( - const char *alias, - uint alias_length - ); + int append_direct_update_set(spider_string *str); + int append_dup_update_pushdown_part(const char *alias, uint alias_length); + int append_update_columns_part(const char *alias, uint alias_length); int check_update_columns_part(); - int append_update_columns( - spider_string *str, - const char *alias, - uint alias_length - ); - #endif - int append_select_part( - ulong sql_type - ); - int append_select( - spider_string *str, - ulong sql_type - ); - int append_table_select_part( - ulong sql_type - ); - int append_table_select( - spider_string *str - ); - int append_key_select_part( - ulong sql_type, - uint idx - ); - int append_key_select( - spider_string *str, - uint idx - ); - int append_minimum_select_part( - ulong sql_type - ); - int append_minimum_select( - spider_string *str, - ulong sql_type - ); - int append_table_select_with_alias( - spider_string *str, - const char *alias, - uint alias_length - ); - int append_key_select_with_alias( - spider_string *str, - const KEY *key_info, - const char *alias, - uint alias_length - ); - int append_minimum_select_with_alias( - spider_string *str, - const char *alias, - uint alias_length - ); - int append_select_columns_with_alias( - spider_string *str, - const char *alias, - uint alias_length - ); - int append_hint_after_table_part( - ulong sql_type - ); - int append_hint_after_table( - spider_string *str - ); - void set_where_pos( - ulong sql_type - ); - void set_where_to_pos( - ulong sql_type - ); - int check_item_type( - Item *item - ); - int append_values_connector_part( - ulong sql_type - ); - int append_values_connector( - spider_string *str - ); - int append_values_terminator_part( - ulong sql_type - ); - int append_values_terminator( - spider_string *str - ); - int append_union_table_connector_part( - ulong sql_type - ); - int append_union_table_connector( - spider_string *str - ); - int append_union_table_terminator_part( - ulong sql_type - ); - int append_union_table_terminator( - spider_string *str - ); - int append_key_column_values_part( - const key_range *start_key, - ulong sql_type - ); - int append_key_column_values( - spider_string *str, - const key_range *start_key - ); - int append_key_column_values_with_name_part( - const key_range *start_key, - ulong sql_type - ); - int append_key_column_values_with_name( - spider_string *str, - const key_range *start_key - ); - int append_key_where_part( - const key_range *start_key, - const key_range *end_key, - ulong sql_type - ); - int append_key_where( - spider_string *str, - spider_string *str_part, - spider_string *str_part2, - const key_range *start_key, - const key_range *end_key, - ulong sql_type, - bool set_order - ); - int append_is_null_part( - ulong sql_type, - KEY_PART_INFO *key_part, - const key_range *key, - const uchar **ptr, - bool key_eq, - bool tgt_final - ); - int append_is_null( - ulong sql_type, - spider_string *str, - spider_string *str_part, - spider_string *str_part2, - KEY_PART_INFO *key_part, - const key_range *key, - const uchar **ptr, - bool key_eq, - bool tgt_final - ); - int append_where_terminator_part( - ulong sql_type, - bool set_order, - int key_count - ); - int append_where_terminator( - ulong sql_type, - spider_string *str, - spider_string *str_part, - spider_string *str_part2, - bool set_order, - int key_count - ); - int append_match_where_part( - ulong sql_type - ); - int append_match_where( - spider_string *str - ); - int append_update_where( - spider_string *str, - const TABLE *table, - my_ptrdiff_t ptr_diff - ); - int append_condition_part( - const char *alias, - uint alias_length, - ulong sql_type, - bool test_flg - ); - int append_condition( - spider_string *str, - const char *alias, - uint alias_length, - bool start_where, - ulong sql_type - ); - int append_match_against_part( - ulong sql_type, - st_spider_ft_info *ft_info, - const char *alias, - uint alias_length - ); - int append_match_against( - spider_string *str, - st_spider_ft_info *ft_info, - const char *alias, - uint alias_length - ); - int append_match_select_part( - ulong sql_type, - const char *alias, - uint alias_length - ); - int append_match_select( - spider_string *str, - const char *alias, - uint alias_length - ); + int append_update_columns(spider_string *str, const char *alias, + uint alias_length); +#endif + int append_select_part(ulong sql_type); + int append_select(spider_string *str, ulong sql_type); + int append_table_select_part(ulong sql_type); + int append_table_select(spider_string *str); + int append_key_select_part(ulong sql_type, uint idx); + int append_key_select(spider_string *str, uint idx); + int append_minimum_select_part(ulong sql_type); + int append_minimum_select(spider_string *str, ulong sql_type); + int append_table_select_with_alias(spider_string *str, const char *alias, + uint alias_length); + int append_key_select_with_alias(spider_string *str, const KEY *key_info, + const char *alias, uint alias_length); + int append_minimum_select_with_alias(spider_string *str, const char *alias, + uint alias_length); + int append_select_columns_with_alias(spider_string *str, const char *alias, + uint alias_length); + int append_hint_after_table_part(ulong sql_type); + int append_hint_after_table(spider_string *str); + void set_where_pos(ulong sql_type); + void set_where_to_pos(ulong sql_type); + int check_item_type(Item *item); + int append_values_connector_part(ulong sql_type); + int append_values_connector(spider_string *str); + int append_values_terminator_part(ulong sql_type); + int append_values_terminator(spider_string *str); + int append_union_table_connector_part(ulong sql_type); + int append_union_table_connector(spider_string *str); + int append_union_table_terminator_part(ulong sql_type); + int append_union_table_terminator(spider_string *str); + int append_key_column_values_part(const key_range *start_key, ulong sql_type); + int append_key_column_values(spider_string *str, const key_range *start_key); + int append_key_column_values_with_name_part(const key_range *start_key, + ulong sql_type); + int append_key_column_values_with_name(spider_string *str, + const key_range *start_key); + int append_key_where_part(const key_range *start_key, + const key_range *end_key, ulong sql_type); + int append_key_where(spider_string *str, spider_string *str_part, + spider_string *str_part2, const key_range *start_key, + const key_range *end_key, ulong sql_type, + bool set_order); + int append_is_null_part(ulong sql_type, KEY_PART_INFO *key_part, + const key_range *key, const uchar **ptr, bool key_eq, + bool tgt_final); + int append_is_null(ulong sql_type, spider_string *str, + spider_string *str_part, spider_string *str_part2, + KEY_PART_INFO *key_part, const key_range *key, + const uchar **ptr, bool key_eq, bool tgt_final); + int append_where_terminator_part(ulong sql_type, bool set_order, + int key_count); + int append_where_terminator(ulong sql_type, spider_string *str, + spider_string *str_part, spider_string *str_part2, + bool set_order, int key_count); + int append_match_where_part(ulong sql_type); + int append_match_where(spider_string *str); + int append_update_where(spider_string *str, const TABLE *table, + my_ptrdiff_t ptr_diff); + int append_condition_part(const char *alias, uint alias_length, + ulong sql_type, bool test_flg); + int append_condition(spider_string *str, const char *alias, uint alias_length, + bool start_where, ulong sql_type); + int append_match_against_part(ulong sql_type, st_spider_ft_info *ft_info, + const char *alias, uint alias_length); + int append_match_against(spider_string *str, st_spider_ft_info *ft_info, + const char *alias, uint alias_length); + int append_match_select_part(ulong sql_type, const char *alias, + uint alias_length); + int append_match_select(spider_string *str, const char *alias, + uint alias_length); #ifdef HANDLER_HAS_DIRECT_AGGREGATE - int append_sum_select_part( - ulong sql_type, - const char *alias, - uint alias_length - ); - int append_sum_select( - spider_string *str, - const char *alias, - uint alias_length - ); + int append_sum_select_part(ulong sql_type, const char *alias, + uint alias_length); + int append_sum_select(spider_string *str, const char *alias, + uint alias_length); #endif - void set_order_pos( - ulong sql_type - ); - void set_order_to_pos( - ulong sql_type - ); + void set_order_pos(ulong sql_type); + void set_order_to_pos(ulong sql_type); #ifdef HANDLER_HAS_DIRECT_AGGREGATE - int append_group_by_part( - const char *alias, - uint alias_length, - ulong sql_type - ); - int append_group_by( - spider_string *str, - const char *alias, - uint alias_length - ); + int append_group_by_part(const char *alias, uint alias_length, + ulong sql_type); + int append_group_by(spider_string *str, const char *alias, uint alias_length); #endif - int append_key_order_for_merge_with_alias_part( - const char *alias, - uint alias_length, - ulong sql_type - ); - int append_key_order_for_merge_with_alias( - spider_string *str, - const char *alias, - uint alias_length - ); - int append_key_order_for_direct_order_limit_with_alias_part( - const char *alias, - uint alias_length, - ulong sql_type - ); - int append_key_order_for_direct_order_limit_with_alias( - spider_string *str, - const char *alias, - uint alias_length - ); - int append_key_order_with_alias_part( - const char *alias, - uint alias_length, - ulong sql_type - ); - int append_key_order_for_handler( - spider_string *str, - const char *alias, - uint alias_length - ); - int append_key_order_with_alias( - spider_string *str, - const char *alias, - uint alias_length - ); - int append_limit_part( - longlong offset, - longlong limit, - ulong sql_type - ); - int reappend_limit_part( - longlong offset, - longlong limit, - ulong sql_type - ); - int append_limit( - spider_string *str, - longlong offset, - longlong limit - ); - int append_select_lock_part( - ulong sql_type - ); - int append_select_lock( - spider_string *str - ); - int append_union_all_start_part( - ulong sql_type - ); - int append_union_all_start( - spider_string *str - ); - int append_union_all_part( - ulong sql_type - ); - int append_union_all( - spider_string *str - ); - int append_union_all_end_part( - ulong sql_type - ); - int append_union_all_end( - spider_string *str - ); - int append_multi_range_cnt_part( - ulong sql_type, - uint multi_range_cnt, - bool with_comma - ); - int append_multi_range_cnt( - spider_string *str, - uint multi_range_cnt, - bool with_comma - ); - int append_multi_range_cnt_with_name_part( - ulong sql_type, - uint multi_range_cnt - ); - int append_multi_range_cnt_with_name( - spider_string *str, - uint multi_range_cnt - ); - int append_open_handler_part( - ulong sql_type, - uint handler_id, - SPIDER_CONN *conn, - int link_idx - ); - int append_open_handler( - spider_string *str, - uint handler_id, - SPIDER_CONN *conn, - int link_idx - ); - int append_close_handler_part( - ulong sql_type, - int link_idx - ); - int append_close_handler( - spider_string *str, - int link_idx - ); - int append_insert_terminator_part( - ulong sql_type - ); - int append_insert_terminator( - spider_string *str - ); - int append_insert_values_part( - ulong sql_type - ); - int append_insert_values( - spider_string *str - ); - int append_into_part( - ulong sql_type - ); - int append_into( - spider_string *str - ); - void set_insert_to_pos( - ulong sql_type - ); - int append_from_part( - ulong sql_type, - int link_idx - ); - int append_from( - spider_string *str, - ulong sql_type, - int link_idx - ); - int append_flush_tables_part( - ulong sql_type, - int link_idx, - bool lock - ); - int append_flush_tables( - spider_string *str, - int link_idx, - bool lock - ); - int append_optimize_table_part( - ulong sql_type, - int link_idx - ); - int append_optimize_table( - spider_string *str, - int link_idx - ); - int append_analyze_table_part( - ulong sql_type, - int link_idx - ); - int append_analyze_table( - spider_string *str, - int link_idx - ); - int append_repair_table_part( - ulong sql_type, - int link_idx, - HA_CHECK_OPT* check_opt - ); - int append_repair_table( - spider_string *str, - int link_idx, - HA_CHECK_OPT* check_opt - ); - int append_check_table_part( - ulong sql_type, - int link_idx, - HA_CHECK_OPT* check_opt - ); - int append_check_table( - spider_string *str, - int link_idx, - HA_CHECK_OPT* check_opt - ); - int append_enable_keys_part( - ulong sql_type, - int link_idx - ); - int append_enable_keys( - spider_string *str, - int link_idx - ); - int append_disable_keys_part( - ulong sql_type, - int link_idx - ); - int append_disable_keys( - spider_string *str, - int link_idx - ); - int append_delete_all_rows_part( - ulong sql_type - ); - int append_delete_all_rows( - spider_string *str, - ulong sql_type - ); - int append_truncate( - spider_string *str, - ulong sql_type, - int link_idx - ); - int append_explain_select_part( - const key_range *start_key, - const key_range *end_key, - ulong sql_type, - int link_idx - ); - int append_explain_select( - spider_string *str, - const key_range *start_key, - const key_range *end_key, - ulong sql_type, - int link_idx - ); - bool is_sole_projection_field( - uint16 field_index - ); - bool is_bulk_insert_exec_period( - bool bulk_end - ); - bool sql_is_filled_up( - ulong sql_type - ); - bool sql_is_empty( - ulong sql_type - ); + int append_key_order_for_merge_with_alias_part(const char *alias, + uint alias_length, + ulong sql_type); + int append_key_order_for_merge_with_alias(spider_string *str, + const char *alias, + uint alias_length); + int append_key_order_for_direct_order_limit_with_alias_part(const char *alias, + uint alias_length, + ulong sql_type); + int append_key_order_for_direct_order_limit_with_alias(spider_string *str, + const char *alias, + uint alias_length); + int append_key_order_with_alias_part(const char *alias, uint alias_length, + ulong sql_type); + int append_key_order_for_handler(spider_string *str, const char *alias, + uint alias_length); + int append_key_order_with_alias(spider_string *str, const char *alias, + uint alias_length); + int append_limit_part(longlong offset, longlong limit, ulong sql_type); + int reappend_limit_part(longlong offset, longlong limit, ulong sql_type); + int append_limit(spider_string *str, longlong offset, longlong limit); + int append_select_lock_part(ulong sql_type); + int append_select_lock(spider_string *str); + int append_union_all_start_part(ulong sql_type); + int append_union_all_start(spider_string *str); + int append_union_all_part(ulong sql_type); + int append_union_all(spider_string *str); + int append_union_all_end_part(ulong sql_type); + int append_union_all_end(spider_string *str); + int append_multi_range_cnt_part(ulong sql_type, uint multi_range_cnt, + bool with_comma); + int append_multi_range_cnt(spider_string *str, uint multi_range_cnt, + bool with_comma); + int append_multi_range_cnt_with_name_part(ulong sql_type, + uint multi_range_cnt); + int append_multi_range_cnt_with_name(spider_string *str, + uint multi_range_cnt); + int append_open_handler_part(ulong sql_type, uint handler_id, + SPIDER_CONN *conn, int link_idx); + int append_open_handler(spider_string *str, uint handler_id, + SPIDER_CONN *conn, int link_idx); + int append_close_handler_part(ulong sql_type, int link_idx); + int append_close_handler(spider_string *str, int link_idx); + int append_insert_terminator_part(ulong sql_type); + int append_insert_terminator(spider_string *str); + int append_insert_values_part(ulong sql_type); + int append_insert_values(spider_string *str); + int append_into_part(ulong sql_type); + int append_into(spider_string *str); + void set_insert_to_pos(ulong sql_type); + int append_from_part(ulong sql_type, int link_idx); + int append_from(spider_string *str, ulong sql_type, int link_idx); + int append_flush_tables_part(ulong sql_type, int link_idx, bool lock); + int append_flush_tables(spider_string *str, int link_idx, bool lock); + int append_optimize_table_part(ulong sql_type, int link_idx); + int append_optimize_table(spider_string *str, int link_idx); + int append_analyze_table_part(ulong sql_type, int link_idx); + int append_analyze_table(spider_string *str, int link_idx); + int append_repair_table_part(ulong sql_type, int link_idx, + HA_CHECK_OPT *check_opt); + int append_repair_table(spider_string *str, int link_idx, + HA_CHECK_OPT *check_opt); + int append_check_table_part(ulong sql_type, int link_idx, + HA_CHECK_OPT *check_opt); + int append_check_table(spider_string *str, int link_idx, + HA_CHECK_OPT *check_opt); + int append_enable_keys_part(ulong sql_type, int link_idx); + int append_enable_keys(spider_string *str, int link_idx); + int append_disable_keys_part(ulong sql_type, int link_idx); + int append_disable_keys(spider_string *str, int link_idx); + int append_delete_all_rows_part(ulong sql_type); + int append_delete_all_rows(spider_string *str, ulong sql_type); + int append_truncate(spider_string *str, ulong sql_type, int link_idx); + int append_explain_select_part(const key_range *start_key, + const key_range *end_key, ulong sql_type, + int link_idx); + int append_explain_select(spider_string *str, const key_range *start_key, + const key_range *end_key, ulong sql_type, + int link_idx); + bool is_sole_projection_field(uint16 field_index); + bool is_bulk_insert_exec_period(bool bulk_end); + bool sql_is_filled_up(ulong sql_type); + bool sql_is_empty(ulong sql_type); bool support_multi_split_read(); bool support_bulk_update(); int bulk_tmp_table_insert(); - int bulk_tmp_table_insert( - int link_idx - ); + int bulk_tmp_table_insert(int link_idx); int bulk_tmp_table_end_bulk_insert(); int bulk_tmp_table_rnd_init(); int bulk_tmp_table_rnd_next(); int bulk_tmp_table_rnd_end(); - bool need_copy_for_update( - int link_idx - ); + bool need_copy_for_update(int link_idx); bool bulk_tmp_table_created(); int mk_bulk_tmp_table_and_bulk_start(); void rm_bulk_tmp_table(); - int store_sql_to_bulk_tmp_table( - spider_string *str, - TABLE *tmp_table - ); - int restore_sql_from_bulk_tmp_table( - spider_string *str, - TABLE *tmp_table - ); - int insert_lock_tables_list( - SPIDER_CONN *conn, - int link_idx - ); - int append_lock_tables_list( - SPIDER_CONN *conn, - int link_idx, - int *appended - ); - int realloc_sql( - ulong *realloced - ); - int reset_sql( - ulong sql_type - ); + int store_sql_to_bulk_tmp_table(spider_string *str, TABLE *tmp_table); + int restore_sql_from_bulk_tmp_table(spider_string *str, TABLE *tmp_table); + int insert_lock_tables_list(SPIDER_CONN *conn, int link_idx); + int append_lock_tables_list(SPIDER_CONN *conn, int link_idx, int *appended); + int realloc_sql(ulong *realloced); + int reset_sql(ulong sql_type); #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - int reset_keys( - ulong sql_type - ); - int reset_upds( - ulong sql_type - ); - int reset_strs( - ulong sql_type - ); - int reset_strs_pos( - ulong sql_type - ); - int push_back_upds( - SPIDER_HS_STRING_REF &info - ); + int reset_keys(ulong sql_type); + int reset_upds(ulong sql_type); + int reset_strs(ulong sql_type); + int reset_strs_pos(ulong sql_type); + int push_back_upds(SPIDER_HS_STRING_REF &info); #endif - bool need_lock_before_set_sql_for_exec( - ulong sql_type - ); + bool need_lock_before_set_sql_for_exec(ulong sql_type); #ifdef SPIDER_HAS_GROUP_BY_HANDLER - int set_sql_for_exec( - ulong sql_type, - int link_idx, - SPIDER_LINK_IDX_CHAIN *link_idx_chain - ); + int set_sql_for_exec(ulong sql_type, int link_idx, + SPIDER_LINK_IDX_CHAIN *link_idx_chain); #endif - int set_sql_for_exec( - ulong sql_type, - int link_idx - ); - int set_sql_for_exec( - spider_db_copy_table *tgt_ct, - ulong sql_type - ); - int execute_sql( - ulong sql_type, - SPIDER_CONN *conn, - int quick_mode, - int *need_mon - ); + int set_sql_for_exec(ulong sql_type, int link_idx); + int set_sql_for_exec(spider_db_copy_table *tgt_ct, ulong sql_type); + int execute_sql(ulong sql_type, SPIDER_CONN *conn, int quick_mode, + int *need_mon); int reset(); - int sts_mode_exchange( - int sts_mode - ); - int show_table_status( - int link_idx, - int sts_mode, - uint flag - ); - int crd_mode_exchange( - int crd_mode - ); - int show_index( - int link_idx, - int crd_mode - ); - int simple_action( - uint simple_action, - int link_idx - ); - int show_records( - int link_idx - ); + int sts_mode_exchange(int sts_mode); + int show_table_status(int link_idx, int sts_mode, uint flag); + int crd_mode_exchange(int crd_mode); + int show_index(int link_idx, int crd_mode); + int simple_action(uint simple_action, int link_idx); + int show_records(int link_idx); #ifdef HA_HAS_CHECKSUM_EXTENDED - int checksum_table( - int link_idx - ); + int checksum_table(int link_idx); #endif - int show_last_insert_id( - int link_idx, - ulonglong &last_insert_id - ); - ha_rows explain_select( - const key_range *start_key, - const key_range *end_key, - int link_idx - ); - int lock_tables( - int link_idx - ); - int unlock_tables( - int link_idx - ); - int disable_keys( - SPIDER_CONN *conn, - int link_idx - ); - int enable_keys( - SPIDER_CONN *conn, - int link_idx - ); - int check_table( - SPIDER_CONN *conn, - int link_idx, - HA_CHECK_OPT* check_opt - ); - int repair_table( - SPIDER_CONN *conn, - int link_idx, - HA_CHECK_OPT* check_opt - ); - int analyze_table( - SPIDER_CONN *conn, - int link_idx - ); - int optimize_table( - SPIDER_CONN *conn, - int link_idx - ); - int flush_tables( - SPIDER_CONN *conn, - int link_idx, - bool lock - ); - int flush_logs( - SPIDER_CONN *conn, - int link_idx - ); - int insert_opened_handler( - SPIDER_CONN *conn, - int link_idx - ); - int delete_opened_handler( - SPIDER_CONN *conn, - int link_idx - ); - int sync_from_clone_source( - spider_db_handler *dbton_hdl - ); - bool support_use_handler( - int use_handler - ); + int show_last_insert_id(int link_idx, ulonglong &last_insert_id); + ha_rows explain_select(const key_range *start_key, const key_range *end_key, + int link_idx); + int lock_tables(int link_idx); + int unlock_tables(int link_idx); + int disable_keys(SPIDER_CONN *conn, int link_idx); + int enable_keys(SPIDER_CONN *conn, int link_idx); + int check_table(SPIDER_CONN *conn, int link_idx, HA_CHECK_OPT *check_opt); + int repair_table(SPIDER_CONN *conn, int link_idx, HA_CHECK_OPT *check_opt); + int analyze_table(SPIDER_CONN *conn, int link_idx); + int optimize_table(SPIDER_CONN *conn, int link_idx); + int flush_tables(SPIDER_CONN *conn, int link_idx, bool lock); + int flush_logs(SPIDER_CONN *conn, int link_idx); + int insert_opened_handler(SPIDER_CONN *conn, int link_idx); + int delete_opened_handler(SPIDER_CONN *conn, int link_idx); + int sync_from_clone_source(spider_db_handler *dbton_hdl); + bool support_use_handler(int use_handler); void minimum_select_bitmap_create(); - bool minimum_select_bit_is_set( - uint field_index - ); - void copy_minimum_select_bitmap( - uchar *bitmap - ); + bool minimum_select_bit_is_set(uint field_index); + void copy_minimum_select_bitmap(uchar *bitmap); int init_union_table_name_pos(); int set_union_table_name_pos(); - int reset_union_table_name( - spider_string *str, - int link_idx, - ulong sql_type - ); + int reset_union_table_name(spider_string *str, int link_idx, ulong sql_type); #ifdef SPIDER_HAS_GROUP_BY_HANDLER - int append_from_and_tables_part( - spider_fields *fields, - ulong sql_type - ); - int reappend_tables_part( - spider_fields *fields, - ulong sql_type - ); - int append_where_part( - ulong sql_type - ); - int append_having_part( - ulong sql_type - ); - int append_item_type_part( - Item *item, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields, - ulong sql_type - ); - int append_list_item_select_part( - List<Item> *select, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields, - ulong sql_type - ); - int append_list_item_select( - List<Item> *select, - spider_string *str, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields - ); - int append_group_by_part( - ORDER *order, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields, - ulong sql_type - ); - int append_group_by( - ORDER *order, - spider_string *str, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields - ); - int append_order_by_part( - ORDER *order, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields, - ulong sql_type - ); - int append_order_by( - ORDER *order, - spider_string *str, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields - ); + int append_from_and_tables_part(spider_fields *fields, ulong sql_type); + int reappend_tables_part(spider_fields *fields, ulong sql_type); + int append_where_part(ulong sql_type); + int append_having_part(ulong sql_type); + int append_item_type_part(Item *item, const char *alias, uint alias_length, + bool use_fields, spider_fields *fields, + ulong sql_type); + int append_list_item_select_part(List<Item> *select, const char *alias, + uint alias_length, bool use_fields, + spider_fields *fields, ulong sql_type); + int append_list_item_select(List<Item> *select, spider_string *str, + const char *alias, uint alias_length, + bool use_fields, spider_fields *fields); + int append_group_by_part(ORDER *order, const char *alias, uint alias_length, + bool use_fields, spider_fields *fields, + ulong sql_type); + int append_group_by(ORDER *order, spider_string *str, const char *alias, + uint alias_length, bool use_fields, + spider_fields *fields); + int append_order_by_part(ORDER *order, const char *alias, uint alias_length, + bool use_fields, spider_fields *fields, + ulong sql_type); + int append_order_by(ORDER *order, spider_string *str, const char *alias, + uint alias_length, bool use_fields, + spider_fields *fields); #endif #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS - bool check_direct_update( - st_select_lex *select_lex, - longlong select_limit, - longlong offset_limit - ); - bool check_direct_delete( - st_select_lex *select_lex, - longlong select_limit, - longlong offset_limit - ); + bool check_direct_update(st_select_lex *select_lex, longlong select_limit, + longlong offset_limit); + bool check_direct_delete(st_select_lex *select_lex, longlong select_limit, + longlong offset_limit); #endif }; -class spider_mysql_handler: public spider_mbase_handler -{ -public: - spider_mysql_handler( - ha_spider *spider, - spider_mbase_share *share - ); +class spider_mysql_handler : public spider_mbase_handler { + public: + spider_mysql_handler(ha_spider *spider, spider_mbase_share *share); ~spider_mysql_handler(); }; -class spider_mariadb_handler: public spider_mbase_handler -{ -public: - spider_mariadb_handler( - ha_spider *spider, - spider_mbase_share *share - ); +class spider_mariadb_handler : public spider_mbase_handler { + public: + spider_mariadb_handler(ha_spider *spider, spider_mbase_share *share); ~spider_mariadb_handler(); }; -class spider_mbase_copy_table: public spider_db_copy_table -{ -public: - spider_mbase_share *mysql_share; - spider_string sql; - uint pos; - spider_mbase_copy_table( - spider_mbase_share *db_share - ); +class spider_mbase_copy_table : public spider_db_copy_table { + public: + spider_mbase_share *mysql_share; + spider_string sql; + uint pos; + spider_mbase_copy_table(spider_mbase_share *db_share); virtual ~spider_mbase_copy_table(); int init(); - void set_sql_charset( - CHARSET_INFO *cs - ); + void set_sql_charset(CHARSET_INFO *cs); int append_select_str(); - int append_insert_str( - int insert_flg - ); - int append_table_columns( - TABLE_SHARE *table_share - ); + int append_insert_str(int insert_flg); + int append_table_columns(TABLE_SHARE *table_share); int append_from_str(); - int append_table_name( - int link_idx - ); + int append_table_name(int link_idx); void set_sql_pos(); void set_sql_to_pos(); - int append_copy_where( - spider_db_copy_table *source_ct, - KEY *key_info, - ulong *last_row_pos, - ulong *last_lengths - ); - int append_key_order_str( - KEY *key_info, - int start_pos, - bool desc_flg - ); - int append_limit( - longlong offset, - longlong limit - ); + int append_copy_where(spider_db_copy_table *source_ct, KEY *key_info, + ulong *last_row_pos, ulong *last_lengths); + int append_key_order_str(KEY *key_info, int start_pos, bool desc_flg); + int append_limit(longlong offset, longlong limit); int append_into_str(); int append_open_paren_str(); int append_values_str(); - int append_select_lock_str( - int lock_mode - ); - int exec_query( - SPIDER_CONN *conn, - int quick_mode, - int *need_mon - ); - int copy_key_row( - spider_db_copy_table *source_ct, - Field *field, - ulong *row_pos, - ulong *length, - const char *joint_str, - const int joint_length - ); - int copy_row( - Field *field, - SPIDER_DB_ROW *row - ); - int copy_rows( - TABLE *table, - SPIDER_DB_ROW *row, - ulong **last_row_pos, - ulong **last_lengths - ); - int copy_rows( - TABLE *table, - SPIDER_DB_ROW *row - ); + int append_select_lock_str(int lock_mode); + int exec_query(SPIDER_CONN *conn, int quick_mode, int *need_mon); + int copy_key_row(spider_db_copy_table *source_ct, Field *field, + ulong *row_pos, ulong *length, const char *joint_str, + const int joint_length); + int copy_row(Field *field, SPIDER_DB_ROW *row); + int copy_rows(TABLE *table, SPIDER_DB_ROW *row, ulong **last_row_pos, + ulong **last_lengths); + int copy_rows(TABLE *table, SPIDER_DB_ROW *row); int append_insert_terminator(); - int copy_insert_values( - spider_db_copy_table *source_ct - ); + int copy_insert_values(spider_db_copy_table *source_ct); }; -class spider_mysql_copy_table: public spider_mbase_copy_table -{ -public: - spider_mysql_copy_table( - spider_mbase_share *db_share - ); +class spider_mysql_copy_table : public spider_mbase_copy_table { + public: + spider_mysql_copy_table(spider_mbase_share *db_share); ~spider_mysql_copy_table(); }; -class spider_mariadb_copy_table: public spider_mbase_copy_table -{ -public: - spider_mariadb_copy_table( - spider_mbase_share *db_share - ); +class spider_mariadb_copy_table : public spider_mbase_copy_table { + public: + spider_mariadb_copy_table(spider_mbase_share *db_share); ~spider_mariadb_copy_table(); }; diff --git a/storage/spider/spd_db_oracle.h b/storage/spider/spd_db_oracle.h index c8c1522599f..81caa626ae6 100644 --- a/storage/spider/spd_db_oracle.h +++ b/storage/spider/spd_db_oracle.h @@ -11,216 +11,111 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA +*/ class spider_db_oracle; class spider_db_oracle_result; -class spider_db_oracle_util: public spider_db_util -{ -public: +class spider_db_oracle_util : public spider_db_util { + public: spider_db_oracle_util(); ~spider_db_oracle_util(); - int append_name( - spider_string *str, - const char *name, - uint name_length - ); - int append_name_with_charset( - spider_string *str, - const char *name, - uint name_length, - CHARSET_INFO *name_charset - ); - int append_escaped_name( - spider_string *str, - const char *name, - uint name_length - ); - int append_escaped_name_with_charset( - spider_string *str, - const char *name, - uint name_length, - CHARSET_INFO *name_charset - ); - bool is_name_quote( - const char head_code - ); - int append_escaped_name_quote( - spider_string *str - ); - int append_column_value( - ha_spider *spider, - spider_string *str, - Field *field, - const uchar *new_ptr, - CHARSET_INFO *access_charset - ); - int append_from_with_alias( - spider_string *str, - const char **table_names, - uint *table_name_lengths, - const char **table_aliases, - uint *table_alias_lengths, - uint table_count, - int *table_name_pos, - bool over_write - ); - int append_trx_isolation( - spider_string *str, - int trx_isolation - ); - int append_autocommit( - spider_string *str, - bool autocommit - ); - int append_sql_log_off( - spider_string *str, - bool sql_log_off - ); - int append_wait_timeout( - spider_string *str, - int wait_timeout - ); - int append_sql_mode( - spider_string *str, - sql_mode_t sql_mode - ); - int append_time_zone( - spider_string *str, - Time_zone *time_zone - ); - int append_start_transaction( - spider_string *str - ); - int append_xa_start( - spider_string *str, - XID *xid - ); - int append_lock_table_head( - spider_string *str - ); - int append_lock_table_body( - spider_string *str, - const char *db_name, - uint db_name_length, - CHARSET_INFO *db_name_charset, - const char *table_name, - uint table_name_length, - CHARSET_INFO *table_name_charset, - int lock_type - ); - int append_lock_table_tail( - spider_string *str - ); - int append_unlock_table( - spider_string *str - ); - int open_item_func( - Item_func *item_func, - ha_spider *spider, - spider_string *str, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields - ); + int append_name(spider_string *str, const char *name, uint name_length); + int append_name_with_charset(spider_string *str, const char *name, + uint name_length, CHARSET_INFO *name_charset); + int append_escaped_name(spider_string *str, const char *name, + uint name_length); + int append_escaped_name_with_charset(spider_string *str, const char *name, + uint name_length, + CHARSET_INFO *name_charset); + bool is_name_quote(const char head_code); + int append_escaped_name_quote(spider_string *str); + int append_column_value(ha_spider *spider, spider_string *str, Field *field, + const uchar *new_ptr, CHARSET_INFO *access_charset); + int append_from_with_alias(spider_string *str, const char **table_names, + uint *table_name_lengths, + const char **table_aliases, + uint *table_alias_lengths, uint table_count, + int *table_name_pos, bool over_write); + int append_trx_isolation(spider_string *str, int trx_isolation); + int append_autocommit(spider_string *str, bool autocommit); + int append_sql_log_off(spider_string *str, bool sql_log_off); + int append_wait_timeout(spider_string *str, int wait_timeout); + int append_sql_mode(spider_string *str, sql_mode_t sql_mode); + int append_time_zone(spider_string *str, Time_zone *time_zone); + int append_start_transaction(spider_string *str); + int append_xa_start(spider_string *str, XID *xid); + int append_lock_table_head(spider_string *str); + int append_lock_table_body(spider_string *str, const char *db_name, + uint db_name_length, CHARSET_INFO *db_name_charset, + const char *table_name, uint table_name_length, + CHARSET_INFO *table_name_charset, int lock_type); + int append_lock_table_tail(spider_string *str); + int append_unlock_table(spider_string *str); + int open_item_func(Item_func *item_func, ha_spider *spider, + spider_string *str, const char *alias, uint alias_length, + bool use_fields, spider_fields *fields); #ifdef HANDLER_HAS_DIRECT_AGGREGATE - int open_item_sum_func( - Item_sum *item_sum, - ha_spider *spider, - spider_string *str, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields - ); + int open_item_sum_func(Item_sum *item_sum, ha_spider *spider, + spider_string *str, const char *alias, + uint alias_length, bool use_fields, + spider_fields *fields); #endif - size_t escape_string( - char *to, - const char *from, - size_t from_length, - CHARSET_INFO *access_charset - ); - int append_escaped_util( - spider_string *to, - String *from - ); + size_t escape_string(char *to, const char *from, size_t from_length, + CHARSET_INFO *access_charset); + int append_escaped_util(spider_string *to, String *from); #ifdef SPIDER_HAS_GROUP_BY_HANDLER - int append_from_and_tables( - ha_spider *spider, - spider_fields *fields, - spider_string *str, - TABLE_LIST *table_list, - uint table_count - ); - int reappend_tables( - spider_fields *fields, - SPIDER_LINK_IDX_CHAIN *link_idx_chain, - spider_string *str - ); - int append_where( - spider_string *str - ); - int append_having( - spider_string *str - ); + int append_from_and_tables(ha_spider *spider, spider_fields *fields, + spider_string *str, TABLE_LIST *table_list, + uint table_count); + int reappend_tables(spider_fields *fields, + SPIDER_LINK_IDX_CHAIN *link_idx_chain, + spider_string *str); + int append_where(spider_string *str); + int append_having(spider_string *str); #endif }; -class spider_db_oracle_row: public spider_db_row -{ -public: - spider_db_oracle *db_conn; +class spider_db_oracle_row : public spider_db_row { + public: + spider_db_oracle *db_conn; spider_db_oracle_result *result; - sb2 *ind; - char **val; - ub2 *rlen; - sb2 *ind_first; - char **val_first; - ub2 *rlen_first; - spider_string *val_str; - spider_string *val_str_first; - OCIDefine **defnp; - OCILobLocator **lobhp; - OCIParam **colhp; - ub2 *coltp; - ub2 *colsz; - uint field_count; - uint record_size; - ulong *row_size; - ulong *row_size_first; - CHARSET_INFO *access_charset; - bool cloned; - spider_db_oracle_util util; + sb2 *ind; + char **val; + ub2 *rlen; + sb2 *ind_first; + char **val_first; + ub2 *rlen_first; + spider_string *val_str; + spider_string *val_str_first; + OCIDefine **defnp; + OCILobLocator **lobhp; + OCIParam **colhp; + ub2 *coltp; + ub2 *colsz; + uint field_count; + uint record_size; + ulong *row_size; + ulong *row_size_first; + CHARSET_INFO *access_charset; + bool cloned; + spider_db_oracle_util util; spider_db_oracle_row(); ~spider_db_oracle_row(); - int store_to_field( - Field *field, - CHARSET_INFO *access_charset - ); - int append_to_str( - spider_string *str - ); - int append_escaped_to_str( - spider_string *str, - uint dbton_id - ); + int store_to_field(Field *field, CHARSET_INFO *access_charset); + int append_to_str(spider_string *str); + int append_escaped_to_str(spider_string *str, uint dbton_id); void first(); void next(); bool is_null(); int val_int(); double val_real(); - my_decimal *val_decimal( - my_decimal *decimal_value, - CHARSET_INFO *access_charset - ); + my_decimal *val_decimal(my_decimal *decimal_value, + CHARSET_INFO *access_charset); SPIDER_DB_ROW *clone(); - int store_to_tmp_table( - TABLE *tmp_table, - spider_string *str - ); + int store_to_tmp_table(TABLE *tmp_table, spider_string *str); uint get_byte_size(); /* for oracle */ int init(); @@ -229,16 +124,15 @@ public: int fetch(); }; -class spider_db_oracle_result: public spider_db_result -{ -public: +class spider_db_oracle_result : public spider_db_result { + public: spider_db_oracle *db_conn; - OCIStmt *stmtp; - uint field_count; - CHARSET_INFO *access_charset; - bool fetched; + OCIStmt *stmtp; + uint field_count; + CHARSET_INFO *access_charset; + bool fetched; spider_db_oracle_row row; - int store_error_num; + int store_error_num; spider_db_oracle_result(SPIDER_DB_CONN *in_db_conn); ~spider_db_oracle_result(); @@ -247,379 +141,210 @@ public: SPIDER_DB_ROW *current_row(); SPIDER_DB_ROW *fetch_row(); SPIDER_DB_ROW *fetch_row_from_result_buffer( - spider_db_result_buffer *spider_res_buf - ); - SPIDER_DB_ROW *fetch_row_from_tmp_table( - TABLE *tmp_table - ); - int fetch_table_status( - int mode, - ha_statistics &stat - ); - int fetch_table_records( - int mode, - ha_rows &records - ); - int fetch_table_cardinality( - int mode, - TABLE *table, - longlong *cardinality, - uchar *cardinality_upd, - int bitmap_size - ); - int fetch_table_mon_status( - int &status - ); + spider_db_result_buffer *spider_res_buf); + SPIDER_DB_ROW *fetch_row_from_tmp_table(TABLE *tmp_table); + int fetch_table_status(int mode, ha_statistics &stat); + int fetch_table_records(int mode, ha_rows &records); + int fetch_table_cardinality(int mode, TABLE *table, longlong *cardinality, + uchar *cardinality_upd, int bitmap_size); + int fetch_table_mon_status(int &status); longlong num_rows(); uint num_fields(); - void move_to_pos( - longlong pos - ); + void move_to_pos(longlong pos); int get_errno(); #ifdef SPIDER_HAS_DISCOVER_TABLE_STRUCTURE - int fetch_columns_for_discover_table_structure( - spider_string *str, - CHARSET_INFO *access_charset - ); - int fetch_index_for_discover_table_structure( - spider_string *str, - CHARSET_INFO *access_charset - ); - int fetch_table_for_discover_table_structure( - spider_string *str, - SPIDER_SHARE *spider_share, - CHARSET_INFO *access_charset - ); + int fetch_columns_for_discover_table_structure(spider_string *str, + CHARSET_INFO *access_charset); + int fetch_index_for_discover_table_structure(spider_string *str, + CHARSET_INFO *access_charset); + int fetch_table_for_discover_table_structure(spider_string *str, + SPIDER_SHARE *spider_share, + CHARSET_INFO *access_charset); #endif /* for oracle */ int set_column_info(); }; -class spider_db_oracle: public spider_db_conn -{ -public: - OCIEnv *envhp; - OCIError *errhp; - OCIServer *srvhp; - OCISvcCtx *svchp; +class spider_db_oracle : public spider_db_conn { + public: + OCIEnv *envhp; + OCIError *errhp; + OCIServer *srvhp; + OCISvcCtx *svchp; OCISession *usrhp; - OCIStmt *stmtp; - OCITrans *txnhp; + OCIStmt *stmtp; + OCITrans *txnhp; spider_db_oracle_result *result; - int stored_error_num; - const char *stored_error; - uint update_rows; - int table_lock_mode; - spider_string *exec_lock_sql; - spider_db_oracle_util util; - ulonglong stored_last_insert_id; - HASH lock_table_hash; - bool lock_table_hash_inited; - uint lock_table_hash_id; - const char *lock_table_hash_func_name; - const char *lock_table_hash_file_name; - ulong lock_table_hash_line_no; - DYNAMIC_ARRAY handler_open_array; - bool handler_open_array_inited; - uint handler_open_array_id; - const char *handler_open_array_func_name; - const char *handler_open_array_file_name; - ulong handler_open_array_line_no; + int stored_error_num; + const char *stored_error; + uint update_rows; + int table_lock_mode; + spider_string *exec_lock_sql; + spider_db_oracle_util util; + ulonglong stored_last_insert_id; + HASH lock_table_hash; + bool lock_table_hash_inited; + uint lock_table_hash_id; + const char *lock_table_hash_func_name; + const char *lock_table_hash_file_name; + ulong lock_table_hash_line_no; + DYNAMIC_ARRAY handler_open_array; + bool handler_open_array_inited; + uint handler_open_array_id; + const char *handler_open_array_func_name; + const char *handler_open_array_file_name; + ulong handler_open_array_line_no; /* for bg_connect */ - char stored_error_msg[MYSQL_ERRMSG_SIZE]; - char *tgt_host; - char *tgt_username; - char *tgt_password; - long tgt_port; - char *tgt_socket; - char *server_name; - int connect_retry_count; - longlong connect_retry_interval; + char stored_error_msg[MYSQL_ERRMSG_SIZE]; + char *tgt_host; + char *tgt_username; + char *tgt_password; + long tgt_port; + char *tgt_socket; + char *server_name; + int connect_retry_count; + longlong connect_retry_interval; - spider_db_oracle( - SPIDER_CONN *conn - ); + spider_db_oracle(SPIDER_CONN *conn); ~spider_db_oracle(); int init(); bool is_connected(); void bg_connect(); - int connect( - char *tgt_host, - char *tgt_username, - char *tgt_password, - long tgt_port, - char *tgt_socket, - char *server_name, - int connect_retry_count, - longlong connect_retry_interval - ); + int connect(char *tgt_host, char *tgt_username, char *tgt_password, + long tgt_port, char *tgt_socket, char *server_name, + int connect_retry_count, longlong connect_retry_interval); int ping(); void bg_disconnect(); void disconnect(); int set_net_timeout(); - int exec_query( - const char *query, - uint length, - int quick_mode - ); + int exec_query(const char *query, uint length, int quick_mode); int get_errno(); const char *get_error(); - bool is_server_gone_error( - int error_num - ); - bool is_dup_entry_error( - int error_num - ); - bool is_xa_nota_error( - int error_num - ); - spider_db_result *store_result( - spider_db_result_buffer **spider_res_buf, - st_spider_db_request_key *request_key, - int *error_num - ); - spider_db_result *use_result( - ha_spider *spider, - st_spider_db_request_key *request_key, - int *error_num - ); + bool is_server_gone_error(int error_num); + bool is_dup_entry_error(int error_num); + bool is_xa_nota_error(int error_num); + spider_db_result *store_result(spider_db_result_buffer **spider_res_buf, + st_spider_db_request_key *request_key, + int *error_num); + spider_db_result *use_result(ha_spider *spider, + st_spider_db_request_key *request_key, + int *error_num); int next_result(); uint affected_rows(); uint matched_rows(); - bool inserted_info( - spider_db_handler *handler, - ha_copy_info *copy_info - ); + bool inserted_info(spider_db_handler *handler, ha_copy_info *copy_info); ulonglong last_insert_id(); - int set_character_set( - const char *csname - ); - int select_db( - const char *dbname - ); - int consistent_snapshot( - int *need_mon - ); + int set_character_set(const char *csname); + int select_db(const char *dbname); + int consistent_snapshot(int *need_mon); bool trx_start_in_bulk_sql(); - int start_transaction( - int *need_mon - ); - int commit( - int *need_mon - ); - int rollback( - int *need_mon - ); + int start_transaction(int *need_mon); + int commit(int *need_mon); + int rollback(int *need_mon); bool xa_start_in_bulk_sql(); - int xa_start( - XID *xid, - int *need_mon - ); - int xa_end( - XID *xid, - int *need_mon - ); - int xa_prepare( - XID *xid, - int *need_mon - ); - int xa_commit( - XID *xid, - int *need_mon - ); - int xa_rollback( - XID *xid, - int *need_mon - ); + int xa_start(XID *xid, int *need_mon); + int xa_end(XID *xid, int *need_mon); + int xa_prepare(XID *xid, int *need_mon); + int xa_commit(XID *xid, int *need_mon); + int xa_rollback(XID *xid, int *need_mon); bool set_trx_isolation_in_bulk_sql(); - int set_trx_isolation( - int trx_isolation, - int *need_mon - ); + int set_trx_isolation(int trx_isolation, int *need_mon); bool set_autocommit_in_bulk_sql(); - int set_autocommit( - bool autocommit, - int *need_mon - ); + int set_autocommit(bool autocommit, int *need_mon); bool set_sql_log_off_in_bulk_sql(); - int set_sql_log_off( - bool sql_log_off, - int *need_mon - ); + int set_sql_log_off(bool sql_log_off, int *need_mon); bool set_wait_timeout_in_bulk_sql(); - int set_wait_timeout( - int wait_timeout, - int *need_mon - ); + int set_wait_timeout(int wait_timeout, int *need_mon); bool set_sql_mode_in_bulk_sql(); - int set_sql_mode( - sql_mode_t sql_mode, - int *need_mon - ); + int set_sql_mode(sql_mode_t sql_mode, int *need_mon); bool set_time_zone_in_bulk_sql(); - int set_time_zone( - Time_zone *time_zone, - int *need_mon - ); - int show_master_status( - SPIDER_TRX *trx, - SPIDER_SHARE *share, - int all_link_idx, - int *need_mon, - TABLE *table, - spider_string *str, - int mode, - SPIDER_DB_RESULT **res1, - SPIDER_DB_RESULT **res2 - ); + int set_time_zone(Time_zone *time_zone, int *need_mon); + int show_master_status(SPIDER_TRX *trx, SPIDER_SHARE *share, int all_link_idx, + int *need_mon, TABLE *table, spider_string *str, + int mode, SPIDER_DB_RESULT **res1, + SPIDER_DB_RESULT **res2); #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - int append_sql( - char *sql, - ulong sql_length, - st_spider_db_request_key *request_key - ); - int append_open_handler( - uint handler_id, - const char *db_name, - const char *table_name, - const char *index_name, - const char *sql, - st_spider_db_request_key *request_key - ); - int append_select( - uint handler_id, - spider_string *sql, - SPIDER_DB_HS_STRING_REF_BUFFER *keys, - int limit, - int skip, - st_spider_db_request_key *request_key - ); - int append_insert( - uint handler_id, - SPIDER_DB_HS_STRING_REF_BUFFER *upds, - st_spider_db_request_key *request_key - ); - int append_update( - uint handler_id, - spider_string *sql, - SPIDER_DB_HS_STRING_REF_BUFFER *keys, - SPIDER_DB_HS_STRING_REF_BUFFER *upds, - int limit, - int skip, - bool increment, - bool decrement, - st_spider_db_request_key *request_key - ); - int append_delete( - uint handler_id, - spider_string *sql, - SPIDER_DB_HS_STRING_REF_BUFFER *keys, - int limit, - int skip, - st_spider_db_request_key *request_key - ); + int append_sql(char *sql, ulong sql_length, + st_spider_db_request_key *request_key); + int append_open_handler(uint handler_id, const char *db_name, + const char *table_name, const char *index_name, + const char *sql, + st_spider_db_request_key *request_key); + int append_select(uint handler_id, spider_string *sql, + SPIDER_DB_HS_STRING_REF_BUFFER *keys, int limit, int skip, + st_spider_db_request_key *request_key); + int append_insert(uint handler_id, SPIDER_DB_HS_STRING_REF_BUFFER *upds, + st_spider_db_request_key *request_key); + int append_update(uint handler_id, spider_string *sql, + SPIDER_DB_HS_STRING_REF_BUFFER *keys, + SPIDER_DB_HS_STRING_REF_BUFFER *upds, int limit, int skip, + bool increment, bool decrement, + st_spider_db_request_key *request_key); + int append_delete(uint handler_id, spider_string *sql, + SPIDER_DB_HS_STRING_REF_BUFFER *keys, int limit, int skip, + st_spider_db_request_key *request_key); void reset_request_queue(); #endif - size_t escape_string( - char *to, - const char *from, - size_t from_length - ); + size_t escape_string(char *to, const char *from, size_t from_length); bool have_lock_table_list(); - int append_lock_tables( - spider_string *str - ); - int append_unlock_tables( - spider_string *str - ); + int append_lock_tables(spider_string *str); + int append_unlock_tables(spider_string *str); uint get_lock_table_hash_count(); void reset_lock_table_hash(); uint get_opened_handler_count(); void reset_opened_handler(); - void set_dup_key_idx( - ha_spider *spider, - int link_idx - ); - bool cmp_request_key_to_snd( - st_spider_db_request_key *request_key - ); -private: - int set_error( - sword res, - dvoid *hndlp, - int error_num, - const char *error1, - const char *error2 - ); + void set_dup_key_idx(ha_spider *spider, int link_idx); + bool cmp_request_key_to_snd(st_spider_db_request_key *request_key); + + private: + int set_error(sword res, dvoid *hndlp, int error_num, const char *error1, + const char *error2); }; -class spider_oracle_share: public spider_db_share -{ -public: - spider_string *table_select; - int table_select_pos; - spider_string *key_select; - int *key_select_pos; - spider_string *key_hint; - spider_string *show_table_status; - spider_string *show_records; - spider_string *show_autoinc; - spider_string *show_last_insert_id; - spider_string *show_index; - spider_string *table_names_str; - spider_string *db_names_str; - spider_string *db_table_str; - spider_string *nextval_str; +class spider_oracle_share : public spider_db_share { + public: + spider_string *table_select; + int table_select_pos; + spider_string *key_select; + int *key_select_pos; + spider_string *key_hint; + spider_string *show_table_status; + spider_string *show_records; + spider_string *show_autoinc; + spider_string *show_last_insert_id; + spider_string *show_index; + spider_string *table_names_str; + spider_string *db_names_str; + spider_string *db_table_str; + spider_string *nextval_str; #ifdef SPIDER_HAS_HASH_VALUE_TYPE my_hash_value_type *db_table_str_hash_value; #endif - uint table_nm_max_length; - uint db_nm_max_length; - uint nextval_max_length; - spider_string *column_name_str; - bool same_db_table_name; - int first_all_link_idx; + uint table_nm_max_length; + uint db_nm_max_length; + uint nextval_max_length; + spider_string *column_name_str; + bool same_db_table_name; + int first_all_link_idx; - spider_oracle_share( - st_spider_share *share - ); + spider_oracle_share(st_spider_share *share); ~spider_oracle_share(); int init(); - uint get_column_name_length( - uint field_index - ); - int append_column_name( - spider_string *str, - uint field_index - ); - int append_column_name_with_alias( - spider_string *str, - uint field_index, - const char *alias, - uint alias_length - ); - int append_table_name( - spider_string *str, - int all_link_idx - ); - int append_table_name_with_adjusting( - spider_string *str, - int all_link_idx - ); - int append_from_with_adjusted_table_name( - spider_string *str, - int *table_name_pos - ); + uint get_column_name_length(uint field_index); + int append_column_name(spider_string *str, uint field_index); + int append_column_name_with_alias(spider_string *str, uint field_index, + const char *alias, uint alias_length); + int append_table_name(spider_string *str, int all_link_idx); + int append_table_name_with_adjusting(spider_string *str, int all_link_idx); + int append_from_with_adjusted_table_name(spider_string *str, + int *table_name_pos); bool need_change_db_table_name(); #ifdef SPIDER_HAS_DISCOVER_TABLE_STRUCTURE - int discover_table_structure( - SPIDER_TRX *trx, - SPIDER_SHARE *spider_share, - spider_string *str - ); + int discover_table_structure(SPIDER_TRX *trx, SPIDER_SHARE *spider_share, + spider_string *str); #endif -private: + private: int create_table_names_str(); void free_table_names_str(); int create_column_name_str(); @@ -636,1000 +361,418 @@ private: int append_show_index(); void free_show_index(); int append_table_select(); - int append_key_select( - uint idx - ); + int append_key_select(uint idx); }; -class spider_oracle_handler: public spider_db_handler -{ - spider_string sql; - spider_string sql_part; - spider_string sql_part2; - spider_string ha_sql; - int where_pos; - int order_pos; - int limit_pos; -public: - int table_name_pos; -private: - int update_set_pos; - int ha_read_pos; - int ha_next_pos; - int ha_where_pos; - int ha_limit_pos; - int ha_table_name_pos; - uint ha_sql_handler_id; - spider_string insert_sql; - int insert_pos; - int insert_table_name_pos; - int nextval_pos; - spider_string update_sql; - TABLE *upd_tmp_tbl; - TMP_TABLE_PARAM upd_tmp_tbl_prm; - spider_string tmp_sql; - int tmp_sql_pos1; /* drop db nm pos at tmp_table_join */ - int tmp_sql_pos2; /* create db nm pos at tmp_table_join */ - int tmp_sql_pos3; /* insert db nm pos at tmp_table_join */ - int tmp_sql_pos4; /* insert val pos at tmp_table_join */ - int tmp_sql_pos5; /* end of drop tbl at tmp_table_join */ - spider_string dup_update_sql; - spider_string *exec_sql; - spider_string *exec_insert_sql; - spider_string *exec_update_sql; - spider_string *exec_tmp_sql; - spider_string *exec_ha_sql; - spider_string *exec_lock_sql; - int table_lock_mode; - bool reading_from_bulk_tmp_table; - bool filled_up; - bool select_rownum_appended; - bool update_rownum_appended; +class spider_oracle_handler : public spider_db_handler { + spider_string sql; + spider_string sql_part; + spider_string sql_part2; + spider_string ha_sql; + int where_pos; + int order_pos; + int limit_pos; + + public: + int table_name_pos; + + private: + int update_set_pos; + int ha_read_pos; + int ha_next_pos; + int ha_where_pos; + int ha_limit_pos; + int ha_table_name_pos; + uint ha_sql_handler_id; + spider_string insert_sql; + int insert_pos; + int insert_table_name_pos; + int nextval_pos; + spider_string update_sql; + TABLE *upd_tmp_tbl; + TMP_TABLE_PARAM upd_tmp_tbl_prm; + spider_string tmp_sql; + int tmp_sql_pos1; /* drop db nm pos at tmp_table_join */ + int tmp_sql_pos2; /* create db nm pos at tmp_table_join */ + int tmp_sql_pos3; /* insert db nm pos at tmp_table_join */ + int tmp_sql_pos4; /* insert val pos at tmp_table_join */ + int tmp_sql_pos5; /* end of drop tbl at tmp_table_join */ + spider_string dup_update_sql; + spider_string *exec_sql; + spider_string *exec_insert_sql; + spider_string *exec_update_sql; + spider_string *exec_tmp_sql; + spider_string *exec_ha_sql; + spider_string *exec_lock_sql; + int table_lock_mode; + bool reading_from_bulk_tmp_table; + bool filled_up; + bool select_rownum_appended; + bool update_rownum_appended; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) SPIDER_DB_HS_STRING_REF_BUFFER hs_upds; #endif - SPIDER_INT_HLD *union_table_name_pos_first; - SPIDER_INT_HLD *union_table_name_pos_current; -public: - spider_oracle_share *oracle_share; - SPIDER_LINK_FOR_HASH *link_for_hash; - uchar *minimum_select_bitmap; - spider_oracle_handler( - ha_spider *spider, - spider_oracle_share *share - ); + SPIDER_INT_HLD *union_table_name_pos_first; + SPIDER_INT_HLD *union_table_name_pos_current; + + public: + spider_oracle_share *oracle_share; + SPIDER_LINK_FOR_HASH *link_for_hash; + uchar *minimum_select_bitmap; + spider_oracle_handler(ha_spider *spider, spider_oracle_share *share); ~spider_oracle_handler(); int init(); - int spider_oracle_handler::append_index_hint( - spider_string *str, - int link_idx, - ulong sql_type - ); - int append_table_name_with_adjusting( - spider_string *str, - int link_idx, - ulong sql_type - ); - int append_key_column_types( - const key_range *start_key, - spider_string *str - ); - int append_key_join_columns_for_bka( - const key_range *start_key, - spider_string *str, - const char **table_aliases, - uint *table_alias_lengths - ); - int append_tmp_table_and_sql_for_bka( - const key_range *start_key - ); + int spider_oracle_handler::append_index_hint(spider_string *str, int link_idx, + ulong sql_type); + int append_table_name_with_adjusting(spider_string *str, int link_idx, + ulong sql_type); + int append_key_column_types(const key_range *start_key, spider_string *str); + int append_key_join_columns_for_bka(const key_range *start_key, + spider_string *str, + const char **table_aliases, + uint *table_alias_lengths); + int append_tmp_table_and_sql_for_bka(const key_range *start_key); int reuse_tmp_table_and_sql_for_bka(); - void create_tmp_bka_table_name( - char *tmp_table_name, - int *tmp_table_name_length, - int link_idx - ); - int append_create_tmp_bka_table( - const key_range *start_key, - spider_string *str, - char *tmp_table_name, - int tmp_table_name_length, - int *db_name_pos, - CHARSET_INFO *table_charset - ); - int append_drop_tmp_bka_table( - spider_string *str, - char *tmp_table_name, - int tmp_table_name_length, - int *db_name_pos, - int *drop_table_end_pos, - bool with_semicolon - ); - int append_insert_tmp_bka_table( - const key_range *start_key, - spider_string *str, - char *tmp_table_name, - int tmp_table_name_length, - int *db_name_pos - ); - int append_union_table_and_sql_for_bka( - const key_range *start_key - ); + void create_tmp_bka_table_name(char *tmp_table_name, + int *tmp_table_name_length, int link_idx); + int append_create_tmp_bka_table(const key_range *start_key, + spider_string *str, char *tmp_table_name, + int tmp_table_name_length, int *db_name_pos, + CHARSET_INFO *table_charset); + int append_drop_tmp_bka_table(spider_string *str, char *tmp_table_name, + int tmp_table_name_length, int *db_name_pos, + int *drop_table_end_pos, bool with_semicolon); + int append_insert_tmp_bka_table(const key_range *start_key, + spider_string *str, char *tmp_table_name, + int tmp_table_name_length, int *db_name_pos); + int append_union_table_and_sql_for_bka(const key_range *start_key); int reuse_union_table_and_sql_for_bka(); - int append_insert_for_recovery( - ulong sql_type, - int link_idx - ); - int append_update( - const TABLE *table, - my_ptrdiff_t ptr_diff - ); - int append_update( - const TABLE *table, - my_ptrdiff_t ptr_diff, - int link_idx - ); - int append_delete( - const TABLE *table, - my_ptrdiff_t ptr_diff - ); - int append_delete( - const TABLE *table, - my_ptrdiff_t ptr_diff, - int link_idx - ); + int append_insert_for_recovery(ulong sql_type, int link_idx); + int append_update(const TABLE *table, my_ptrdiff_t ptr_diff); + int append_update(const TABLE *table, my_ptrdiff_t ptr_diff, int link_idx); + int append_delete(const TABLE *table, my_ptrdiff_t ptr_diff); + int append_delete(const TABLE *table, my_ptrdiff_t ptr_diff, int link_idx); int append_insert_part(); - int append_insert( - spider_string *str, - int link_idx - ); + int append_insert(spider_string *str, int link_idx); int append_update_part(); - int append_update( - spider_string *str, - int link_idx - ); + int append_update(spider_string *str, int link_idx); int append_delete_part(); - int append_delete( - spider_string *str - ); - #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS + int append_delete(spider_string *str); +#if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) +#ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS int append_increment_update_set_part(); - int append_increment_update_set( - spider_string *str - ); - #endif - #endif + int append_increment_update_set(spider_string *str); +#endif +#endif int append_update_set_part(); - int append_update_set( - spider_string *str - ); - #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS + int append_update_set(spider_string *str); +#ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS int append_direct_update_set_part(); - int append_direct_update_set( - spider_string *str - ); - int append_dup_update_pushdown_part( - const char *alias, - uint alias_length - ); - int append_update_columns_part( - const char *alias, - uint alias_length - ); + int append_direct_update_set(spider_string *str); + int append_dup_update_pushdown_part(const char *alias, uint alias_length); + int append_update_columns_part(const char *alias, uint alias_length); int check_update_columns_part(); - int append_update_columns( - spider_string *str, - const char *alias, - uint alias_length - ); - #endif - int append_select_part( - ulong sql_type - ); - int append_select( - spider_string *str, - ulong sql_type - ); - int append_table_select_part( - ulong sql_type - ); - int append_table_select( - spider_string *str - ); - int append_key_select_part( - ulong sql_type, - uint idx - ); - int append_key_select( - spider_string *str, - uint idx - ); - int append_minimum_select_part( - ulong sql_type - ); - int append_minimum_select( - spider_string *str, - ulong sql_type - ); - int append_table_select_with_alias( - spider_string *str, - const char *alias, - uint alias_length - ); - int append_key_select_with_alias( - spider_string *str, - const KEY *key_info, - const char *alias, - uint alias_length - ); - int append_minimum_select_with_alias( - spider_string *str, - const char *alias, - uint alias_length - ); - int append_select_columns_with_alias( - spider_string *str, - const char *alias, - uint alias_length - ); - int append_hint_after_table_part( - ulong sql_type - ); - int append_hint_after_table( - spider_string *str - ); - void set_where_pos( - ulong sql_type - ); - void set_where_to_pos( - ulong sql_type - ); - int check_item_type( - Item *item - ); - int append_values_connector_part( - ulong sql_type - ); - int append_values_connector( - spider_string *str - ); - int append_values_terminator_part( - ulong sql_type - ); - int append_values_terminator( - spider_string *str - ); - int append_union_table_connector_part( - ulong sql_type - ); - int append_union_table_connector( - spider_string *str - ); - int append_union_table_terminator_part( - ulong sql_type - ); - int append_union_table_terminator( - spider_string *str - ); - int append_key_column_values_part( - const key_range *start_key, - ulong sql_type - ); - int append_key_column_values( - spider_string *str, - const key_range *start_key - ); - int append_key_column_values_with_name_part( - const key_range *start_key, - ulong sql_type - ); - int append_key_column_values_with_name( - spider_string *str, - const key_range *start_key - ); - int append_key_where_part( - const key_range *start_key, - const key_range *end_key, - ulong sql_type - ); - int append_key_where( - spider_string *str, - spider_string *str_part, - spider_string *str_part2, - const key_range *start_key, - const key_range *end_key, - ulong sql_type, - bool set_order - ); - int append_is_null_part( - ulong sql_type, - KEY_PART_INFO *key_part, - const key_range *key, - const uchar **ptr, - bool key_eq, - bool tgt_final - ); - int append_is_null( - ulong sql_type, - spider_string *str, - spider_string *str_part, - spider_string *str_part2, - KEY_PART_INFO *key_part, - const key_range *key, - const uchar **ptr, - bool key_eq, - bool tgt_final - ); - int append_where_terminator_part( - ulong sql_type, - bool set_order, - int key_count - ); - int append_where_terminator( - ulong sql_type, - spider_string *str, - spider_string *str_part, - spider_string *str_part2, - bool set_order, - int key_count - ); - int append_match_where_part( - ulong sql_type - ); - int append_match_where( - spider_string *str - ); - int append_update_where( - spider_string *str, - const TABLE *table, - my_ptrdiff_t ptr_diff - ); - int append_condition_part( - const char *alias, - uint alias_length, - ulong sql_type, - bool test_flg - ); - int append_condition( - spider_string *str, - const char *alias, - uint alias_length, - bool start_where, - ulong sql_type - ); - int append_match_against_part( - ulong sql_type, - st_spider_ft_info *ft_info, - const char *alias, - uint alias_length - ); - int append_match_against( - spider_string *str, - st_spider_ft_info *ft_info, - const char *alias, - uint alias_length - ); - int append_match_select_part( - ulong sql_type, - const char *alias, - uint alias_length - ); - int append_match_select( - spider_string *str, - const char *alias, - uint alias_length - ); + int append_update_columns(spider_string *str, const char *alias, + uint alias_length); +#endif + int append_select_part(ulong sql_type); + int append_select(spider_string *str, ulong sql_type); + int append_table_select_part(ulong sql_type); + int append_table_select(spider_string *str); + int append_key_select_part(ulong sql_type, uint idx); + int append_key_select(spider_string *str, uint idx); + int append_minimum_select_part(ulong sql_type); + int append_minimum_select(spider_string *str, ulong sql_type); + int append_table_select_with_alias(spider_string *str, const char *alias, + uint alias_length); + int append_key_select_with_alias(spider_string *str, const KEY *key_info, + const char *alias, uint alias_length); + int append_minimum_select_with_alias(spider_string *str, const char *alias, + uint alias_length); + int append_select_columns_with_alias(spider_string *str, const char *alias, + uint alias_length); + int append_hint_after_table_part(ulong sql_type); + int append_hint_after_table(spider_string *str); + void set_where_pos(ulong sql_type); + void set_where_to_pos(ulong sql_type); + int check_item_type(Item *item); + int append_values_connector_part(ulong sql_type); + int append_values_connector(spider_string *str); + int append_values_terminator_part(ulong sql_type); + int append_values_terminator(spider_string *str); + int append_union_table_connector_part(ulong sql_type); + int append_union_table_connector(spider_string *str); + int append_union_table_terminator_part(ulong sql_type); + int append_union_table_terminator(spider_string *str); + int append_key_column_values_part(const key_range *start_key, ulong sql_type); + int append_key_column_values(spider_string *str, const key_range *start_key); + int append_key_column_values_with_name_part(const key_range *start_key, + ulong sql_type); + int append_key_column_values_with_name(spider_string *str, + const key_range *start_key); + int append_key_where_part(const key_range *start_key, + const key_range *end_key, ulong sql_type); + int append_key_where(spider_string *str, spider_string *str_part, + spider_string *str_part2, const key_range *start_key, + const key_range *end_key, ulong sql_type, + bool set_order); + int append_is_null_part(ulong sql_type, KEY_PART_INFO *key_part, + const key_range *key, const uchar **ptr, bool key_eq, + bool tgt_final); + int append_is_null(ulong sql_type, spider_string *str, + spider_string *str_part, spider_string *str_part2, + KEY_PART_INFO *key_part, const key_range *key, + const uchar **ptr, bool key_eq, bool tgt_final); + int append_where_terminator_part(ulong sql_type, bool set_order, + int key_count); + int append_where_terminator(ulong sql_type, spider_string *str, + spider_string *str_part, spider_string *str_part2, + bool set_order, int key_count); + int append_match_where_part(ulong sql_type); + int append_match_where(spider_string *str); + int append_update_where(spider_string *str, const TABLE *table, + my_ptrdiff_t ptr_diff); + int append_condition_part(const char *alias, uint alias_length, + ulong sql_type, bool test_flg); + int append_condition(spider_string *str, const char *alias, uint alias_length, + bool start_where, ulong sql_type); + int append_match_against_part(ulong sql_type, st_spider_ft_info *ft_info, + const char *alias, uint alias_length); + int append_match_against(spider_string *str, st_spider_ft_info *ft_info, + const char *alias, uint alias_length); + int append_match_select_part(ulong sql_type, const char *alias, + uint alias_length); + int append_match_select(spider_string *str, const char *alias, + uint alias_length); #ifdef HANDLER_HAS_DIRECT_AGGREGATE - int append_sum_select_part( - ulong sql_type, - const char *alias, - uint alias_length - ); - int append_sum_select( - spider_string *str, - const char *alias, - uint alias_length - ); + int append_sum_select_part(ulong sql_type, const char *alias, + uint alias_length); + int append_sum_select(spider_string *str, const char *alias, + uint alias_length); #endif - void set_order_pos( - ulong sql_type - ); - void set_order_to_pos( - ulong sql_type - ); + void set_order_pos(ulong sql_type); + void set_order_to_pos(ulong sql_type); #ifdef HANDLER_HAS_DIRECT_AGGREGATE - int append_group_by_part( - const char *alias, - uint alias_length, - ulong sql_type - ); - int append_group_by( - spider_string *str, - const char *alias, - uint alias_length - ); + int append_group_by_part(const char *alias, uint alias_length, + ulong sql_type); + int append_group_by(spider_string *str, const char *alias, uint alias_length); #endif - int append_key_order_for_merge_with_alias_part( - const char *alias, - uint alias_length, - ulong sql_type - ); - int append_key_order_for_merge_with_alias( - spider_string *str, - const char *alias, - uint alias_length - ); - int append_key_order_for_direct_order_limit_with_alias_part( - const char *alias, - uint alias_length, - ulong sql_type - ); - int append_key_order_for_direct_order_limit_with_alias( - spider_string *str, - const char *alias, - uint alias_length - ); - int append_key_order_with_alias_part( - const char *alias, - uint alias_length, - ulong sql_type - ); - int append_key_order_for_handler( - spider_string *str, - const char *alias, - uint alias_length - ); - int append_key_order_with_alias( - spider_string *str, - const char *alias, - uint alias_length - ); - int append_limit_part( - longlong offset, - longlong limit, - ulong sql_type - ); - int reappend_limit_part( - longlong offset, - longlong limit, - ulong sql_type - ); - int append_limit( - spider_string *str, - longlong offset, - longlong limit - ); - int append_select_lock_part( - ulong sql_type - ); - int append_select_lock( - spider_string *str - ); - int append_union_all_start_part( - ulong sql_type - ); - int append_union_all_start( - spider_string *str - ); - int append_union_all_part( - ulong sql_type - ); - int append_union_all( - spider_string *str - ); - int append_union_all_end_part( - ulong sql_type - ); - int append_union_all_end( - spider_string *str - ); - int append_multi_range_cnt_part( - ulong sql_type, - uint multi_range_cnt, - bool with_comma - ); - int append_multi_range_cnt( - spider_string *str, - uint multi_range_cnt, - bool with_comma - ); - int append_multi_range_cnt_with_name_part( - ulong sql_type, - uint multi_range_cnt - ); - int append_multi_range_cnt_with_name( - spider_string *str, - uint multi_range_cnt - ); - int append_open_handler_part( - ulong sql_type, - uint handler_id, - SPIDER_CONN *conn, - int link_idx - ); - int append_open_handler( - spider_string *str, - uint handler_id, - SPIDER_CONN *conn, - int link_idx - ); - int append_close_handler_part( - ulong sql_type, - int link_idx - ); - int append_close_handler( - spider_string *str, - int link_idx - ); - int append_insert_terminator_part( - ulong sql_type - ); - int append_insert_terminator( - spider_string *str - ); - int append_insert_values_part( - ulong sql_type - ); - int append_insert_values( - spider_string *str - ); - int append_into_part( - ulong sql_type - ); - int append_into( - spider_string *str - ); - void set_insert_to_pos( - ulong sql_type - ); - int append_from_part( - ulong sql_type, - int link_idx - ); - int append_from( - spider_string *str, - ulong sql_type, - int link_idx - ); - int append_flush_tables_part( - ulong sql_type, - int link_idx, - bool lock - ); - int append_flush_tables( - spider_string *str, - int link_idx, - bool lock - ); - int append_optimize_table_part( - ulong sql_type, - int link_idx - ); - int append_optimize_table( - spider_string *str, - int link_idx - ); - int append_analyze_table_part( - ulong sql_type, - int link_idx - ); - int append_analyze_table( - spider_string *str, - int link_idx - ); - int append_repair_table_part( - ulong sql_type, - int link_idx, - HA_CHECK_OPT* check_opt - ); - int append_repair_table( - spider_string *str, - int link_idx, - HA_CHECK_OPT* check_opt - ); - int append_check_table_part( - ulong sql_type, - int link_idx, - HA_CHECK_OPT* check_opt - ); - int append_check_table( - spider_string *str, - int link_idx, - HA_CHECK_OPT* check_opt - ); - int append_enable_keys_part( - ulong sql_type, - int link_idx - ); - int append_enable_keys( - spider_string *str, - int link_idx - ); - int append_disable_keys_part( - ulong sql_type, - int link_idx - ); - int append_disable_keys( - spider_string *str, - int link_idx - ); - int append_delete_all_rows_part( - ulong sql_type - ); - int append_delete_all_rows( - spider_string *str, - ulong sql_type - ); - int append_truncate( - spider_string *str, - ulong sql_type, - int link_idx - ); - int append_explain_select_part( - const key_range *start_key, - const key_range *end_key, - ulong sql_type, - int link_idx - ); - int append_explain_select( - spider_string *str, - const key_range *start_key, - const key_range *end_key, - ulong sql_type, - int link_idx - ); - bool is_sole_projection_field( - uint16 field_index - ); - bool is_bulk_insert_exec_period( - bool bulk_end - ); - bool sql_is_filled_up( - ulong sql_type - ); - bool sql_is_empty( - ulong sql_type - ); + int append_key_order_for_merge_with_alias_part(const char *alias, + uint alias_length, + ulong sql_type); + int append_key_order_for_merge_with_alias(spider_string *str, + const char *alias, + uint alias_length); + int append_key_order_for_direct_order_limit_with_alias_part(const char *alias, + uint alias_length, + ulong sql_type); + int append_key_order_for_direct_order_limit_with_alias(spider_string *str, + const char *alias, + uint alias_length); + int append_key_order_with_alias_part(const char *alias, uint alias_length, + ulong sql_type); + int append_key_order_for_handler(spider_string *str, const char *alias, + uint alias_length); + int append_key_order_with_alias(spider_string *str, const char *alias, + uint alias_length); + int append_limit_part(longlong offset, longlong limit, ulong sql_type); + int reappend_limit_part(longlong offset, longlong limit, ulong sql_type); + int append_limit(spider_string *str, longlong offset, longlong limit); + int append_select_lock_part(ulong sql_type); + int append_select_lock(spider_string *str); + int append_union_all_start_part(ulong sql_type); + int append_union_all_start(spider_string *str); + int append_union_all_part(ulong sql_type); + int append_union_all(spider_string *str); + int append_union_all_end_part(ulong sql_type); + int append_union_all_end(spider_string *str); + int append_multi_range_cnt_part(ulong sql_type, uint multi_range_cnt, + bool with_comma); + int append_multi_range_cnt(spider_string *str, uint multi_range_cnt, + bool with_comma); + int append_multi_range_cnt_with_name_part(ulong sql_type, + uint multi_range_cnt); + int append_multi_range_cnt_with_name(spider_string *str, + uint multi_range_cnt); + int append_open_handler_part(ulong sql_type, uint handler_id, + SPIDER_CONN *conn, int link_idx); + int append_open_handler(spider_string *str, uint handler_id, + SPIDER_CONN *conn, int link_idx); + int append_close_handler_part(ulong sql_type, int link_idx); + int append_close_handler(spider_string *str, int link_idx); + int append_insert_terminator_part(ulong sql_type); + int append_insert_terminator(spider_string *str); + int append_insert_values_part(ulong sql_type); + int append_insert_values(spider_string *str); + int append_into_part(ulong sql_type); + int append_into(spider_string *str); + void set_insert_to_pos(ulong sql_type); + int append_from_part(ulong sql_type, int link_idx); + int append_from(spider_string *str, ulong sql_type, int link_idx); + int append_flush_tables_part(ulong sql_type, int link_idx, bool lock); + int append_flush_tables(spider_string *str, int link_idx, bool lock); + int append_optimize_table_part(ulong sql_type, int link_idx); + int append_optimize_table(spider_string *str, int link_idx); + int append_analyze_table_part(ulong sql_type, int link_idx); + int append_analyze_table(spider_string *str, int link_idx); + int append_repair_table_part(ulong sql_type, int link_idx, + HA_CHECK_OPT *check_opt); + int append_repair_table(spider_string *str, int link_idx, + HA_CHECK_OPT *check_opt); + int append_check_table_part(ulong sql_type, int link_idx, + HA_CHECK_OPT *check_opt); + int append_check_table(spider_string *str, int link_idx, + HA_CHECK_OPT *check_opt); + int append_enable_keys_part(ulong sql_type, int link_idx); + int append_enable_keys(spider_string *str, int link_idx); + int append_disable_keys_part(ulong sql_type, int link_idx); + int append_disable_keys(spider_string *str, int link_idx); + int append_delete_all_rows_part(ulong sql_type); + int append_delete_all_rows(spider_string *str, ulong sql_type); + int append_truncate(spider_string *str, ulong sql_type, int link_idx); + int append_explain_select_part(const key_range *start_key, + const key_range *end_key, ulong sql_type, + int link_idx); + int append_explain_select(spider_string *str, const key_range *start_key, + const key_range *end_key, ulong sql_type, + int link_idx); + bool is_sole_projection_field(uint16 field_index); + bool is_bulk_insert_exec_period(bool bulk_end); + bool sql_is_filled_up(ulong sql_type); + bool sql_is_empty(ulong sql_type); bool support_multi_split_read(); bool support_bulk_update(); int bulk_tmp_table_insert(); - int bulk_tmp_table_insert( - int link_idx - ); + int bulk_tmp_table_insert(int link_idx); int bulk_tmp_table_end_bulk_insert(); int bulk_tmp_table_rnd_init(); int bulk_tmp_table_rnd_next(); int bulk_tmp_table_rnd_end(); - bool need_copy_for_update( - int link_idx - ); + bool need_copy_for_update(int link_idx); bool bulk_tmp_table_created(); int mk_bulk_tmp_table_and_bulk_start(); void rm_bulk_tmp_table(); - int store_sql_to_bulk_tmp_table( - spider_string *str, - TABLE *tmp_table - ); - int restore_sql_from_bulk_tmp_table( - spider_string *str, - TABLE *tmp_table - ); - int insert_lock_tables_list( - SPIDER_CONN *conn, - int link_idx - ); - int append_lock_tables_list( - SPIDER_CONN *conn, - int link_idx, - int *appended - ); - int realloc_sql( - ulong *realloced - ); - int reset_sql( - ulong sql_type - ); + int store_sql_to_bulk_tmp_table(spider_string *str, TABLE *tmp_table); + int restore_sql_from_bulk_tmp_table(spider_string *str, TABLE *tmp_table); + int insert_lock_tables_list(SPIDER_CONN *conn, int link_idx); + int append_lock_tables_list(SPIDER_CONN *conn, int link_idx, int *appended); + int realloc_sql(ulong *realloced); + int reset_sql(ulong sql_type); #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - int reset_keys( - ulong sql_type - ); - int reset_upds( - ulong sql_type - ); - int reset_strs( - ulong sql_type - ); - int reset_strs_pos( - ulong sql_type - ); - int push_back_upds( - SPIDER_HS_STRING_REF &info - ); + int reset_keys(ulong sql_type); + int reset_upds(ulong sql_type); + int reset_strs(ulong sql_type); + int reset_strs_pos(ulong sql_type); + int push_back_upds(SPIDER_HS_STRING_REF &info); #endif - bool need_lock_before_set_sql_for_exec( - ulong sql_type - ); + bool need_lock_before_set_sql_for_exec(ulong sql_type); #ifdef SPIDER_HAS_GROUP_BY_HANDLER - int set_sql_for_exec( - ulong sql_type, - int link_idx, - SPIDER_LINK_IDX_CHAIN *link_idx_chain - ); + int set_sql_for_exec(ulong sql_type, int link_idx, + SPIDER_LINK_IDX_CHAIN *link_idx_chain); #endif - int set_sql_for_exec( - ulong sql_type, - int link_idx - ); - int set_sql_for_exec( - spider_db_copy_table *tgt_ct, - ulong sql_type - ); - int execute_sql( - ulong sql_type, - SPIDER_CONN *conn, - int quick_mode, - int *need_mon - ); + int set_sql_for_exec(ulong sql_type, int link_idx); + int set_sql_for_exec(spider_db_copy_table *tgt_ct, ulong sql_type); + int execute_sql(ulong sql_type, SPIDER_CONN *conn, int quick_mode, + int *need_mon); int reset(); - int sts_mode_exchange( - int sts_mode - ); - int show_table_status( - int link_idx, - int sts_mode, - uint flag - ); - int crd_mode_exchange( - int crd_mode - ); - int show_index( - int link_idx, - int crd_mode - ); - int show_records( - int link_idx - ); - int show_autoinc( - int link_idx - ); - int show_last_insert_id( - int link_idx, - ulonglong &last_insert_id - ); - ha_rows explain_select( - const key_range *start_key, - const key_range *end_key, - int link_idx - ); - int lock_tables( - int link_idx - ); - int unlock_tables( - int link_idx - ); - int disable_keys( - SPIDER_CONN *conn, - int link_idx - ); - int enable_keys( - SPIDER_CONN *conn, - int link_idx - ); - int check_table( - SPIDER_CONN *conn, - int link_idx, - HA_CHECK_OPT* check_opt - ); - int repair_table( - SPIDER_CONN *conn, - int link_idx, - HA_CHECK_OPT* check_opt - ); - int analyze_table( - SPIDER_CONN *conn, - int link_idx - ); - int optimize_table( - SPIDER_CONN *conn, - int link_idx - ); - int flush_tables( - SPIDER_CONN *conn, - int link_idx, - bool lock - ); - int flush_logs( - SPIDER_CONN *conn, - int link_idx - ); - int insert_opened_handler( - SPIDER_CONN *conn, - int link_idx - ); - int delete_opened_handler( - SPIDER_CONN *conn, - int link_idx - ); - int sync_from_clone_source( - spider_db_handler *dbton_hdl - ); - bool support_use_handler( - int use_handler - ); + int sts_mode_exchange(int sts_mode); + int show_table_status(int link_idx, int sts_mode, uint flag); + int crd_mode_exchange(int crd_mode); + int show_index(int link_idx, int crd_mode); + int show_records(int link_idx); + int show_autoinc(int link_idx); + int show_last_insert_id(int link_idx, ulonglong &last_insert_id); + ha_rows explain_select(const key_range *start_key, const key_range *end_key, + int link_idx); + int lock_tables(int link_idx); + int unlock_tables(int link_idx); + int disable_keys(SPIDER_CONN *conn, int link_idx); + int enable_keys(SPIDER_CONN *conn, int link_idx); + int check_table(SPIDER_CONN *conn, int link_idx, HA_CHECK_OPT *check_opt); + int repair_table(SPIDER_CONN *conn, int link_idx, HA_CHECK_OPT *check_opt); + int analyze_table(SPIDER_CONN *conn, int link_idx); + int optimize_table(SPIDER_CONN *conn, int link_idx); + int flush_tables(SPIDER_CONN *conn, int link_idx, bool lock); + int flush_logs(SPIDER_CONN *conn, int link_idx); + int insert_opened_handler(SPIDER_CONN *conn, int link_idx); + int delete_opened_handler(SPIDER_CONN *conn, int link_idx); + int sync_from_clone_source(spider_db_handler *dbton_hdl); + bool support_use_handler(int use_handler); void minimum_select_bitmap_create(); - bool minimum_select_bit_is_set( - uint field_index - ); - void copy_minimum_select_bitmap( - uchar *bitmap - ); + bool minimum_select_bit_is_set(uint field_index); + void copy_minimum_select_bitmap(uchar *bitmap); int init_union_table_name_pos(); int set_union_table_name_pos(); - int reset_union_table_name( - spider_string *str, - int link_idx, - ulong sql_type - ); + int reset_union_table_name(spider_string *str, int link_idx, ulong sql_type); #ifdef SPIDER_HAS_GROUP_BY_HANDLER - int append_from_and_tables_part( - spider_fields *fields, - ulong sql_type - ); - int reappend_tables_part( - spider_fields *fields, - ulong sql_type - ); - int append_where_part( - ulong sql_type - ); - int append_having_part( - ulong sql_type - ); - int append_item_type_part( - Item *item, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields, - ulong sql_type - ); - int append_list_item_select_part( - List<Item> *select, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields, - ulong sql_type - ); - int append_list_item_select( - List<Item> *select, - spider_string *str, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields - ); - int append_group_by_part( - ORDER *order, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields, - ulong sql_type - ); - int append_group_by( - ORDER *order, - spider_string *str, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields - ); - int append_order_by_part( - ORDER *order, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields, - ulong sql_type - ); - int append_order_by( - ORDER *order, - spider_string *str, - const char *alias, - uint alias_length, - bool use_fields, - spider_fields *fields - ); + int append_from_and_tables_part(spider_fields *fields, ulong sql_type); + int reappend_tables_part(spider_fields *fields, ulong sql_type); + int append_where_part(ulong sql_type); + int append_having_part(ulong sql_type); + int append_item_type_part(Item *item, const char *alias, uint alias_length, + bool use_fields, spider_fields *fields, + ulong sql_type); + int append_list_item_select_part(List<Item> *select, const char *alias, + uint alias_length, bool use_fields, + spider_fields *fields, ulong sql_type); + int append_list_item_select(List<Item> *select, spider_string *str, + const char *alias, uint alias_length, + bool use_fields, spider_fields *fields); + int append_group_by_part(ORDER *order, const char *alias, uint alias_length, + bool use_fields, spider_fields *fields, + ulong sql_type); + int append_group_by(ORDER *order, spider_string *str, const char *alias, + uint alias_length, bool use_fields, + spider_fields *fields); + int append_order_by_part(ORDER *order, const char *alias, uint alias_length, + bool use_fields, spider_fields *fields, + ulong sql_type); + int append_order_by(ORDER *order, spider_string *str, const char *alias, + uint alias_length, bool use_fields, + spider_fields *fields); #endif }; -class spider_oracle_copy_table: public spider_db_copy_table -{ -public: - spider_oracle_share *oracle_share; - spider_string sql; - spider_string sql_part; - uint pos; - uint table_name_pos; - uint pos_diff; - int table_lock_mode; - int store_link_idx; - bool select_rownum_appended; - spider_string *first_str; - spider_string *current_str; - spider_oracle_copy_table( - spider_oracle_share *db_share - ); +class spider_oracle_copy_table : public spider_db_copy_table { + public: + spider_oracle_share *oracle_share; + spider_string sql; + spider_string sql_part; + uint pos; + uint table_name_pos; + uint pos_diff; + int table_lock_mode; + int store_link_idx; + bool select_rownum_appended; + spider_string *first_str; + spider_string *current_str; + spider_oracle_copy_table(spider_oracle_share *db_share); ~spider_oracle_copy_table(); int init(); - void set_sql_charset( - CHARSET_INFO *cs - ); + void set_sql_charset(CHARSET_INFO *cs); int append_select_str(); - int append_insert_str( - int insert_flg - ); - int append_table_columns( - TABLE_SHARE *table_share - ); + int append_insert_str(int insert_flg); + int append_table_columns(TABLE_SHARE *table_share); int append_from_str(); - int append_table_name( - int link_idx - ); + int append_table_name(int link_idx); void set_sql_pos(); void set_sql_to_pos(); - int append_copy_where( - spider_db_copy_table *source_ct, - KEY *key_info, - ulong *last_row_pos, - ulong *last_lengths - ); - int append_key_order_str( - KEY *key_info, - int start_pos, - bool desc_flg - ); - int append_limit( - longlong offset, - longlong limit - ); + int append_copy_where(spider_db_copy_table *source_ct, KEY *key_info, + ulong *last_row_pos, ulong *last_lengths); + int append_key_order_str(KEY *key_info, int start_pos, bool desc_flg); + int append_limit(longlong offset, longlong limit); int append_into_str(); int append_open_paren_str(); int append_values_str(); - int append_select_lock_str( - int lock_mode - ); - int exec_query( - SPIDER_CONN *conn, - int quick_mode, - int *need_mon - ); - int copy_key_row( - spider_db_copy_table *source_ct, - Field *field, - ulong *row_pos, - ulong *length, - const char *joint_str, - const int joint_length - ); - int copy_row( - Field *field, - SPIDER_DB_ROW *row - ); - int copy_rows( - TABLE *table, - SPIDER_DB_ROW *row, - ulong **last_row_pos, - ulong **last_lengths - ); - int copy_rows( - TABLE *table, - SPIDER_DB_ROW *row - ); + int append_select_lock_str(int lock_mode); + int exec_query(SPIDER_CONN *conn, int quick_mode, int *need_mon); + int copy_key_row(spider_db_copy_table *source_ct, Field *field, + ulong *row_pos, ulong *length, const char *joint_str, + const int joint_length); + int copy_row(Field *field, SPIDER_DB_ROW *row); + int copy_rows(TABLE *table, SPIDER_DB_ROW *row, ulong **last_row_pos, + ulong **last_lengths); + int copy_rows(TABLE *table, SPIDER_DB_ROW *row); int append_insert_terminator(); - int copy_insert_values( - spider_db_copy_table *source_ct - ); + int copy_insert_values(spider_db_copy_table *source_ct); }; diff --git a/storage/spider/spd_direct_sql.h b/storage/spider/spd_direct_sql.h index bf3e24caa13..b432439f945 100644 --- a/storage/spider/spd_direct_sql.h +++ b/storage/spider/spd_direct_sql.h @@ -11,57 +11,35 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA +*/ -uint spider_udf_calc_hash( - char *key, - uint mod -); +uint spider_udf_calc_hash(char *key, uint mod); -int spider_udf_direct_sql_create_table_list( - SPIDER_DIRECT_SQL *direct_sql, - char *table_name_list, - uint table_name_list_length -); +int spider_udf_direct_sql_create_table_list(SPIDER_DIRECT_SQL *direct_sql, + char *table_name_list, + uint table_name_list_length); -int spider_udf_direct_sql_create_conn_key( - SPIDER_DIRECT_SQL *direct_sql -); +int spider_udf_direct_sql_create_conn_key(SPIDER_DIRECT_SQL *direct_sql); SPIDER_CONN *spider_udf_direct_sql_create_conn( - const SPIDER_DIRECT_SQL *direct_sql, - int *error_num -); + const SPIDER_DIRECT_SQL *direct_sql, int *error_num); -SPIDER_CONN *spider_udf_direct_sql_get_conn( - const SPIDER_DIRECT_SQL *direct_sql, - SPIDER_TRX *trx, - int *error_num -); +SPIDER_CONN *spider_udf_direct_sql_get_conn(const SPIDER_DIRECT_SQL *direct_sql, + SPIDER_TRX *trx, int *error_num); -int spider_udf_direct_sql_get_server( - SPIDER_DIRECT_SQL *direct_sql -); +int spider_udf_direct_sql_get_server(SPIDER_DIRECT_SQL *direct_sql); -int spider_udf_parse_direct_sql_param( - SPIDER_TRX *trx, - SPIDER_DIRECT_SQL *direct_sql, - const char *param, - int param_length -); +int spider_udf_parse_direct_sql_param(SPIDER_TRX *trx, + SPIDER_DIRECT_SQL *direct_sql, + const char *param, int param_length); -int spider_udf_set_direct_sql_param_default( - SPIDER_TRX *trx, - SPIDER_DIRECT_SQL *direct_sql -); +int spider_udf_set_direct_sql_param_default(SPIDER_TRX *trx, + SPIDER_DIRECT_SQL *direct_sql); -void spider_udf_free_direct_sql_alloc( - SPIDER_DIRECT_SQL *direct_sql, - my_bool bg -); +void spider_udf_free_direct_sql_alloc(SPIDER_DIRECT_SQL *direct_sql, + my_bool bg); #ifndef WITHOUT_SPIDER_BG_SEARCH -int spider_udf_bg_direct_sql( - SPIDER_DIRECT_SQL *direct_sql -); +int spider_udf_bg_direct_sql(SPIDER_DIRECT_SQL *direct_sql); #endif diff --git a/storage/spider/spd_err.h b/storage/spider/spd_err.h index e9a4a41946e..3c461589743 100644 --- a/storage/spider/spd_err.h +++ b/storage/spider/spd_err.h @@ -12,26 +12,35 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA +*/ #define ER_SPIDER_INVALID_CONNECT_INFO_NUM 12501 -#define ER_SPIDER_INVALID_CONNECT_INFO_STR "The connect info '%-.64s' is invalid" +#define ER_SPIDER_INVALID_CONNECT_INFO_STR \ + "The connect info '%-.64s' is invalid" #define ER_SPIDER_INVALID_CONNECT_INFO_TOO_LONG_NUM 12502 -#define ER_SPIDER_INVALID_CONNECT_INFO_TOO_LONG_STR "The connect info '%-.64s' for %s is too long" +#define ER_SPIDER_INVALID_CONNECT_INFO_TOO_LONG_STR \ + "The connect info '%-.64s' for %s is too long" #define ER_SPIDER_INVALID_UDF_PARAM_NUM 12503 #define ER_SPIDER_INVALID_UDF_PARAM_STR "The UDF parameter '%-.64s' is invalid" #define ER_SPIDER_DIFFERENT_LINK_COUNT_NUM 12504 -#define ER_SPIDER_DIFFERENT_LINK_COUNT_STR "Different multiple table link parameter's count" +#define ER_SPIDER_DIFFERENT_LINK_COUNT_STR \ + "Different multiple table link parameter's count" #define ER_SPIDER_UDF_PARAM_TOO_LONG_NUM 12505 -#define ER_SPIDER_UDF_PARAM_TOO_LONG_STR "The UDF parameter '%-.64s' is too long" +#define ER_SPIDER_UDF_PARAM_TOO_LONG_STR \ + "The UDF parameter '%-.64s' is too long" #define ER_SPIDER_UDF_PARAM_REQIRED_NUM 12506 #define ER_SPIDER_UDF_PARAM_REQIRED_STR "The UDF parameter '%-.64s' is required" #define ER_SPIDER_UDF_CANT_USE_IF_OPEN_TABLE_NUM 12507 -#define ER_SPIDER_UDF_CANT_USE_IF_OPEN_TABLE_STR "This UDF can't execute if other tables are opened" -#define ER_SPIDER_UDF_CANT_USE_IF_OPEN_TABLE_STR_WITH_NUM "This UDF can't execute if other tables are opened '%s'=%lld" -#define ER_SPIDER_UDF_CANT_USE_IF_OPEN_TABLE_STR_WITH_PTR "This UDF can't execute if other tables are opened '%s'=%p" +#define ER_SPIDER_UDF_CANT_USE_IF_OPEN_TABLE_STR \ + "This UDF can't execute if other tables are opened" +#define ER_SPIDER_UDF_CANT_USE_IF_OPEN_TABLE_STR_WITH_NUM \ + "This UDF can't execute if other tables are opened '%s'=%lld" +#define ER_SPIDER_UDF_CANT_USE_IF_OPEN_TABLE_STR_WITH_PTR \ + "This UDF can't execute if other tables are opened '%s'=%p" #define ER_SPIDER_UDF_PING_TABLE_NO_SERVER_ID_NUM 12508 -#define ER_SPIDER_UDF_PING_TABLE_NO_SERVER_ID_STR "Current server_id is not exist" +#define ER_SPIDER_UDF_PING_TABLE_NO_SERVER_ID_STR \ + "Current server_id is not exist" #define ER_SPIDER_UDF_PING_TABLE_DIFFERENT_MON_NUM 12509 #define ER_SPIDER_UDF_PING_TABLE_DIFFERENT_MON_STR "Monitor count is different" #define ER_SPIDER_LINK_MON_OK_NUM 12510 @@ -39,7 +48,8 @@ #define ER_SPIDER_LINK_MON_NG_NUM 12511 #define ER_SPIDER_LINK_MON_NG_STR "Table '%s.%s' get a problem" #define ER_SPIDER_LINK_MON_DRAW_FEW_MON_NUM 12512 -#define ER_SPIDER_LINK_MON_DRAW_FEW_MON_STR "Can not judge by enough monitor for table '%s.%s'" +#define ER_SPIDER_LINK_MON_DRAW_FEW_MON_STR \ + "Can not judge by enough monitor for table '%s.%s'" #define ER_SPIDER_LINK_MON_DRAW_NUM 12513 #define ER_SPIDER_LINK_MON_DRAW_STR "Can not judge status for table '%s.%s'" #define ER_SPIDER_ALL_LINKS_FAILED_NUM 12514 @@ -55,11 +65,15 @@ #define ER_SPIDER_LINK_IS_FAILOVER_NUM 12519 #define ER_SPIDER_LINK_IS_FAILOVER_STR "A link is fail-overed" #define ER_SPIDER_AUTOINC_VAL_IS_DIFFERENT_NUM 12520 -#define ER_SPIDER_AUTOINC_VAL_IS_DIFFERENT_STR "Binlog's auto-inc value is probably different from linked table's auto-inc value" +#define ER_SPIDER_AUTOINC_VAL_IS_DIFFERENT_STR \ + "Binlog's auto-inc value is probably different from linked table's " \ + "auto-inc value" #define ER_SPIDER_SQL_WRAPPER_IS_INVALID_NUM 12521 -#define ER_SPIDER_SQL_WRAPPER_IS_INVALID_STR "Can't use wrapper '%s' for SQL connection" +#define ER_SPIDER_SQL_WRAPPER_IS_INVALID_STR \ + "Can't use wrapper '%s' for SQL connection" #define ER_SPIDER_NOSQL_WRAPPER_IS_INVALID_NUM 12522 -#define ER_SPIDER_NOSQL_WRAPPER_IS_INVALID_STR "Can't use wrapper '%s' for NOSQL connection" +#define ER_SPIDER_NOSQL_WRAPPER_IS_INVALID_STR \ + "Can't use wrapper '%s' for NOSQL connection" #define ER_SPIDER_REQUEST_KEY_NUM 12523 #define ER_SPIDER_REQUEST_KEY_STR "Request key not found" #define ER_SPIDER_CANT_OPEN_SYS_TABLE_NUM 12524 @@ -67,12 +81,16 @@ #define ER_SPIDER_LINK_MON_JUST_NG_NUM 12525 #define ER_SPIDER_LINK_MON_JUST_NG_STR "Table '%s.%s' just got a problem" #define ER_SPIDER_INVALID_CONNECT_INFO_START_WITH_NUM_NUM 12526 -#define ER_SPIDER_INVALID_CONNECT_INFO_START_WITH_NUM_STR "The connect info '%-.64s' for %s cannot start with number" +#define ER_SPIDER_INVALID_CONNECT_INFO_START_WITH_NUM_STR \ + "The connect info '%-.64s' for %s cannot start with number" #define ER_SPIDER_INVALID_CONNECT_INFO_SAME_NUM 12527 -#define ER_SPIDER_INVALID_CONNECT_INFO_SAME_STR "The connect info '%-.64s' for %s cannot use same name in same table" +#define ER_SPIDER_INVALID_CONNECT_INFO_SAME_STR \ + "The connect info '%-.64s' for %s cannot use same name in same table" #define ER_SPIDER_CANT_USE_BOTH_INNER_XA_AND_SNAPSHOT_NUM 12601 -#define ER_SPIDER_CANT_USE_BOTH_INNER_XA_AND_SNAPSHOT_STR "Can't use both spider_use_consistent_snapshot = 1 and spider_internal_xa = 1" +#define ER_SPIDER_CANT_USE_BOTH_INNER_XA_AND_SNAPSHOT_STR \ + "Can't use both spider_use_consistent_snapshot = 1 and spider_internal_xa " \ + "= 1" #define ER_SPIDER_XA_LOCKED_NUM 12602 #define ER_SPIDER_XA_LOCKED_STR "This xid is now locked" #define ER_SPIDER_XA_NOT_PREPARED_NUM 12603 @@ -92,30 +110,38 @@ #define ER_SPIDER_WRONG_CHARACTER_IN_NAME_NUM 12611 #define ER_SPIDER_WRONG_CHARACTER_IN_NAME_STR "Wrong character in name string" #define ER_SPIDER_LOW_MEM_READ_PREV_NUM 12621 -#define ER_SPIDER_LOW_MEM_READ_PREV_STR "Can't use this operation at low mem read mode" +#define ER_SPIDER_LOW_MEM_READ_PREV_STR \ + "Can't use this operation at low mem read mode" #define ER_SPIDER_ALTER_BEFORE_UNLOCK_NUM 12622 -#define ER_SPIDER_ALTER_BEFORE_UNLOCK_STR "Can't use this operation before executing 'unlock tables'" +#define ER_SPIDER_ALTER_BEFORE_UNLOCK_STR \ + "Can't use this operation before executing 'unlock tables'" #define ER_SPIDER_REMOTE_SERVER_GONE_AWAY_NUM 12701 -#define ER_SPIDER_REMOTE_SERVER_GONE_AWAY_STR "Remote MariaDB server has gone away" -#define ER_SPIDER_REMOTE_SERVER_GONE_AWAY_LEN (sizeof(ER_SPIDER_REMOTE_SERVER_GONE_AWAY_STR) - 1) +#define ER_SPIDER_REMOTE_SERVER_GONE_AWAY_STR \ + "Remote MariaDB server has gone away" +#define ER_SPIDER_REMOTE_SERVER_GONE_AWAY_LEN \ + (sizeof(ER_SPIDER_REMOTE_SERVER_GONE_AWAY_STR) - 1) #define ER_SPIDER_REMOTE_TABLE_NOT_FOUND_NUM 12702 #define ER_SPIDER_REMOTE_TABLE_NOT_FOUND_STR "Remote table '%s.%s' is not found" #define ER_SPIDER_UDF_TMP_TABLE_NOT_FOUND_NUM 12703 -#define ER_SPIDER_UDF_TMP_TABLE_NOT_FOUND_STR "Temporary table '%s.%s' is not found" +#define ER_SPIDER_UDF_TMP_TABLE_NOT_FOUND_STR \ + "Temporary table '%s.%s' is not found" #define ER_SPIDER_UDF_COPY_TABLE_SRC_NOT_FOUND_NUM 12704 #define ER_SPIDER_UDF_COPY_TABLE_SRC_NOT_FOUND_STR "Source table is not found" #define ER_SPIDER_UDF_COPY_TABLE_DST_NOT_FOUND_NUM 12705 -#define ER_SPIDER_UDF_COPY_TABLE_DST_NOT_FOUND_STR "Destination table is not found" +#define ER_SPIDER_UDF_COPY_TABLE_DST_NOT_FOUND_STR \ + "Destination table is not found" #define ER_SPIDER_UDF_COPY_TABLE_SRC_NG_STATUS_NUM 12706 #define ER_SPIDER_UDF_COPY_TABLE_SRC_NG_STATUS_STR "Source table is NG status" #define ER_SPIDER_UDF_COPY_TABLE_DST_NG_STATUS_NUM 12707 -#define ER_SPIDER_UDF_COPY_TABLE_DST_NG_STATUS_STR "Destination table is NG status" +#define ER_SPIDER_UDF_COPY_TABLE_DST_NG_STATUS_STR \ + "Destination table is NG status" #define ER_SPIDER_UDF_CANT_OPEN_TABLE_NUM 12708 #define ER_SPIDER_UDF_CANT_OPEN_TABLE_STR "Can't open table %s.%s" #define ER_SPIDER_UDF_COPY_TABLE_NEED_PK_NUM 12709 #define ER_SPIDER_UDF_COPY_TABLE_NEED_PK_STR "Table %s.%s needs PK for copying" #define ER_SPIDER_INVALID_REMOTE_TABLE_INFO_NUM 12710 -#define ER_SPIDER_INVALID_REMOTE_TABLE_INFO_STR "Invalid information from remote table '%s.%s'" +#define ER_SPIDER_INVALID_REMOTE_TABLE_INFO_STR \ + "Invalid information from remote table '%s.%s'" #define ER_SPIDER_HS_STR "Error from HS %d %s" #define ER_SPIDER_HS_NUM 12711 #define ER_SPIDER_ORACLE_STR "Error from Oracle %d %d %s" @@ -124,14 +150,20 @@ #define ER_SPIDER_DATASOURCE_STR "Error from %s %d %s %s" #define ER_SPIDER_DATASOURCE_NUM 12712 #define ER_SPIDER_CON_COUNT_ERROR 12713 -#define ER_SPIDER_CON_COUNT_ERROR_STR "Too many connections between spider and remote" +#define ER_SPIDER_CON_COUNT_ERROR_STR \ + "Too many connections between spider and remote" #define ER_SPIDER_TABLE_OPEN_TIMEOUT_NUM 12714 #define ER_SPIDER_TABLE_OPEN_TIMEOUT_STR "Table %s.%s open timeout" #define ER_SPIDER_INFINITE_LOOP_NUM 12719 -#define ER_SPIDER_INFINITE_LOOP_STR "An infinite loop is detected when opening table %s.%s" +#define ER_SPIDER_INFINITE_LOOP_STR \ + "An infinite loop is detected when opening table %s.%s" #define ER_SPIDER_SAME_SERVER_LINK_NUM 12720 -#define ER_SPIDER_SAME_SERVER_LINK_STR1 "Host:%s and Socket:%s aim self server. Please change spider_same_server_link parameter if this link is required." -#define ER_SPIDER_SAME_SERVER_LINK_STR2 "Host:%s and Port:%ld aim self server. Please change spider_same_server_link parameter if this link is required." +#define ER_SPIDER_SAME_SERVER_LINK_STR1 \ + "Host:%s and Socket:%s aim self server. Please change " \ + "spider_same_server_link parameter if this link is required." +#define ER_SPIDER_SAME_SERVER_LINK_STR2 \ + "Host:%s and Port:%ld aim self server. Please change " \ + "spider_same_server_link parameter if this link is required." #define ER_SPIDER_CANT_NUM 12721 #define ER_SPIDER_CANT_STR1 "Can't %s%d" #define ER_SPIDER_COND_SKIP_NUM 12801 diff --git a/storage/spider/spd_group_by_handler.h b/storage/spider/spd_group_by_handler.h index 09f82168708..d505d59970a 100644 --- a/storage/spider/spd_group_by_handler.h +++ b/storage/spider/spd_group_by_handler.h @@ -14,8 +14,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifdef SPIDER_HAS_GROUP_BY_HANDLER -class spider_group_by_handler: public group_by_handler -{ +class spider_group_by_handler : public group_by_handler { Query query; spider_fields *fields; ha_spider *spider; @@ -25,20 +24,14 @@ class spider_group_by_handler: public group_by_handler longlong offset_limit; int store_error; -public: - spider_group_by_handler( - THD *thd_arg, - Query *query_arg, - spider_fields *fields_arg - ); + public: + spider_group_by_handler(THD *thd_arg, Query *query_arg, + spider_fields *fields_arg); ~spider_group_by_handler(); int init_scan(); int next_row(); int end_scan(); }; -group_by_handler *spider_create_group_by_handler( - THD *thd, - Query *query -); +group_by_handler *spider_create_group_by_handler(THD *thd, Query *query); #endif diff --git a/storage/spider/spd_include.h b/storage/spider/spd_include.h index b1be05c72b2..097ade235f6 100644 --- a/storage/spider/spd_include.h +++ b/storage/spider/spd_include.h @@ -12,17 +12,18 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA +*/ #define SPIDER_DETAIL_VERSION "3.3.15" #define SPIDER_HEX_VERSION 0x0303 #if MYSQL_VERSION_ID < 50500 -#define spider_my_free(A,B) my_free(A,B) +#define spider_my_free(A, B) my_free(A, B) #define pthread_mutex_assert_owner(A) #define pthread_mutex_assert_not_owner(A) #else -#define spider_my_free(A,B) my_free(A) +#define spider_my_free(A, B) my_free(A) #ifdef pthread_mutex_t #undef pthread_mutex_t #endif @@ -69,10 +70,9 @@ #undef pthread_cond_destroy #endif #define pthread_cond_destroy mysql_cond_destroy -#define my_sprintf(A,B) sprintf B +#define my_sprintf(A, B) sprintf B #endif - #if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID >= 100004 #define spider_stmt_da_message(A) thd_get_error_message(A) #define spider_stmt_da_sql_errno(A) thd_get_error_number(A) @@ -80,23 +80,23 @@ #define spider_join_table_count(A) (A)->table_count #define SPIDER_CAN_BG_UPDATE (1LL << 39) #if MYSQL_VERSION_ID >= 100304 -#define SPIDER_ALTER_PARTITION_ADD ALTER_PARTITION_ADD -#define SPIDER_ALTER_PARTITION_DROP ALTER_PARTITION_DROP -#define SPIDER_ALTER_PARTITION_COALESCE ALTER_PARTITION_COALESCE -#define SPIDER_ALTER_PARTITION_REORGANIZE ALTER_PARTITION_REORGANIZE +#define SPIDER_ALTER_PARTITION_ADD ALTER_PARTITION_ADD +#define SPIDER_ALTER_PARTITION_DROP ALTER_PARTITION_DROP +#define SPIDER_ALTER_PARTITION_COALESCE ALTER_PARTITION_COALESCE +#define SPIDER_ALTER_PARTITION_REORGANIZE ALTER_PARTITION_REORGANIZE #define SPIDER_ALTER_PARTITION_TABLE_REORG ALTER_PARTITION_TABLE_REORG -#define SPIDER_ALTER_PARTITION_REBUILD ALTER_PARTITION_REBUILD +#define SPIDER_ALTER_PARTITION_REBUILD ALTER_PARTITION_REBUILD #else -#define SPIDER_ALTER_PARTITION_ADD Alter_info::ALTER_ADD_PARTITION -#define SPIDER_ALTER_PARTITION_DROP Alter_info::ALTER_DROP_PARTITION -#define SPIDER_ALTER_PARTITION_COALESCE Alter_info::ALTER_COALESCE_PARTITION -#define SPIDER_ALTER_PARTITION_REORGANIZE Alter_info::ALTER_REORGANIZE_PARTITION +#define SPIDER_ALTER_PARTITION_ADD Alter_info::ALTER_ADD_PARTITION +#define SPIDER_ALTER_PARTITION_DROP Alter_info::ALTER_DROP_PARTITION +#define SPIDER_ALTER_PARTITION_COALESCE Alter_info::ALTER_COALESCE_PARTITION +#define SPIDER_ALTER_PARTITION_REORGANIZE Alter_info::ALTER_REORGANIZE_PARTITION #define SPIDER_ALTER_PARTITION_TABLE_REORG Alter_info::ALTER_TABLE_REORG -#define SPIDER_ALTER_PARTITION_REBUILD Alter_info::ALTER_REBUILD_PARTITION +#define SPIDER_ALTER_PARTITION_REBUILD Alter_info::ALTER_REBUILD_PARTITION #endif -#define SPIDER_WARN_LEVEL_WARN Sql_condition::WARN_LEVEL_WARN -#define SPIDER_WARN_LEVEL_NOTE Sql_condition::WARN_LEVEL_NOTE -#define SPIDER_THD_KILL_CONNECTION KILL_CONNECTION +#define SPIDER_WARN_LEVEL_WARN Sql_condition::WARN_LEVEL_WARN +#define SPIDER_WARN_LEVEL_NOTE Sql_condition::WARN_LEVEL_NOTE +#define SPIDER_THD_KILL_CONNECTION KILL_CONNECTION #else #if MYSQL_VERSION_ID < 50500 #define spider_stmt_da_message(A) (A)->main_da.message() @@ -112,15 +112,15 @@ #endif #define spider_user_defined_key_parts(A) (A)->key_parts #define spider_join_table_count(A) (A)->tables -#define SPIDER_ALTER_PARTITION_ADD ALTER_ADD_PARTITION -#define SPIDER_ALTER_PARTITION_DROP ALTER_DROP_PARTITION -#define SPIDER_ALTER_PARTITION_COALESCE ALTER_COALESCE_PARTITION -#define SPIDER_ALTER_PARTITION_REORGANIZE ALTER_REORGANIZE_PARTITION +#define SPIDER_ALTER_PARTITION_ADD ALTER_ADD_PARTITION +#define SPIDER_ALTER_PARTITION_DROP ALTER_DROP_PARTITION +#define SPIDER_ALTER_PARTITION_COALESCE ALTER_COALESCE_PARTITION +#define SPIDER_ALTER_PARTITION_REORGANIZE ALTER_REORGANIZE_PARTITION #define SPIDER_ALTER_PARTITION_TABLE_REORG ALTER_TABLE_REORG -#define SPIDER_ALTER_PARTITION_REBUILD ALTER_REBUILD_PARTITION -#define SPIDER_WARN_LEVEL_WARN MYSQL_ERROR::WARN_LEVEL_WARN -#define SPIDER_WARN_LEVEL_NOTE MYSQL_ERROR::WARN_LEVEL_NOTE -#define SPIDER_THD_KILL_CONNECTION THD::KILL_CONNECTION +#define SPIDER_ALTER_PARTITION_REBUILD ALTER_REBUILD_PARTITION +#define SPIDER_WARN_LEVEL_WARN MYSQL_ERROR::WARN_LEVEL_WARN +#define SPIDER_WARN_LEVEL_NOTE MYSQL_ERROR::WARN_LEVEL_NOTE +#define SPIDER_THD_KILL_CONNECTION THD::KILL_CONNECTION #endif #if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID >= 100005 @@ -153,12 +153,14 @@ #if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID >= 100200 #define SPIDER_WITHOUT_HA_STATISTIC_INCREMENT -#define SPIDER_init_read_record(A,B,C,D,E,F,G,H) init_read_record(A,B,C,D,E,F,G,H) +#define SPIDER_init_read_record(A, B, C, D, E, F, G, H) \ + init_read_record(A, B, C, D, E, F, G, H) #define SPIDER_HAS_NEXT_THREAD_ID #define SPIDER_new_THD(A) (new THD(A)) #define SPIDER_order_direction_is_asc(A) (A->direction == ORDER::ORDER_ASC) #else -#define SPIDER_init_read_record(A,B,C,D,E,F,G,H) init_read_record(A,B,C,D,F,G,H) +#define SPIDER_init_read_record(A, B, C, D, E, F, G, H) \ + init_read_record(A, B, C, D, F, G, H) #define SPIDER_new_THD(A) (new THD()) #define SPIDER_order_direction_is_asc(A) (A->asc) #endif @@ -170,26 +172,34 @@ #if defined(MARIADB_BASE_VERSION) #if MYSQL_VERSION_ID >= 100209 -#define SPIDER_generate_partition_syntax(A,B,C,D,E,F,G,H) generate_partition_syntax(A,B,C,E,F,G) +#define SPIDER_generate_partition_syntax(A, B, C, D, E, F, G, H) \ + generate_partition_syntax(A, B, C, E, F, G) #elif MYSQL_VERSION_ID >= 100200 -#define SPIDER_generate_partition_syntax(A,B,C,D,E,F,G,H) generate_partition_syntax(A,B,C,D,E,F,G,H) +#define SPIDER_generate_partition_syntax(A, B, C, D, E, F, G, H) \ + generate_partition_syntax(A, B, C, D, E, F, G, H) #elif MYSQL_VERSION_ID >= 100007 -#define SPIDER_generate_partition_syntax(A,B,C,D,E,F,G,H) generate_partition_syntax(B,C,D,E,F,G,H) +#define SPIDER_generate_partition_syntax(A, B, C, D, E, F, G, H) \ + generate_partition_syntax(B, C, D, E, F, G, H) #else -#define SPIDER_generate_partition_syntax(A,B,C,D,E,F,G,H) generate_partition_syntax(B,C,D,E,F,G) +#define SPIDER_generate_partition_syntax(A, B, C, D, E, F, G, H) \ + generate_partition_syntax(B, C, D, E, F, G) #endif #else -#define SPIDER_generate_partition_syntax(A,B,C,D,E,F,G,H) +#define SPIDER_generate_partition_syntax(A, B, C, D, E, F, G, H) #endif #if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID >= 100209 -#define SPIDER_create_partition_name(A,B,C,D,E,F) create_partition_name(A,B,C,D,E,F) -#define SPIDER_create_subpartition_name(A,B,C,D,E,F) create_subpartition_name(A,B,C,D,E,F) -#define SPIDER_free_part_syntax(A,B) +#define SPIDER_create_partition_name(A, B, C, D, E, F) \ + create_partition_name(A, B, C, D, E, F) +#define SPIDER_create_subpartition_name(A, B, C, D, E, F) \ + create_subpartition_name(A, B, C, D, E, F) +#define SPIDER_free_part_syntax(A, B) #else -#define SPIDER_create_partition_name(A,B,C,D,E,F) create_partition_name(A,C,D,E,F) -#define SPIDER_create_subpartition_name(A,B,C,D,E,F) create_subpartition_name(A,C,D,E,F) -#define SPIDER_free_part_syntax(A,B) spider_my_free(A,B) +#define SPIDER_create_partition_name(A, B, C, D, E, F) \ + create_partition_name(A, C, D, E, F) +#define SPIDER_create_subpartition_name(A, B, C, D, E, F) \ + create_subpartition_name(A, C, D, E, F) +#define SPIDER_free_part_syntax(A, B) spider_my_free(A, B) #endif #if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID >= 100306 @@ -234,11 +244,12 @@ const char SPIDER_empty_string = ""; #if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID >= 100400 #define SPIDER_date_mode_t(A) date_mode_t(A) -#define SPIDER_str_to_datetime(A,B,C,D,E) str_to_datetime_or_date(A,B,C,D,E) +#define SPIDER_str_to_datetime(A, B, C, D, E) \ + str_to_datetime_or_date(A, B, C, D, E) #define SPIDER_get_linkage(A) A->get_linkage() #else #define SPIDER_date_mode_t(A) A -#define SPIDER_str_to_datetime(A,B,C,D,E) str_to_datetime(A,B,C,D,E) +#define SPIDER_str_to_datetime(A, B, C, D, E) str_to_datetime(A, B, C, D, E) #define SPIDER_get_linkage(A) A->linkage #endif @@ -251,65 +262,93 @@ typedef Open_tables_backup SPIDER_Open_tables_backup; #endif #if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID >= 100500 -#define SPIDER_reset_n_backup_open_tables_state(A,B,C) do { \ - if (!(*(B) = new start_new_trans(A))) \ - { \ - DBUG_RETURN(C); \ - } \ -} while (0) -#define SPIDER_restore_backup_open_tables_state(A,B) do { \ - (*(B))->restore_old_transaction(); \ - delete *(B); \ -} while (0) -#define SPIDER_sys_close_thread_tables(A) (A)->commit_whole_transaction_and_close_tables() +#define SPIDER_reset_n_backup_open_tables_state(A, B, C) \ + do { \ + if (!(*(B) = new start_new_trans(A))) { \ + DBUG_RETURN(C); \ + } \ + } while (0) +#define SPIDER_restore_backup_open_tables_state(A, B) \ + do { \ + (*(B))->restore_old_transaction(); \ + delete *(B); \ + } while (0) +#define SPIDER_sys_close_thread_tables(A) \ + (A)->commit_whole_transaction_and_close_tables() #else #define SPIDER_REQUIRE_DEFINE_FOR_SECONDARY_OPEN_TABLES_BACKUP -#define SPIDER_reset_n_backup_open_tables_state(A,B,C) (A)->reset_n_backup_open_tables_state(B) -#define SPIDER_restore_backup_open_tables_state(A,B) (A)->restore_backup_open_tables_state(B) +#define SPIDER_reset_n_backup_open_tables_state(A, B, C) \ + (A)->reset_n_backup_open_tables_state(B) +#define SPIDER_restore_backup_open_tables_state(A, B) \ + (A)->restore_backup_open_tables_state(B) #define SPIDER_sys_close_thread_tables(A) close_thread_tables(A) #endif #define spider_bitmap_size(A) ((A + 7) / 8) -#define spider_set_bit(BITMAP, BIT) \ - ((BITMAP)[(BIT) / 8] |= (1 << ((BIT) & 7))) -#define spider_clear_bit(BITMAP, BIT) \ - ((BITMAP)[(BIT) / 8] &= ~(1 << ((BIT) & 7))) +#define spider_set_bit(BITMAP, BIT) ((BITMAP)[(BIT) / 8] |= (1 << ((BIT)&7))) +#define spider_clear_bit(BITMAP, BIT) ((BITMAP)[(BIT) / 8] &= ~(1 << ((BIT)&7))) #define spider_bit_is_set(BITMAP, BIT) \ - (uint) ((BITMAP)[(BIT) / 8] & (1 << ((BIT) & 7))) - -#define SPIDER_LINK_STATUS_NO_CHANGE 0 -#define SPIDER_LINK_STATUS_OK 1 -#define SPIDER_LINK_STATUS_RECOVERY 2 -#define SPIDER_LINK_STATUS_NG 3 - -#define SPIDER_LINK_MON_OK 0 -#define SPIDER_LINK_MON_NG -1 -#define SPIDER_LINK_MON_DRAW_FEW_MON 1 -#define SPIDER_LINK_MON_DRAW 2 - -#define SPIDER_TMP_SHARE_CHAR_PTR_COUNT 23 -#define SPIDER_TMP_SHARE_UINT_COUNT SPIDER_TMP_SHARE_CHAR_PTR_COUNT -#define SPIDER_TMP_SHARE_LONG_COUNT 20 -#define SPIDER_TMP_SHARE_LONGLONG_COUNT 3 - -#define SPIDER_MEM_CALC_LIST_NUM 314 -#define SPIDER_CONN_META_BUF_LEN 64 - -#define SPIDER_BACKUP_DASTATUS \ - bool da_status; if (thd) da_status = thd->is_error(); else da_status = FALSE; + (uint)((BITMAP)[(BIT) / 8] & (1 << ((BIT)&7))) + +#define SPIDER_LINK_STATUS_NO_CHANGE 0 +#define SPIDER_LINK_STATUS_OK 1 +#define SPIDER_LINK_STATUS_RECOVERY 2 +#define SPIDER_LINK_STATUS_NG 3 + +#define SPIDER_LINK_MON_OK 0 +#define SPIDER_LINK_MON_NG -1 +#define SPIDER_LINK_MON_DRAW_FEW_MON 1 +#define SPIDER_LINK_MON_DRAW 2 + +#define SPIDER_TMP_SHARE_CHAR_PTR_COUNT 23 +#define SPIDER_TMP_SHARE_UINT_COUNT SPIDER_TMP_SHARE_CHAR_PTR_COUNT +#define SPIDER_TMP_SHARE_LONG_COUNT 20 +#define SPIDER_TMP_SHARE_LONGLONG_COUNT 3 + +#define SPIDER_MEM_CALC_LIST_NUM 314 +#define SPIDER_CONN_META_BUF_LEN 64 + +#define SPIDER_BACKUP_DASTATUS \ + bool da_status; \ + if (thd) \ + da_status = thd->is_error(); \ + else \ + da_status = FALSE; #define SPIDER_RESTORE_DASTATUS \ if (!da_status && thd->is_error()) thd->clear_error(); #define SPIDER_CONN_RESTORE_DASTATUS \ - if (thd && conn->error_mode) {SPIDER_RESTORE_DASTATUS;} + if (thd && conn->error_mode) { \ + SPIDER_RESTORE_DASTATUS; \ + } #define SPIDER_CONN_RESTORE_DASTATUS_AND_RESET_ERROR_NUM \ - if (thd && conn->error_mode) {SPIDER_RESTORE_DASTATUS; error_num = 0;} + if (thd && conn->error_mode) { \ + SPIDER_RESTORE_DASTATUS; \ + error_num = 0; \ + } #define SPIDER_CONN_RESTORE_DASTATUS_AND_RESET_TMP_ERROR_NUM \ - if (thd && conn->error_mode) {SPIDER_RESTORE_DASTATUS; tmp_error_num = 0;} + if (thd && conn->error_mode) { \ + SPIDER_RESTORE_DASTATUS; \ + tmp_error_num = 0; \ + } #define SPIDER_SET_FILE_POS(A) \ - {(A)->thd = current_thd; (A)->func_name = __func__; (A)->file_name = __FILE__; (A)->line_no = __LINE__;} -#define SPIDER_CLEAR_FILE_POS(A) \ - {DBUG_PRINT("info", ("spider thd=%p func_name=%s file_name=%s line_no=%lu", (A)->thd, (A)->func_name ? (A)->func_name : "NULL", (A)->file_name ? (A)->file_name : "NULL", (A)->line_no)); (A)->thd = NULL; (A)->func_name = NULL; (A)->file_name = NULL; (A)->line_no = 0;} + { \ + (A)->thd = current_thd; \ + (A)->func_name = __func__; \ + (A)->file_name = __FILE__; \ + (A)->line_no = __LINE__; \ + } +#define SPIDER_CLEAR_FILE_POS(A) \ + { \ + DBUG_PRINT("info", \ + ("spider thd=%p func_name=%s file_name=%s line_no=%lu", \ + (A)->thd, (A)->func_name ? (A)->func_name : "NULL", \ + (A)->file_name ? (A)->file_name : "NULL", (A)->line_no)); \ + (A)->thd = NULL; \ + (A)->func_name = NULL; \ + (A)->file_name = NULL; \ + (A)->line_no = 0; \ + } class ha_spider; typedef struct st_spider_share SPIDER_SHARE; @@ -317,416 +356,408 @@ typedef struct st_spider_table_mon_list SPIDER_TABLE_MON_LIST; typedef struct st_spider_ip_port_conn SPIDER_IP_PORT_CONN; #ifndef WITHOUT_SPIDER_BG_SEARCH -typedef struct st_spider_thread -{ - uint thread_idx; - THD *thd; - volatile bool killed; - volatile bool thd_wait; - volatile bool first_free_wait; - volatile bool init_command; - volatile int error; - pthread_t thread; - pthread_cond_t cond; - pthread_mutex_t mutex; - pthread_cond_t sync_cond; +typedef struct st_spider_thread { + uint thread_idx; + THD *thd; + volatile bool killed; + volatile bool thd_wait; + volatile bool first_free_wait; + volatile bool init_command; + volatile int error; + pthread_t thread; + pthread_cond_t cond; + pthread_mutex_t mutex; + pthread_cond_t sync_cond; volatile SPIDER_SHARE *queue_first; volatile SPIDER_SHARE *queue_last; } SPIDER_THREAD; #endif -typedef struct st_spider_file_pos -{ - THD *thd; - const char *func_name; - const char *file_name; - ulong line_no; +typedef struct st_spider_file_pos { + THD *thd; + const char *func_name; + const char *file_name; + ulong line_no; } SPIDER_FILE_POS; -typedef struct st_spider_link_for_hash -{ - ha_spider *spider; - int link_idx; - spider_string *db_table_str; +typedef struct st_spider_link_for_hash { + ha_spider *spider; + int link_idx; + spider_string *db_table_str; #ifdef SPIDER_HAS_HASH_VALUE_TYPE my_hash_value_type db_table_str_hash_value; #endif } SPIDER_LINK_FOR_HASH; /* alter table */ -typedef struct st_spider_alter_table -{ - bool now_create; - char *table_name; - uint table_name_length; - char *tmp_char; +typedef struct st_spider_alter_table { + bool now_create; + char *table_name; + uint table_name_length; + char *tmp_char; #ifdef SPIDER_HAS_HASH_VALUE_TYPE my_hash_value_type table_name_hash_value; #endif - longlong tmp_priority; - uint link_count; - uint all_link_count; - - char **tmp_server_names; - char **tmp_tgt_table_names; - char **tmp_tgt_dbs; - char **tmp_tgt_hosts; - char **tmp_tgt_usernames; - char **tmp_tgt_passwords; - char **tmp_tgt_sockets; - char **tmp_tgt_wrappers; - char **tmp_tgt_ssl_cas; - char **tmp_tgt_ssl_capaths; - char **tmp_tgt_ssl_certs; - char **tmp_tgt_ssl_ciphers; - char **tmp_tgt_ssl_keys; - char **tmp_tgt_default_files; - char **tmp_tgt_default_groups; - char **tmp_tgt_dsns; - char **tmp_tgt_filedsns; - char **tmp_tgt_drivers; - char **tmp_static_link_ids; - long *tmp_tgt_ports; - long *tmp_tgt_ssl_vscs; - long *tmp_monitoring_binlog_pos_at_failing; - long *tmp_link_statuses; - - uint *tmp_server_names_lengths; - uint *tmp_tgt_table_names_lengths; - uint *tmp_tgt_dbs_lengths; - uint *tmp_tgt_hosts_lengths; - uint *tmp_tgt_usernames_lengths; - uint *tmp_tgt_passwords_lengths; - uint *tmp_tgt_sockets_lengths; - uint *tmp_tgt_wrappers_lengths; - uint *tmp_tgt_ssl_cas_lengths; - uint *tmp_tgt_ssl_capaths_lengths; - uint *tmp_tgt_ssl_certs_lengths; - uint *tmp_tgt_ssl_ciphers_lengths; - uint *tmp_tgt_ssl_keys_lengths; - uint *tmp_tgt_default_files_lengths; - uint *tmp_tgt_default_groups_lengths; - uint *tmp_tgt_dsns_lengths; - uint *tmp_tgt_filedsns_lengths; - uint *tmp_tgt_drivers_lengths; - uint *tmp_static_link_ids_lengths; - - uint tmp_server_names_charlen; - uint tmp_tgt_table_names_charlen; - uint tmp_tgt_dbs_charlen; - uint tmp_tgt_hosts_charlen; - uint tmp_tgt_usernames_charlen; - uint tmp_tgt_passwords_charlen; - uint tmp_tgt_sockets_charlen; - uint tmp_tgt_wrappers_charlen; - uint tmp_tgt_ssl_cas_charlen; - uint tmp_tgt_ssl_capaths_charlen; - uint tmp_tgt_ssl_certs_charlen; - uint tmp_tgt_ssl_ciphers_charlen; - uint tmp_tgt_ssl_keys_charlen; - uint tmp_tgt_default_files_charlen; - uint tmp_tgt_default_groups_charlen; - uint tmp_tgt_dsns_charlen; - uint tmp_tgt_filedsns_charlen; - uint tmp_tgt_drivers_charlen; - uint tmp_static_link_ids_charlen; - - uint tmp_server_names_length; - uint tmp_tgt_table_names_length; - uint tmp_tgt_dbs_length; - uint tmp_tgt_hosts_length; - uint tmp_tgt_usernames_length; - uint tmp_tgt_passwords_length; - uint tmp_tgt_sockets_length; - uint tmp_tgt_wrappers_length; - uint tmp_tgt_ssl_cas_length; - uint tmp_tgt_ssl_capaths_length; - uint tmp_tgt_ssl_certs_length; - uint tmp_tgt_ssl_ciphers_length; - uint tmp_tgt_ssl_keys_length; - uint tmp_tgt_default_files_length; - uint tmp_tgt_default_groups_length; - uint tmp_tgt_dsns_length; - uint tmp_tgt_filedsns_length; - uint tmp_tgt_drivers_length; - uint tmp_static_link_ids_length; - uint tmp_tgt_ports_length; - uint tmp_tgt_ssl_vscs_length; - uint tmp_monitoring_binlog_pos_at_failing_length; - uint tmp_link_statuses_length; + longlong tmp_priority; + uint link_count; + uint all_link_count; + + char **tmp_server_names; + char **tmp_tgt_table_names; + char **tmp_tgt_dbs; + char **tmp_tgt_hosts; + char **tmp_tgt_usernames; + char **tmp_tgt_passwords; + char **tmp_tgt_sockets; + char **tmp_tgt_wrappers; + char **tmp_tgt_ssl_cas; + char **tmp_tgt_ssl_capaths; + char **tmp_tgt_ssl_certs; + char **tmp_tgt_ssl_ciphers; + char **tmp_tgt_ssl_keys; + char **tmp_tgt_default_files; + char **tmp_tgt_default_groups; + char **tmp_tgt_dsns; + char **tmp_tgt_filedsns; + char **tmp_tgt_drivers; + char **tmp_static_link_ids; + long *tmp_tgt_ports; + long *tmp_tgt_ssl_vscs; + long *tmp_monitoring_binlog_pos_at_failing; + long *tmp_link_statuses; + + uint *tmp_server_names_lengths; + uint *tmp_tgt_table_names_lengths; + uint *tmp_tgt_dbs_lengths; + uint *tmp_tgt_hosts_lengths; + uint *tmp_tgt_usernames_lengths; + uint *tmp_tgt_passwords_lengths; + uint *tmp_tgt_sockets_lengths; + uint *tmp_tgt_wrappers_lengths; + uint *tmp_tgt_ssl_cas_lengths; + uint *tmp_tgt_ssl_capaths_lengths; + uint *tmp_tgt_ssl_certs_lengths; + uint *tmp_tgt_ssl_ciphers_lengths; + uint *tmp_tgt_ssl_keys_lengths; + uint *tmp_tgt_default_files_lengths; + uint *tmp_tgt_default_groups_lengths; + uint *tmp_tgt_dsns_lengths; + uint *tmp_tgt_filedsns_lengths; + uint *tmp_tgt_drivers_lengths; + uint *tmp_static_link_ids_lengths; + + uint tmp_server_names_charlen; + uint tmp_tgt_table_names_charlen; + uint tmp_tgt_dbs_charlen; + uint tmp_tgt_hosts_charlen; + uint tmp_tgt_usernames_charlen; + uint tmp_tgt_passwords_charlen; + uint tmp_tgt_sockets_charlen; + uint tmp_tgt_wrappers_charlen; + uint tmp_tgt_ssl_cas_charlen; + uint tmp_tgt_ssl_capaths_charlen; + uint tmp_tgt_ssl_certs_charlen; + uint tmp_tgt_ssl_ciphers_charlen; + uint tmp_tgt_ssl_keys_charlen; + uint tmp_tgt_default_files_charlen; + uint tmp_tgt_default_groups_charlen; + uint tmp_tgt_dsns_charlen; + uint tmp_tgt_filedsns_charlen; + uint tmp_tgt_drivers_charlen; + uint tmp_static_link_ids_charlen; + + uint tmp_server_names_length; + uint tmp_tgt_table_names_length; + uint tmp_tgt_dbs_length; + uint tmp_tgt_hosts_length; + uint tmp_tgt_usernames_length; + uint tmp_tgt_passwords_length; + uint tmp_tgt_sockets_length; + uint tmp_tgt_wrappers_length; + uint tmp_tgt_ssl_cas_length; + uint tmp_tgt_ssl_capaths_length; + uint tmp_tgt_ssl_certs_length; + uint tmp_tgt_ssl_ciphers_length; + uint tmp_tgt_ssl_keys_length; + uint tmp_tgt_default_files_length; + uint tmp_tgt_default_groups_length; + uint tmp_tgt_dsns_length; + uint tmp_tgt_filedsns_length; + uint tmp_tgt_drivers_length; + uint tmp_static_link_ids_length; + uint tmp_tgt_ports_length; + uint tmp_tgt_ssl_vscs_length; + uint tmp_monitoring_binlog_pos_at_failing_length; + uint tmp_link_statuses_length; } SPIDER_ALTER_TABLE; typedef struct st_spider_conn_loop_check SPIDER_CONN_LOOP_CHECK; /* database connection */ -typedef struct st_spider_conn -{ - uint conn_kind; - char *conn_key; - uint conn_key_length; +typedef struct st_spider_conn { + uint conn_kind; + char *conn_key; + uint conn_key_length; #ifdef SPIDER_HAS_HASH_VALUE_TYPE my_hash_value_type conn_key_hash_value; #endif - int link_idx; - spider_db_conn *db_conn; + int link_idx; + spider_db_conn *db_conn; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - query_id_t hsc_query_id; - ulonglong hs_pre_age; - ulonglong hs_age; -#endif - uint opened_handlers; - ulonglong conn_id; - ulonglong connection_id; - query_id_t casual_read_query_id; - uint casual_read_current_id; - st_spider_conn *casual_read_base_conn; - pthread_mutex_t mta_conn_mutex; - volatile bool mta_conn_mutex_lock_already; - volatile bool mta_conn_mutex_unlock_later; - SPIDER_FILE_POS mta_conn_mutex_file_pos; - uint join_trx; - int trx_isolation; - bool semi_trx_isolation_chk; - int semi_trx_isolation; - bool semi_trx_chk; - bool semi_trx; - bool trx_start; - bool table_locked; - int table_lock; - bool disable_xa; - bool disable_reconnect; - int autocommit; - int sql_log_off; - int wait_timeout; - sql_mode_t sql_mode; - THD *thd; - void *another_ha_first; - void *another_ha_last; - st_spider_conn *p_small; - st_spider_conn *p_big; - st_spider_conn *c_small; - st_spider_conn *c_big; - longlong priority; - bool server_lost; - bool ignore_dup_key; - char *error_str; - int error_length; - time_t ping_time; - CHARSET_INFO *access_charset; - Time_zone *time_zone; - uint connect_timeout; - uint net_read_timeout; - uint net_write_timeout; - int error_mode; - spider_string default_database; - - char *tgt_host; - char *tgt_username; - char *tgt_password; - char *tgt_socket; - char *tgt_wrapper; - char *tgt_db; /* for not joinable tables on different db */ - char *tgt_ssl_ca; - char *tgt_ssl_capath; - char *tgt_ssl_cert; - char *tgt_ssl_cipher; - char *tgt_ssl_key; - char *tgt_default_file; - char *tgt_default_group; - char *tgt_dsn; - char *tgt_filedsn; - char *tgt_driver; - long tgt_port; - long tgt_ssl_vsc; + query_id_t hsc_query_id; + ulonglong hs_pre_age; + ulonglong hs_age; +#endif + uint opened_handlers; + ulonglong conn_id; + ulonglong connection_id; + query_id_t casual_read_query_id; + uint casual_read_current_id; + st_spider_conn *casual_read_base_conn; + pthread_mutex_t mta_conn_mutex; + volatile bool mta_conn_mutex_lock_already; + volatile bool mta_conn_mutex_unlock_later; + SPIDER_FILE_POS mta_conn_mutex_file_pos; + uint join_trx; + int trx_isolation; + bool semi_trx_isolation_chk; + int semi_trx_isolation; + bool semi_trx_chk; + bool semi_trx; + bool trx_start; + bool table_locked; + int table_lock; + bool disable_xa; + bool disable_reconnect; + int autocommit; + int sql_log_off; + int wait_timeout; + sql_mode_t sql_mode; + THD *thd; + void *another_ha_first; + void *another_ha_last; + st_spider_conn *p_small; + st_spider_conn *p_big; + st_spider_conn *c_small; + st_spider_conn *c_big; + longlong priority; + bool server_lost; + bool ignore_dup_key; + char *error_str; + int error_length; + time_t ping_time; + CHARSET_INFO *access_charset; + Time_zone *time_zone; + uint connect_timeout; + uint net_read_timeout; + uint net_write_timeout; + int error_mode; + spider_string default_database; + + char *tgt_host; + char *tgt_username; + char *tgt_password; + char *tgt_socket; + char *tgt_wrapper; + char *tgt_db; /* for not joinable tables on different db */ + char *tgt_ssl_ca; + char *tgt_ssl_capath; + char *tgt_ssl_cert; + char *tgt_ssl_cipher; + char *tgt_ssl_key; + char *tgt_default_file; + char *tgt_default_group; + char *tgt_dsn; + char *tgt_filedsn; + char *tgt_driver; + long tgt_port; + long tgt_ssl_vsc; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - char *hs_sock; - long hs_port; -#endif - - uint tgt_host_length; - uint tgt_username_length; - uint tgt_password_length; - uint tgt_socket_length; - uint tgt_wrapper_length; - uint tgt_db_length; - uint tgt_ssl_ca_length; - uint tgt_ssl_capath_length; - uint tgt_ssl_cert_length; - uint tgt_ssl_cipher_length; - uint tgt_ssl_key_length; - uint tgt_default_file_length; - uint tgt_default_group_length; - uint tgt_dsn_length; - uint tgt_filedsn_length; - uint tgt_driver_length; + char *hs_sock; + long hs_port; +#endif + + uint tgt_host_length; + uint tgt_username_length; + uint tgt_password_length; + uint tgt_socket_length; + uint tgt_wrapper_length; + uint tgt_db_length; + uint tgt_ssl_ca_length; + uint tgt_ssl_capath_length; + uint tgt_ssl_cert_length; + uint tgt_ssl_cipher_length; + uint tgt_ssl_key_length; + uint tgt_default_file_length; + uint tgt_default_group_length; + uint tgt_dsn_length; + uint tgt_filedsn_length; + uint tgt_driver_length; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - uint hs_sock_length; + uint hs_sock_length; #endif - uint dbton_id; + uint dbton_id; #ifndef WITHOUT_SPIDER_BG_SEARCH volatile #endif - void *quick_target; + void *quick_target; #ifndef WITHOUT_SPIDER_BG_SEARCH - volatile bool bg_init; - volatile bool bg_break; - volatile bool bg_kill; - volatile bool bg_caller_wait; - volatile bool bg_caller_sync_wait; - volatile bool bg_search; - volatile bool bg_discard_result; - volatile bool bg_direct_sql; - volatile bool bg_exec_sql; - volatile bool bg_get_job_stack; - volatile bool bg_get_job_stack_off; - volatile uint bg_simple_action; - THD *bg_thd; - pthread_t bg_thread; - pthread_cond_t bg_conn_cond; - pthread_mutex_t bg_conn_mutex; - pthread_cond_t bg_conn_sync_cond; - pthread_mutex_t bg_conn_sync_mutex; - pthread_mutex_t bg_conn_chain_mutex; - pthread_mutex_t *bg_conn_chain_mutex_ptr; - volatile void *bg_target; - volatile int *bg_error_num; - volatile ulong bg_sql_type; - pthread_mutex_t bg_job_stack_mutex; - DYNAMIC_ARRAY bg_job_stack; - uint bg_job_stack_id; - const char *bg_job_stack_func_name; - const char *bg_job_stack_file_name; - ulong bg_job_stack_line_no; - uint bg_job_stack_cur_pos; + volatile bool bg_init; + volatile bool bg_break; + volatile bool bg_kill; + volatile bool bg_caller_wait; + volatile bool bg_caller_sync_wait; + volatile bool bg_search; + volatile bool bg_discard_result; + volatile bool bg_direct_sql; + volatile bool bg_exec_sql; + volatile bool bg_get_job_stack; + volatile bool bg_get_job_stack_off; + volatile uint bg_simple_action; + THD *bg_thd; + pthread_t bg_thread; + pthread_cond_t bg_conn_cond; + pthread_mutex_t bg_conn_mutex; + pthread_cond_t bg_conn_sync_cond; + pthread_mutex_t bg_conn_sync_mutex; + pthread_mutex_t bg_conn_chain_mutex; + pthread_mutex_t *bg_conn_chain_mutex_ptr; + volatile void *bg_target; + volatile int *bg_error_num; + volatile ulong bg_sql_type; + pthread_mutex_t bg_job_stack_mutex; + DYNAMIC_ARRAY bg_job_stack; + uint bg_job_stack_id; + const char *bg_job_stack_func_name; + const char *bg_job_stack_file_name; + ulong bg_job_stack_line_no; + uint bg_job_stack_cur_pos; #endif #ifndef WITHOUT_SPIDER_BG_SEARCH volatile #endif - int *need_mon; - int *conn_need_mon; - - bool use_for_active_standby; - bool in_before_query; - - bool queued_connect; - bool queued_ping; - bool queued_trx_isolation; - bool queued_semi_trx_isolation; - bool queued_wait_timeout; - bool queued_autocommit; - bool queued_sql_log_off; - bool queued_sql_mode; - bool queued_time_zone; - bool queued_trx_start; - bool queued_xa_start; - bool queued_net_timeout; - SPIDER_SHARE *queued_connect_share; - int queued_connect_link_idx; - ha_spider *queued_ping_spider; - int queued_ping_link_idx; - int queued_trx_isolation_val; - int queued_semi_trx_isolation_val; - int queued_wait_timeout_val; - bool queued_autocommit_val; - bool queued_sql_log_off_val; - sql_mode_t queued_sql_mode_val; - Time_zone *queued_time_zone_val; - XID *queued_xa_start_xid; + int *need_mon; + int *conn_need_mon; + + bool use_for_active_standby; + bool in_before_query; + + bool queued_connect; + bool queued_ping; + bool queued_trx_isolation; + bool queued_semi_trx_isolation; + bool queued_wait_timeout; + bool queued_autocommit; + bool queued_sql_log_off; + bool queued_sql_mode; + bool queued_time_zone; + bool queued_trx_start; + bool queued_xa_start; + bool queued_net_timeout; + SPIDER_SHARE *queued_connect_share; + int queued_connect_link_idx; + ha_spider *queued_ping_spider; + int queued_ping_link_idx; + int queued_trx_isolation_val; + int queued_semi_trx_isolation_val; + int queued_wait_timeout_val; + bool queued_autocommit_val; + bool queued_sql_log_off_val; + sql_mode_t queued_sql_mode_val; + Time_zone *queued_time_zone_val; + XID *queued_xa_start_xid; #ifdef HA_CAN_BULK_ACCESS - uint bulk_access_requests; - uint bulk_access_sended; - int bulk_access_error_num; - st_spider_conn *bulk_access_next; -#endif - - bool disable_connect_retry; /* TRUE if it is unnecessary to - retry to connect after a - connection error */ - bool connect_error_with_message; - char connect_error_msg[MYSQL_ERRMSG_SIZE]; - int connect_error; - THD *connect_error_thd; - query_id_t connect_error_query_id; - time_t connect_error_time; + uint bulk_access_requests; + uint bulk_access_sended; + int bulk_access_error_num; + st_spider_conn *bulk_access_next; +#endif + + bool disable_connect_retry; /* TRUE if it is unnecessary to + retry to connect after a + connection error */ + bool connect_error_with_message; + char connect_error_msg[MYSQL_ERRMSG_SIZE]; + int connect_error; + THD *connect_error_thd; + query_id_t connect_error_query_id; + time_t connect_error_time; #ifdef SPIDER_HAS_GROUP_BY_HANDLER - SPIDER_CONN_HOLDER *conn_holder_for_direct_join; + SPIDER_CONN_HOLDER *conn_holder_for_direct_join; SPIDER_LINK_IDX_CHAIN *link_idx_chain; #endif SPIDER_IP_PORT_CONN *ip_port_conn; - pthread_mutex_t loop_check_mutex; - HASH loop_checked; - uint loop_checked_id; - const char *loop_checked_func_name; - const char *loop_checked_file_name; - ulong loop_checked_line_no; - HASH loop_check_queue; - uint loop_check_queue_id; - const char *loop_check_queue_func_name; - const char *loop_check_queue_file_name; - ulong loop_check_queue_line_no; + pthread_mutex_t loop_check_mutex; + HASH loop_checked; + uint loop_checked_id; + const char *loop_checked_func_name; + const char *loop_checked_file_name; + ulong loop_checked_line_no; + HASH loop_check_queue; + uint loop_check_queue_id; + const char *loop_check_queue_func_name; + const char *loop_check_queue_file_name; + ulong loop_check_queue_line_no; SPIDER_CONN_LOOP_CHECK *loop_check_ignored_first; SPIDER_CONN_LOOP_CHECK *loop_check_ignored_last; SPIDER_CONN_LOOP_CHECK *loop_check_meraged_first; SPIDER_CONN_LOOP_CHECK *loop_check_meraged_last; } SPIDER_CONN; -typedef struct st_spider_lgtm_tblhnd_share -{ - char *table_name; - uint table_name_length; +typedef struct st_spider_lgtm_tblhnd_share { + char *table_name; + uint table_name_length; #ifdef SPIDER_HAS_HASH_VALUE_TYPE my_hash_value_type table_path_hash_value; #endif - pthread_mutex_t auto_increment_mutex; - volatile bool auto_increment_init; + pthread_mutex_t auto_increment_mutex; + volatile bool auto_increment_init; volatile ulonglong auto_increment_lclval; - ulonglong auto_increment_value; + ulonglong auto_increment_value; } SPIDER_LGTM_TBLHND_SHARE; #ifdef WITH_PARTITION_STORAGE_ENGINE -typedef struct st_spider_patition_handler_share -{ - bool clone_bitmap_init; +typedef struct st_spider_patition_handler_share { + bool clone_bitmap_init; #ifdef SPIDER_HAS_HASH_VALUE_TYPE my_hash_value_type table_hash_value; #endif - query_id_t parallel_search_query_id; - uint no_parts; - TABLE *table; - ha_spider *owner; - ha_spider **handlers; + query_id_t parallel_search_query_id; + uint no_parts; + TABLE *table; + ha_spider *owner; + ha_spider **handlers; } SPIDER_PARTITION_HANDLER_SHARE; #endif -typedef struct st_spider_wide_share -{ - char *table_name; - uint table_name_length; +typedef struct st_spider_wide_share { + char *table_name; + uint table_name_length; #ifdef SPIDER_HAS_HASH_VALUE_TYPE my_hash_value_type table_path_hash_value; #endif - uint use_count; - THR_LOCK lock; - pthread_mutex_t sts_mutex; - pthread_mutex_t crd_mutex; - pthread_mutex_t pt_handler_mutex; - HASH pt_handler_hash; - uint pt_handler_hash_id; - const char *pt_handler_hash_func_name; - const char *pt_handler_hash_file_name; - ulong pt_handler_hash_line_no; - - volatile bool sts_init; - volatile bool crd_init; - volatile time_t sts_get_time; - volatile time_t crd_get_time; - ha_statistics stat; - - longlong *cardinality; + uint use_count; + THR_LOCK lock; + pthread_mutex_t sts_mutex; + pthread_mutex_t crd_mutex; + pthread_mutex_t pt_handler_mutex; + HASH pt_handler_hash; + uint pt_handler_hash_id; + const char *pt_handler_hash_func_name; + const char *pt_handler_hash_file_name; + ulong pt_handler_hash_line_no; + + volatile bool sts_init; + volatile bool crd_init; + volatile time_t sts_get_time; + volatile time_t crd_get_time; + ha_statistics stat; + + longlong *cardinality; } SPIDER_WIDE_SHARE; enum spider_hnd_stage { @@ -742,223 +773,220 @@ enum spider_hnd_stage { SPD_HND_STAGE_CLEAR_TOP_TABLE_FIELDS }; -typedef struct st_spider_wide_handler -{ - spider_hnd_stage stage; - handler *stage_executor; - THR_LOCK_DATA lock; - SPIDER_TRX *trx; - uchar *searched_bitmap; - uchar *ft_discard_bitmap; - uchar *position_bitmap; - uchar *idx_read_bitmap; - uchar *idx_write_bitmap; - uchar *rnd_read_bitmap; - uchar *rnd_write_bitmap; - SPIDER_CONDITION *condition; - void *owner; +typedef struct st_spider_wide_handler { + spider_hnd_stage stage; + handler *stage_executor; + THR_LOCK_DATA lock; + SPIDER_TRX *trx; + uchar *searched_bitmap; + uchar *ft_discard_bitmap; + uchar *position_bitmap; + uchar *idx_read_bitmap; + uchar *idx_write_bitmap; + uchar *rnd_read_bitmap; + uchar *rnd_write_bitmap; + SPIDER_CONDITION *condition; + void *owner; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS - uint32 *hs_pushed_ret_fields; + uint32 *hs_pushed_ret_fields; #endif #endif #ifdef WITH_PARTITION_STORAGE_ENGINE SPIDER_PARTITION_HANDLER_SHARE *partition_handler_share; #endif #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS - List<Item> *direct_update_fields; - List<Item> *direct_update_values; + List<Item> *direct_update_fields; + List<Item> *direct_update_values; #endif - TABLE_SHARE *top_share; + TABLE_SHARE *top_share; enum thr_lock_type lock_type; - uchar lock_table_type; + uchar lock_table_type; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS - uint32 hs_pushed_strref_num; + uint32 hs_pushed_strref_num; #endif #endif - int lock_mode; - int external_lock_type; - int cond_check_error; - uint sql_command; - uint top_table_fields; + int lock_mode; + int external_lock_type; + int cond_check_error; + uint sql_command; + uint top_table_fields; #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS #ifdef INFO_KIND_FORCE_LIMIT_BEGIN - longlong info_limit; + longlong info_limit; #endif #endif #ifdef HA_CAN_BULK_ACCESS - ulonglong external_lock_cnt; + ulonglong external_lock_cnt; #endif #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS - size_t hs_pushed_ret_fields_num; - size_t hs_pushed_ret_fields_size; - size_t hs_pushed_lcl_fields_num; -#endif -#endif - bool between_flg; - bool idx_bitmap_is_set; - bool rnd_bitmap_is_set; - bool position_bitmap_init; - bool semi_trx_isolation_chk; - bool semi_trx_chk; - bool low_priority; - bool high_priority; - bool insert_delayed; - bool consistent_snapshot; - bool quick_mode; - bool keyread; - bool update_request; - bool ignore_dup_key; - bool write_can_replace; - bool insert_with_update; - bool cond_check; + size_t hs_pushed_ret_fields_num; + size_t hs_pushed_ret_fields_size; + size_t hs_pushed_lcl_fields_num; +#endif +#endif + bool between_flg; + bool idx_bitmap_is_set; + bool rnd_bitmap_is_set; + bool position_bitmap_init; + bool semi_trx_isolation_chk; + bool semi_trx_chk; + bool low_priority; + bool high_priority; + bool insert_delayed; + bool consistent_snapshot; + bool quick_mode; + bool keyread; + bool update_request; + bool ignore_dup_key; + bool write_can_replace; + bool insert_with_update; + bool cond_check; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS - bool hs_increment; - bool hs_decrement; + bool hs_increment; + bool hs_decrement; #endif #endif - bool semi_table_lock; + bool semi_table_lock; } SPIDER_WIDE_HANDLER; -typedef struct st_spider_transaction -{ - bool trx_start; - bool trx_xa; - bool trx_consistent_snapshot; - bool trx_xa_prepared; +typedef struct st_spider_transaction { + bool trx_start; + bool trx_xa; + bool trx_consistent_snapshot; + bool trx_xa_prepared; - bool use_consistent_snapshot; - bool internal_xa; - uint internal_xa_snapshot; + bool use_consistent_snapshot; + bool internal_xa; + uint internal_xa_snapshot; - query_id_t query_id; - bool tmp_flg; - bool registed_allocated_thds; + query_id_t query_id; + bool tmp_flg; + bool registed_allocated_thds; - bool updated_in_this_trx; + bool updated_in_this_trx; - THD *thd; + THD *thd; #ifdef SPIDER_HAS_HASH_VALUE_TYPE my_hash_value_type thd_hash_value; #endif - XID xid; - HASH trx_conn_hash; - uint trx_conn_hash_id; - const char *trx_conn_hash_func_name; - const char *trx_conn_hash_file_name; - ulong trx_conn_hash_line_no; - HASH trx_another_conn_hash; - uint trx_another_conn_hash_id; - const char *trx_another_conn_hash_func_name; - const char *trx_another_conn_hash_file_name; - ulong trx_another_conn_hash_line_no; + XID xid; + HASH trx_conn_hash; + uint trx_conn_hash_id; + const char *trx_conn_hash_func_name; + const char *trx_conn_hash_file_name; + ulong trx_conn_hash_line_no; + HASH trx_another_conn_hash; + uint trx_another_conn_hash_id; + const char *trx_another_conn_hash_func_name; + const char *trx_another_conn_hash_file_name; + ulong trx_another_conn_hash_line_no; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - HASH trx_hs_r_conn_hash; - uint trx_hs_r_conn_hash_id; - const char *trx_hs_r_conn_hash_func_name; - const char *trx_hs_r_conn_hash_file_name; - ulong trx_hs_r_conn_hash_line_no; - HASH trx_hs_w_conn_hash; - uint trx_hs_w_conn_hash_id; - const char *trx_hs_w_conn_hash_func_name; - const char *trx_hs_w_conn_hash_file_name; - ulong trx_hs_w_conn_hash_line_no; + HASH trx_hs_r_conn_hash; + uint trx_hs_r_conn_hash_id; + const char *trx_hs_r_conn_hash_func_name; + const char *trx_hs_r_conn_hash_file_name; + ulong trx_hs_r_conn_hash_line_no; + HASH trx_hs_w_conn_hash; + uint trx_hs_w_conn_hash_id; + const char *trx_hs_w_conn_hash_func_name; + const char *trx_hs_w_conn_hash_file_name; + ulong trx_hs_w_conn_hash_line_no; #endif #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - HASH trx_direct_hs_r_conn_hash; - uint trx_direct_hs_r_conn_hash_id; - const char *trx_direct_hs_r_conn_hash_func_name; - const char *trx_direct_hs_r_conn_hash_file_name; - ulong trx_direct_hs_r_conn_hash_line_no; - HASH trx_direct_hs_w_conn_hash; - uint trx_direct_hs_w_conn_hash_id; - const char *trx_direct_hs_w_conn_hash_func_name; - const char *trx_direct_hs_w_conn_hash_file_name; - ulong trx_direct_hs_w_conn_hash_line_no; -#endif - HASH trx_alter_table_hash; - uint trx_alter_table_hash_id; - const char *trx_alter_table_hash_func_name; - const char *trx_alter_table_hash_file_name; - ulong trx_alter_table_hash_line_no; - HASH trx_ha_hash; - uint trx_ha_hash_id; - const char *trx_ha_hash_func_name; - const char *trx_ha_hash_file_name; - ulong trx_ha_hash_line_no; - uint trx_ha_reuse_count; - XID_STATE internal_xid_state; - SPIDER_CONN *join_trx_top; - ulonglong spider_thread_id; - ulonglong trx_conn_adjustment; + HASH trx_direct_hs_r_conn_hash; + uint trx_direct_hs_r_conn_hash_id; + const char *trx_direct_hs_r_conn_hash_func_name; + const char *trx_direct_hs_r_conn_hash_file_name; + ulong trx_direct_hs_r_conn_hash_line_no; + HASH trx_direct_hs_w_conn_hash; + uint trx_direct_hs_w_conn_hash_id; + const char *trx_direct_hs_w_conn_hash_func_name; + const char *trx_direct_hs_w_conn_hash_file_name; + ulong trx_direct_hs_w_conn_hash_line_no; +#endif + HASH trx_alter_table_hash; + uint trx_alter_table_hash_id; + const char *trx_alter_table_hash_func_name; + const char *trx_alter_table_hash_file_name; + ulong trx_alter_table_hash_line_no; + HASH trx_ha_hash; + uint trx_ha_hash_id; + const char *trx_ha_hash_func_name; + const char *trx_ha_hash_file_name; + ulong trx_ha_hash_line_no; + uint trx_ha_reuse_count; + XID_STATE internal_xid_state; + SPIDER_CONN *join_trx_top; + ulonglong spider_thread_id; + ulonglong trx_conn_adjustment; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - ulonglong trx_hs_r_conn_adjustment; - ulonglong trx_hs_w_conn_adjustment; + ulonglong trx_hs_r_conn_adjustment; + ulonglong trx_hs_w_conn_adjustment; #endif - uint locked_connections; + uint locked_connections; - ulonglong direct_update_count; - ulonglong direct_delete_count; - ulonglong direct_order_limit_count; - ulonglong direct_aggregate_count; - ulonglong parallel_search_count; + ulonglong direct_update_count; + ulonglong direct_delete_count; + ulonglong direct_order_limit_count; + ulonglong direct_aggregate_count; + ulonglong parallel_search_count; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - ulonglong hs_result_free_count; + ulonglong hs_result_free_count; #endif #ifdef HA_CAN_BULK_ACCESS - SPIDER_CONN *bulk_access_conn_first; - SPIDER_CONN *bulk_access_conn_last; + SPIDER_CONN *bulk_access_conn_first; + SPIDER_CONN *bulk_access_conn_last; #endif - pthread_mutex_t *udf_table_mutexes; - CHARSET_INFO *udf_access_charset; - spider_string *udf_set_names; + pthread_mutex_t *udf_table_mutexes; + CHARSET_INFO *udf_access_charset; + spider_string *udf_set_names; - time_t mem_calc_merge_time; - const char *alloc_func_name[SPIDER_MEM_CALC_LIST_NUM]; - const char *alloc_file_name[SPIDER_MEM_CALC_LIST_NUM]; - ulong alloc_line_no[SPIDER_MEM_CALC_LIST_NUM]; - ulonglong total_alloc_mem[SPIDER_MEM_CALC_LIST_NUM]; - longlong current_alloc_mem[SPIDER_MEM_CALC_LIST_NUM]; - ulonglong alloc_mem_count[SPIDER_MEM_CALC_LIST_NUM]; - ulonglong free_mem_count[SPIDER_MEM_CALC_LIST_NUM]; - ulonglong total_alloc_mem_buffer[SPIDER_MEM_CALC_LIST_NUM]; - longlong current_alloc_mem_buffer[SPIDER_MEM_CALC_LIST_NUM]; - ulonglong alloc_mem_count_buffer[SPIDER_MEM_CALC_LIST_NUM]; - ulonglong free_mem_count_buffer[SPIDER_MEM_CALC_LIST_NUM]; + time_t mem_calc_merge_time; + const char *alloc_func_name[SPIDER_MEM_CALC_LIST_NUM]; + const char *alloc_file_name[SPIDER_MEM_CALC_LIST_NUM]; + ulong alloc_line_no[SPIDER_MEM_CALC_LIST_NUM]; + ulonglong total_alloc_mem[SPIDER_MEM_CALC_LIST_NUM]; + longlong current_alloc_mem[SPIDER_MEM_CALC_LIST_NUM]; + ulonglong alloc_mem_count[SPIDER_MEM_CALC_LIST_NUM]; + ulonglong free_mem_count[SPIDER_MEM_CALC_LIST_NUM]; + ulonglong total_alloc_mem_buffer[SPIDER_MEM_CALC_LIST_NUM]; + longlong current_alloc_mem_buffer[SPIDER_MEM_CALC_LIST_NUM]; + ulonglong alloc_mem_count_buffer[SPIDER_MEM_CALC_LIST_NUM]; + ulonglong free_mem_count_buffer[SPIDER_MEM_CALC_LIST_NUM]; - MEM_ROOT mem_root; + MEM_ROOT mem_root; /* for transaction level query */ - SPIDER_SHARE *tmp_share; - char *tmp_connect_info[SPIDER_TMP_SHARE_CHAR_PTR_COUNT]; - uint tmp_connect_info_length[SPIDER_TMP_SHARE_UINT_COUNT]; - long tmp_long[SPIDER_TMP_SHARE_LONG_COUNT]; - longlong tmp_longlong[SPIDER_TMP_SHARE_LONGLONG_COUNT]; - ha_spider *tmp_spider; - int tmp_need_mon; - spider_db_handler *tmp_dbton_handler[SPIDER_DBTON_SIZE]; + SPIDER_SHARE *tmp_share; + char *tmp_connect_info[SPIDER_TMP_SHARE_CHAR_PTR_COUNT]; + uint tmp_connect_info_length[SPIDER_TMP_SHARE_UINT_COUNT]; + long tmp_long[SPIDER_TMP_SHARE_LONG_COUNT]; + longlong tmp_longlong[SPIDER_TMP_SHARE_LONGLONG_COUNT]; + ha_spider *tmp_spider; + int tmp_need_mon; + spider_db_handler *tmp_dbton_handler[SPIDER_DBTON_SIZE]; } SPIDER_TRX; -typedef struct st_spider_share -{ - char *table_name; - uint table_name_length; - uint use_count; - uint link_count; - uint all_link_count; - uint link_bitmap_size; - pthread_mutex_t mutex; - pthread_mutex_t sts_mutex; - pthread_mutex_t crd_mutex; -/* - pthread_mutex_t auto_increment_mutex; -*/ - TABLE_SHARE *table_share; +typedef struct st_spider_share { + char *table_name; + uint table_name_length; + uint use_count; + uint link_count; + uint all_link_count; + uint link_bitmap_size; + pthread_mutex_t mutex; + pthread_mutex_t sts_mutex; + pthread_mutex_t crd_mutex; + /* + pthread_mutex_t auto_increment_mutex; + */ + TABLE_SHARE *table_share; SPIDER_LGTM_TBLHND_SHARE *lgtm_tblhnd_share; #ifdef SPIDER_HAS_HASH_VALUE_TYPE my_hash_value_type table_name_hash_value; @@ -967,181 +995,181 @@ typedef struct st_spider_share #endif #endif - volatile bool init; - volatile bool init_error; - volatile time_t init_error_time; - volatile bool link_status_init; - uchar *table_mon_mutex_bitmap; - volatile bool sts_init; - volatile time_t sts_get_time; + volatile bool init; + volatile bool init_error; + volatile time_t init_error_time; + volatile bool link_status_init; + uchar *table_mon_mutex_bitmap; + volatile bool sts_init; + volatile time_t sts_get_time; #ifndef WITHOUT_SPIDER_BG_SEARCH - volatile time_t bg_sts_try_time; - volatile double bg_sts_interval; - volatile int bg_sts_mode; + volatile time_t bg_sts_try_time; + volatile double bg_sts_interval; + volatile int bg_sts_mode; #ifdef WITH_PARTITION_STORAGE_ENGINE - volatile int bg_sts_sync; -#endif - volatile bool bg_sts_init; - volatile bool bg_sts_kill; - volatile bool bg_sts_thd_wait; - THD *bg_sts_thd; - pthread_t bg_sts_thread; - pthread_cond_t bg_sts_cond; - pthread_cond_t bg_sts_sync_cond; - volatile bool crd_init; -#endif - volatile time_t crd_get_time; + volatile int bg_sts_sync; +#endif + volatile bool bg_sts_init; + volatile bool bg_sts_kill; + volatile bool bg_sts_thd_wait; + THD *bg_sts_thd; + pthread_t bg_sts_thread; + pthread_cond_t bg_sts_cond; + pthread_cond_t bg_sts_sync_cond; + volatile bool crd_init; +#endif + volatile time_t crd_get_time; #ifndef WITHOUT_SPIDER_BG_SEARCH - volatile time_t bg_crd_try_time; - volatile double bg_crd_interval; - volatile int bg_crd_mode; + volatile time_t bg_crd_try_time; + volatile double bg_crd_interval; + volatile int bg_crd_mode; #ifdef WITH_PARTITION_STORAGE_ENGINE - volatile int bg_crd_sync; + volatile int bg_crd_sync; #endif - volatile bool bg_crd_init; - volatile bool bg_crd_kill; - volatile bool bg_crd_thd_wait; - THD *bg_crd_thd; - pthread_t bg_crd_thread; - pthread_cond_t bg_crd_cond; - pthread_cond_t bg_crd_sync_cond; + volatile bool bg_crd_init; + volatile bool bg_crd_kill; + volatile bool bg_crd_thd_wait; + THD *bg_crd_thd; + pthread_t bg_crd_thread; + pthread_cond_t bg_crd_cond; + pthread_cond_t bg_crd_sync_cond; #endif #ifndef WITHOUT_SPIDER_BG_SEARCH - volatile bool bg_mon_init; - volatile bool bg_mon_kill; - THD **bg_mon_thds; - pthread_t *bg_mon_threads; - pthread_mutex_t *bg_mon_mutexes; - pthread_cond_t *bg_mon_conds; - pthread_cond_t *bg_mon_sleep_conds; + volatile bool bg_mon_init; + volatile bool bg_mon_kill; + THD **bg_mon_thds; + pthread_t *bg_mon_threads; + pthread_mutex_t *bg_mon_mutexes; + pthread_cond_t *bg_mon_conds; + pthread_cond_t *bg_mon_sleep_conds; #endif #ifndef WITHOUT_SPIDER_BG_SEARCH /* static bg thread for sts and crd */ - TABLE table; - ha_spider *sts_spider; - ha_spider *crd_spider; - SPIDER_THREAD *sts_thread; - SPIDER_THREAD *crd_thread; - volatile bool sts_spider_init; - volatile bool sts_working; - volatile bool sts_wait; - volatile bool crd_spider_init; - volatile bool crd_working; - volatile bool crd_wait; + TABLE table; + ha_spider *sts_spider; + ha_spider *crd_spider; + SPIDER_THREAD *sts_thread; + SPIDER_THREAD *crd_thread; + volatile bool sts_spider_init; + volatile bool sts_working; + volatile bool sts_wait; + volatile bool crd_spider_init; + volatile bool crd_working; + volatile bool crd_wait; volatile SPIDER_SHARE *sts_prev; volatile SPIDER_SHARE *sts_next; volatile SPIDER_SHARE *crd_prev; volatile SPIDER_SHARE *crd_next; #endif - MEM_ROOT mem_root; + MEM_ROOT mem_root; -/* - volatile bool auto_increment_init; - volatile ulonglong auto_increment_lclval; -*/ - ha_statistics stat; + /* + volatile bool auto_increment_init; + volatile ulonglong auto_increment_lclval; + */ + ha_statistics stat; - longlong static_records_for_status; - longlong static_mean_rec_length; + longlong static_records_for_status; + longlong static_mean_rec_length; - int bitmap_size; - spider_string *key_hint; - CHARSET_INFO *access_charset; - longlong *static_key_cardinality; - longlong *cardinality; - uchar *cardinality_upd; - longlong additional_table_flags; - bool have_recovery_link; + int bitmap_size; + spider_string *key_hint; + CHARSET_INFO *access_charset; + longlong *static_key_cardinality; + longlong *cardinality; + uchar *cardinality_upd; + longlong additional_table_flags; + bool have_recovery_link; #ifndef WITHOUT_SPIDER_BG_SEARCH - int sts_bg_mode; + int sts_bg_mode; #endif - double sts_interval; - int sts_mode; + double sts_interval; + int sts_mode; #ifdef WITH_PARTITION_STORAGE_ENGINE - int sts_sync; + int sts_sync; #endif - int store_last_sts; - int load_sts_at_startup; + int store_last_sts; + int load_sts_at_startup; #ifndef WITHOUT_SPIDER_BG_SEARCH - int crd_bg_mode; + int crd_bg_mode; #endif - double crd_interval; - int crd_mode; + double crd_interval; + int crd_mode; #ifdef WITH_PARTITION_STORAGE_ENGINE - int crd_sync; -#endif - int store_last_crd; - int load_crd_at_startup; - int crd_type; - double crd_weight; - longlong internal_offset; - longlong internal_limit; - longlong split_read; - double semi_split_read; - longlong semi_split_read_limit; - int init_sql_alloc_size; - int reset_sql_alloc; - int multi_split_read; - int max_order; - int semi_table_lock; - int semi_table_lock_conn; - int selupd_lock_mode; - int query_cache; - int query_cache_sync; - int internal_delayed; - int bulk_size; - int bulk_update_mode; - int bulk_update_size; - int buffer_size; - int internal_optimize; - int internal_optimize_local; - double scan_rate; - double read_rate; - longlong priority; - int quick_mode; - longlong quick_page_size; - longlong quick_page_byte; - int low_mem_read; - int table_count_mode; - int select_column_mode; + int crd_sync; +#endif + int store_last_crd; + int load_crd_at_startup; + int crd_type; + double crd_weight; + longlong internal_offset; + longlong internal_limit; + longlong split_read; + double semi_split_read; + longlong semi_split_read_limit; + int init_sql_alloc_size; + int reset_sql_alloc; + int multi_split_read; + int max_order; + int semi_table_lock; + int semi_table_lock_conn; + int selupd_lock_mode; + int query_cache; + int query_cache_sync; + int internal_delayed; + int bulk_size; + int bulk_update_mode; + int bulk_update_size; + int buffer_size; + int internal_optimize; + int internal_optimize_local; + double scan_rate; + double read_rate; + longlong priority; + int quick_mode; + longlong quick_page_size; + longlong quick_page_byte; + int low_mem_read; + int table_count_mode; + int select_column_mode; #ifndef WITHOUT_SPIDER_BG_SEARCH - int bgs_mode; - longlong bgs_first_read; - longlong bgs_second_read; -#endif - longlong first_read; - longlong second_read; - int auto_increment_mode; - int use_table_charset; - int use_pushdown_udf; - int skip_default_condition; - int skip_parallel_search; - int direct_dup_insert; - longlong direct_order_limit; - int read_only_mode; - int error_read_mode; - int error_write_mode; - int active_link_count; + int bgs_mode; + longlong bgs_first_read; + longlong bgs_second_read; +#endif + longlong first_read; + longlong second_read; + int auto_increment_mode; + int use_table_charset; + int use_pushdown_udf; + int skip_default_condition; + int skip_parallel_search; + int direct_dup_insert; + longlong direct_order_limit; + int read_only_mode; + int error_read_mode; + int error_write_mode; + int active_link_count; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - longlong hs_result_free_size; + longlong hs_result_free_size; #endif #ifdef HA_CAN_BULK_ACCESS - int bulk_access_free; + int bulk_access_free; #endif #ifdef HA_CAN_FORCE_BULK_UPDATE - int force_bulk_update; + int force_bulk_update; #endif #ifdef HA_CAN_FORCE_BULK_DELETE - int force_bulk_delete; + int force_bulk_delete; #endif - int casual_read; - int delete_all_rows_type; + int casual_read; + int delete_all_rows_type; - int bka_mode; - char *bka_engine; - int bka_engine_length; + int bka_mode; + char *bka_engine; + int bka_engine_length; #ifdef SPIDER_HAS_HASH_VALUE_TYPE my_hash_value_type *conn_keys_hash_value; @@ -1150,484 +1178,466 @@ typedef struct st_spider_share my_hash_value_type *hs_write_conn_keys_hash_value; #endif #endif - char **server_names; - char **tgt_table_names; - char **tgt_dbs; - char **tgt_hosts; - char **tgt_usernames; - char **tgt_passwords; - char **tgt_sockets; - char **tgt_wrappers; - char **tgt_ssl_cas; - char **tgt_ssl_capaths; - char **tgt_ssl_certs; - char **tgt_ssl_ciphers; - char **tgt_ssl_keys; - char **tgt_default_files; - char **tgt_default_groups; - char **tgt_dsns; - char **tgt_filedsns; - char **tgt_drivers; - char **static_link_ids; - char **tgt_pk_names; - char **tgt_sequence_names; - char **conn_keys; + char **server_names; + char **tgt_table_names; + char **tgt_dbs; + char **tgt_hosts; + char **tgt_usernames; + char **tgt_passwords; + char **tgt_sockets; + char **tgt_wrappers; + char **tgt_ssl_cas; + char **tgt_ssl_capaths; + char **tgt_ssl_certs; + char **tgt_ssl_ciphers; + char **tgt_ssl_keys; + char **tgt_default_files; + char **tgt_default_groups; + char **tgt_dsns; + char **tgt_filedsns; + char **tgt_drivers; + char **static_link_ids; + char **tgt_pk_names; + char **tgt_sequence_names; + char **conn_keys; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - char **hs_read_socks; - char **hs_write_socks; - char **hs_read_conn_keys; - char **hs_write_conn_keys; -#endif - long *tgt_ports; - long *tgt_ssl_vscs; - long *link_statuses; + char **hs_read_socks; + char **hs_write_socks; + char **hs_read_conn_keys; + char **hs_write_conn_keys; +#endif + long *tgt_ports; + long *tgt_ssl_vscs; + long *link_statuses; #ifndef WITHOUT_SPIDER_BG_SEARCH - long *monitoring_bg_flag; - long *monitoring_bg_kind; + long *monitoring_bg_flag; + long *monitoring_bg_kind; #endif - long *monitoring_binlog_pos_at_failing; - long *monitoring_flag; - long *monitoring_kind; + long *monitoring_binlog_pos_at_failing; + long *monitoring_flag; + long *monitoring_kind; #ifndef WITHOUT_SPIDER_BG_SEARCH - longlong *monitoring_bg_interval; + longlong *monitoring_bg_interval; #endif - longlong *monitoring_limit; - longlong *monitoring_sid; + longlong *monitoring_limit; + longlong *monitoring_sid; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - long *use_hs_reads; - long *use_hs_writes; - long *hs_read_ports; - long *hs_write_ports; - long *hs_write_to_reads; -#endif - long *use_handlers; - long *connect_timeouts; - long *net_read_timeouts; - long *net_write_timeouts; - long *access_balances; - long *bka_table_name_types; - long *strict_group_bys; - - uint *server_names_lengths; - uint *tgt_table_names_lengths; - uint *tgt_dbs_lengths; - uint *tgt_hosts_lengths; - uint *tgt_usernames_lengths; - uint *tgt_passwords_lengths; - uint *tgt_sockets_lengths; - uint *tgt_wrappers_lengths; - uint *tgt_ssl_cas_lengths; - uint *tgt_ssl_capaths_lengths; - uint *tgt_ssl_certs_lengths; - uint *tgt_ssl_ciphers_lengths; - uint *tgt_ssl_keys_lengths; - uint *tgt_default_files_lengths; - uint *tgt_default_groups_lengths; - uint *tgt_dsns_lengths; - uint *tgt_filedsns_lengths; - uint *tgt_drivers_lengths; - uint *static_link_ids_lengths; - uint *tgt_pk_names_lengths; - uint *tgt_sequence_names_lengths; - uint *conn_keys_lengths; + long *use_hs_reads; + long *use_hs_writes; + long *hs_read_ports; + long *hs_write_ports; + long *hs_write_to_reads; +#endif + long *use_handlers; + long *connect_timeouts; + long *net_read_timeouts; + long *net_write_timeouts; + long *access_balances; + long *bka_table_name_types; + long *strict_group_bys; + + uint *server_names_lengths; + uint *tgt_table_names_lengths; + uint *tgt_dbs_lengths; + uint *tgt_hosts_lengths; + uint *tgt_usernames_lengths; + uint *tgt_passwords_lengths; + uint *tgt_sockets_lengths; + uint *tgt_wrappers_lengths; + uint *tgt_ssl_cas_lengths; + uint *tgt_ssl_capaths_lengths; + uint *tgt_ssl_certs_lengths; + uint *tgt_ssl_ciphers_lengths; + uint *tgt_ssl_keys_lengths; + uint *tgt_default_files_lengths; + uint *tgt_default_groups_lengths; + uint *tgt_dsns_lengths; + uint *tgt_filedsns_lengths; + uint *tgt_drivers_lengths; + uint *static_link_ids_lengths; + uint *tgt_pk_names_lengths; + uint *tgt_sequence_names_lengths; + uint *conn_keys_lengths; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - uint *hs_read_socks_lengths; - uint *hs_write_socks_lengths; - uint *hs_read_conn_keys_lengths; - uint *hs_write_conn_keys_lengths; + uint *hs_read_socks_lengths; + uint *hs_write_socks_lengths; + uint *hs_read_conn_keys_lengths; + uint *hs_write_conn_keys_lengths; #endif - uint *sql_dbton_ids; + uint *sql_dbton_ids; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - uint *hs_dbton_ids; -#endif - - uint server_names_charlen; - uint tgt_table_names_charlen; - uint tgt_dbs_charlen; - uint tgt_hosts_charlen; - uint tgt_usernames_charlen; - uint tgt_passwords_charlen; - uint tgt_sockets_charlen; - uint tgt_wrappers_charlen; - uint tgt_ssl_cas_charlen; - uint tgt_ssl_capaths_charlen; - uint tgt_ssl_certs_charlen; - uint tgt_ssl_ciphers_charlen; - uint tgt_ssl_keys_charlen; - uint tgt_default_files_charlen; - uint tgt_default_groups_charlen; - uint tgt_dsns_charlen; - uint tgt_filedsns_charlen; - uint tgt_drivers_charlen; - uint static_link_ids_charlen; - uint tgt_pk_names_charlen; - uint tgt_sequence_names_charlen; - uint conn_keys_charlen; + uint *hs_dbton_ids; +#endif + + uint server_names_charlen; + uint tgt_table_names_charlen; + uint tgt_dbs_charlen; + uint tgt_hosts_charlen; + uint tgt_usernames_charlen; + uint tgt_passwords_charlen; + uint tgt_sockets_charlen; + uint tgt_wrappers_charlen; + uint tgt_ssl_cas_charlen; + uint tgt_ssl_capaths_charlen; + uint tgt_ssl_certs_charlen; + uint tgt_ssl_ciphers_charlen; + uint tgt_ssl_keys_charlen; + uint tgt_default_files_charlen; + uint tgt_default_groups_charlen; + uint tgt_dsns_charlen; + uint tgt_filedsns_charlen; + uint tgt_drivers_charlen; + uint static_link_ids_charlen; + uint tgt_pk_names_charlen; + uint tgt_sequence_names_charlen; + uint conn_keys_charlen; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - uint hs_read_socks_charlen; - uint hs_write_socks_charlen; - uint hs_read_conn_keys_charlen; - uint hs_write_conn_keys_charlen; -#endif - - uint server_names_length; - uint tgt_table_names_length; - uint tgt_dbs_length; - uint tgt_hosts_length; - uint tgt_usernames_length; - uint tgt_passwords_length; - uint tgt_sockets_length; - uint tgt_wrappers_length; - uint tgt_ssl_cas_length; - uint tgt_ssl_capaths_length; - uint tgt_ssl_certs_length; - uint tgt_ssl_ciphers_length; - uint tgt_ssl_keys_length; - uint tgt_default_files_length; - uint tgt_default_groups_length; - uint tgt_dsns_length; - uint tgt_filedsns_length; - uint tgt_drivers_length; - uint static_link_ids_length; - uint tgt_pk_names_length; - uint tgt_sequence_names_length; - uint conn_keys_length; + uint hs_read_socks_charlen; + uint hs_write_socks_charlen; + uint hs_read_conn_keys_charlen; + uint hs_write_conn_keys_charlen; +#endif + + uint server_names_length; + uint tgt_table_names_length; + uint tgt_dbs_length; + uint tgt_hosts_length; + uint tgt_usernames_length; + uint tgt_passwords_length; + uint tgt_sockets_length; + uint tgt_wrappers_length; + uint tgt_ssl_cas_length; + uint tgt_ssl_capaths_length; + uint tgt_ssl_certs_length; + uint tgt_ssl_ciphers_length; + uint tgt_ssl_keys_length; + uint tgt_default_files_length; + uint tgt_default_groups_length; + uint tgt_dsns_length; + uint tgt_filedsns_length; + uint tgt_drivers_length; + uint static_link_ids_length; + uint tgt_pk_names_length; + uint tgt_sequence_names_length; + uint conn_keys_length; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - uint hs_read_socks_length; - uint hs_write_socks_length; - uint hs_read_conn_keys_length; - uint hs_write_conn_keys_length; -#endif - uint tgt_ports_length; - uint tgt_ssl_vscs_length; - uint link_statuses_length; + uint hs_read_socks_length; + uint hs_write_socks_length; + uint hs_read_conn_keys_length; + uint hs_write_conn_keys_length; +#endif + uint tgt_ports_length; + uint tgt_ssl_vscs_length; + uint link_statuses_length; #ifndef WITHOUT_SPIDER_BG_SEARCH - uint monitoring_bg_flag_length; - uint monitoring_bg_kind_length; + uint monitoring_bg_flag_length; + uint monitoring_bg_kind_length; #endif - uint monitoring_binlog_pos_at_failing_length; - uint monitoring_flag_length; - uint monitoring_kind_length; + uint monitoring_binlog_pos_at_failing_length; + uint monitoring_flag_length; + uint monitoring_kind_length; #ifndef WITHOUT_SPIDER_BG_SEARCH - uint monitoring_bg_interval_length; + uint monitoring_bg_interval_length; #endif - uint monitoring_limit_length; - uint monitoring_sid_length; + uint monitoring_limit_length; + uint monitoring_sid_length; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - uint use_hs_reads_length; - uint use_hs_writes_length; - uint hs_read_ports_length; - uint hs_write_ports_length; - uint hs_write_to_reads_length; -#endif - uint use_handlers_length; - uint connect_timeouts_length; - uint net_read_timeouts_length; - uint net_write_timeouts_length; - uint access_balances_length; - uint bka_table_name_types_length; - uint strict_group_bys_length; + uint use_hs_reads_length; + uint use_hs_writes_length; + uint hs_read_ports_length; + uint hs_write_ports_length; + uint hs_write_to_reads_length; +#endif + uint use_handlers_length; + uint connect_timeouts_length; + uint net_read_timeouts_length; + uint net_write_timeouts_length; + uint access_balances_length; + uint bka_table_name_types_length; + uint strict_group_bys_length; /* for dbton */ - uchar dbton_bitmap[spider_bitmap_size(SPIDER_DBTON_SIZE)]; - spider_db_share *dbton_share[SPIDER_DBTON_SIZE]; - uint use_dbton_count; - uint use_dbton_ids[SPIDER_DBTON_SIZE]; - uint dbton_id_to_seq[SPIDER_DBTON_SIZE]; - uint use_sql_dbton_count; - uint use_sql_dbton_ids[SPIDER_DBTON_SIZE]; - uint sql_dbton_id_to_seq[SPIDER_DBTON_SIZE]; + uchar dbton_bitmap[spider_bitmap_size(SPIDER_DBTON_SIZE)]; + spider_db_share *dbton_share[SPIDER_DBTON_SIZE]; + uint use_dbton_count; + uint use_dbton_ids[SPIDER_DBTON_SIZE]; + uint dbton_id_to_seq[SPIDER_DBTON_SIZE]; + uint use_sql_dbton_count; + uint use_sql_dbton_ids[SPIDER_DBTON_SIZE]; + uint sql_dbton_id_to_seq[SPIDER_DBTON_SIZE]; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - uint use_hs_dbton_count; - uint use_hs_dbton_ids[SPIDER_DBTON_SIZE]; - uint hs_dbton_id_to_seq[SPIDER_DBTON_SIZE]; + uint use_hs_dbton_count; + uint use_hs_dbton_ids[SPIDER_DBTON_SIZE]; + uint hs_dbton_id_to_seq[SPIDER_DBTON_SIZE]; #endif SPIDER_ALTER_TABLE alter_table; - SPIDER_WIDE_SHARE *wide_share; + SPIDER_WIDE_SHARE *wide_share; } SPIDER_SHARE; -typedef struct st_spider_link_pack -{ - SPIDER_SHARE *share; - int link_idx; +typedef struct st_spider_link_pack { + SPIDER_SHARE *share; + int link_idx; } SPIDER_LINK_PACK; -typedef struct st_spider_init_error_table -{ - char *table_name; - uint table_name_length; +typedef struct st_spider_init_error_table { + char *table_name; + uint table_name_length; #ifdef SPIDER_HAS_HASH_VALUE_TYPE my_hash_value_type table_name_hash_value; #endif - bool init_error_with_message; - char init_error_msg[MYSQL_ERRMSG_SIZE]; - volatile int init_error; - volatile time_t init_error_time; + bool init_error_with_message; + char init_error_msg[MYSQL_ERRMSG_SIZE]; + volatile int init_error; + volatile time_t init_error_time; } SPIDER_INIT_ERROR_TABLE; -typedef struct st_spider_direct_sql -{ - int table_count; - char **db_names; - char **table_names; - TABLE **tables; - int *iop; +typedef struct st_spider_direct_sql { + int table_count; + char **db_names; + char **table_names; + TABLE **tables; + int *iop; #if MYSQL_VERSION_ID < 50500 #else /* for using real table */ - bool real_table_used; - TABLE_LIST *table_list_first; - TABLE_LIST *table_list; - uchar *real_table_bitmap; + bool real_table_used; + TABLE_LIST *table_list_first; + TABLE_LIST *table_list; + uchar *real_table_bitmap; SPIDER_Open_tables_backup open_tables_backup; - THD *open_tables_thd; + THD *open_tables_thd; #endif - char *sql; - ulong sql_length; + char *sql; + ulong sql_length; - SPIDER_TRX *trx; - SPIDER_CONN *conn; + SPIDER_TRX *trx; + SPIDER_CONN *conn; - bool modified_non_trans_table; + bool modified_non_trans_table; - int table_loop_mode; - longlong priority; - int connect_timeout; - int net_read_timeout; - int net_write_timeout; - longlong bulk_insert_rows; - int connection_channel; + int table_loop_mode; + longlong priority; + int connect_timeout; + int net_read_timeout; + int net_write_timeout; + longlong bulk_insert_rows; + int connection_channel; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) - int access_mode; + int access_mode; #endif #if MYSQL_VERSION_ID < 50500 #else - int use_real_table; -#endif - int error_rw_mode; - - char *server_name; - char *tgt_default_db_name; - char *tgt_host; - char *tgt_username; - char *tgt_password; - char *tgt_socket; - char *tgt_wrapper; - char *tgt_ssl_ca; - char *tgt_ssl_capath; - char *tgt_ssl_cert; - char *tgt_ssl_cipher; - char *tgt_ssl_key; - char *tgt_default_file; - char *tgt_default_group; - char *tgt_dsn; - char *tgt_filedsn; - char *tgt_driver; - char *conn_key; - long tgt_port; - long tgt_ssl_vsc; - - uint server_name_length; - uint tgt_default_db_name_length; - uint tgt_host_length; - uint tgt_username_length; - uint tgt_password_length; - uint tgt_socket_length; - uint tgt_wrapper_length; - uint tgt_ssl_ca_length; - uint tgt_ssl_capath_length; - uint tgt_ssl_cert_length; - uint tgt_ssl_cipher_length; - uint tgt_ssl_key_length; - uint tgt_default_file_length; - uint tgt_default_group_length; - uint tgt_dsn_length; - uint tgt_filedsn_length; - uint tgt_driver_length; - uint conn_key_length; - uint dbton_id; + int use_real_table; +#endif + int error_rw_mode; + + char *server_name; + char *tgt_default_db_name; + char *tgt_host; + char *tgt_username; + char *tgt_password; + char *tgt_socket; + char *tgt_wrapper; + char *tgt_ssl_ca; + char *tgt_ssl_capath; + char *tgt_ssl_cert; + char *tgt_ssl_cipher; + char *tgt_ssl_key; + char *tgt_default_file; + char *tgt_default_group; + char *tgt_dsn; + char *tgt_filedsn; + char *tgt_driver; + char *conn_key; + long tgt_port; + long tgt_ssl_vsc; + + uint server_name_length; + uint tgt_default_db_name_length; + uint tgt_host_length; + uint tgt_username_length; + uint tgt_password_length; + uint tgt_socket_length; + uint tgt_wrapper_length; + uint tgt_ssl_ca_length; + uint tgt_ssl_capath_length; + uint tgt_ssl_cert_length; + uint tgt_ssl_cipher_length; + uint tgt_ssl_key_length; + uint tgt_default_file_length; + uint tgt_default_group_length; + uint tgt_dsn_length; + uint tgt_filedsn_length; + uint tgt_driver_length; + uint conn_key_length; + uint dbton_id; #ifdef SPIDER_HAS_HASH_VALUE_TYPE - my_hash_value_type conn_key_hash_value; + my_hash_value_type conn_key_hash_value; #endif - pthread_mutex_t *bg_mutex; - pthread_cond_t *bg_cond; + pthread_mutex_t *bg_mutex; + pthread_cond_t *bg_cond; volatile st_spider_direct_sql *prev; volatile st_spider_direct_sql *next; - void *parent; + void *parent; } SPIDER_DIRECT_SQL; -typedef struct st_spider_bg_direct_sql -{ - longlong called_cnt; - char bg_error_msg[MYSQL_ERRMSG_SIZE]; - volatile int bg_error; - volatile bool modified_non_trans_table; - pthread_mutex_t bg_mutex; - pthread_cond_t bg_cond; +typedef struct st_spider_bg_direct_sql { + longlong called_cnt; + char bg_error_msg[MYSQL_ERRMSG_SIZE]; + volatile int bg_error; + volatile bool modified_non_trans_table; + pthread_mutex_t bg_mutex; + pthread_cond_t bg_cond; volatile SPIDER_DIRECT_SQL *direct_sql; } SPIDER_BG_DIRECT_SQL; -typedef struct st_spider_mon_table_result -{ - int result_status; - SPIDER_TRX *trx; +typedef struct st_spider_mon_table_result { + int result_status; + SPIDER_TRX *trx; } SPIDER_MON_TABLE_RESULT; -typedef struct st_spider_table_mon -{ - SPIDER_SHARE *share; - uint32 server_id; - st_spider_table_mon_list *parent; - st_spider_table_mon *next; +typedef struct st_spider_table_mon { + SPIDER_SHARE *share; + uint32 server_id; + st_spider_table_mon_list *parent; + st_spider_table_mon *next; } SPIDER_TABLE_MON; -typedef struct st_spider_table_mon_list -{ - char *key; - uint key_length; +typedef struct st_spider_table_mon_list { + char *key; + uint key_length; #ifdef SPIDER_HAS_HASH_VALUE_TYPE - my_hash_value_type key_hash_value; + my_hash_value_type key_hash_value; #endif - uint use_count; - uint mutex_hash; - ulonglong mon_table_cache_version; + uint use_count; + uint mutex_hash; + ulonglong mon_table_cache_version; - char *table_name; - int link_id; - uint table_name_length; + char *table_name; + int link_id; + uint table_name_length; - int list_size; - SPIDER_TABLE_MON *first; - SPIDER_TABLE_MON *current; - volatile int mon_status; + int list_size; + SPIDER_TABLE_MON *first; + SPIDER_TABLE_MON *current; + volatile int mon_status; - SPIDER_SHARE *share; + SPIDER_SHARE *share; - pthread_mutex_t caller_mutex; - pthread_mutex_t receptor_mutex; - pthread_mutex_t monitor_mutex; - pthread_mutex_t update_status_mutex; - volatile int last_caller_result; - volatile int last_receptor_result; - volatile int last_mon_result; + pthread_mutex_t caller_mutex; + pthread_mutex_t receptor_mutex; + pthread_mutex_t monitor_mutex; + pthread_mutex_t update_status_mutex; + volatile int last_caller_result; + volatile int last_receptor_result; + volatile int last_mon_result; } SPIDER_TABLE_MON_LIST; -typedef struct st_spider_copy_table_conn -{ - SPIDER_SHARE *share; - int link_idx; - SPIDER_CONN *conn; - spider_db_copy_table *copy_table; - ha_spider *spider; - int need_mon; +typedef struct st_spider_copy_table_conn { + SPIDER_SHARE *share; + int link_idx; + SPIDER_CONN *conn; + spider_db_copy_table *copy_table; + ha_spider *spider; + int need_mon; #ifndef WITHOUT_SPIDER_BG_SEARCH - int bg_error_num; + int bg_error_num; #endif - st_spider_copy_table_conn *next; + st_spider_copy_table_conn *next; } SPIDER_COPY_TABLE_CONN; -typedef struct st_spider_copy_tables -{ - SPIDER_TRX *trx; - char *spider_db_name; - int spider_db_name_length; - char *spider_table_name; - int spider_table_name_length; - char *spider_real_table_name; - int spider_real_table_name_length; - TABLE_LIST spider_table_list; - CHARSET_INFO *access_charset; - - SPIDER_COPY_TABLE_CONN *table_conn[2]; - bool use_auto_mode[2]; - int link_idx_count[2]; - int *link_idxs[2]; - - int bulk_insert_interval; - longlong bulk_insert_rows; - int use_table_charset; - int use_transaction; +typedef struct st_spider_copy_tables { + SPIDER_TRX *trx; + char *spider_db_name; + int spider_db_name_length; + char *spider_table_name; + int spider_table_name_length; + char *spider_real_table_name; + int spider_real_table_name_length; + TABLE_LIST spider_table_list; + CHARSET_INFO *access_charset; + + SPIDER_COPY_TABLE_CONN *table_conn[2]; + bool use_auto_mode[2]; + int link_idx_count[2]; + int *link_idxs[2]; + + int bulk_insert_interval; + longlong bulk_insert_rows; + int use_table_charset; + int use_transaction; #ifndef WITHOUT_SPIDER_BG_SEARCH - int bg_mode; + int bg_mode; #endif - char *database; + char *database; - int database_length; + int database_length; } SPIDER_COPY_TABLES; -class SPIDER_SORT -{ -public: +class SPIDER_SORT { + public: ulong sort; }; -typedef struct st_spider_trx_ha -{ - char *table_name; - uint table_name_length; - SPIDER_TRX *trx; - SPIDER_SHARE *share; - uint link_count; - uint link_bitmap_size; - uint *conn_link_idx; - uchar *conn_can_fo; - bool wait_for_reusing; +typedef struct st_spider_trx_ha { + char *table_name; + uint table_name_length; + SPIDER_TRX *trx; + SPIDER_SHARE *share; + uint link_count; + uint link_bitmap_size; + uint *conn_link_idx; + uchar *conn_can_fo; + bool wait_for_reusing; } SPIDER_TRX_HA; #ifdef HA_CAN_BULK_ACCESS -typedef struct st_spider_bulk_access_link -{ - ha_spider *spider; - uint sequence_num; - bool used; - bool called; - MEM_ROOT mem_root; +typedef struct st_spider_bulk_access_link { + ha_spider *spider; + uint sequence_num; + bool used; + bool called; + MEM_ROOT mem_root; st_spider_bulk_access_link *next; } SPIDER_BULK_ACCESS_LINK; #endif #define SPIDER_INT_HLD_TGT_SIZE 100 -typedef struct st_spider_int_hld -{ +typedef struct st_spider_int_hld { uint tgt_num; int tgt[SPIDER_INT_HLD_TGT_SIZE]; st_spider_int_hld *next; } SPIDER_INT_HLD; -typedef struct st_spider_item_hld -{ - uint tgt_num; - Item *item; +typedef struct st_spider_item_hld { + uint tgt_num; + Item *item; #ifdef SPIDER_ITEM_STRING_WITHOUT_SET_STR_WITH_COPY_AND_THDPTR - bool init_mem_root; - MEM_ROOT mem_root; + bool init_mem_root; + MEM_ROOT mem_root; #endif st_spider_item_hld *next; } SPIDER_ITEM_HLD; -char *spider_create_string( - const char *str, - uint length -); - +char *spider_create_string(const char *str, uint length); typedef struct st_spider_ip_port_conn { - char *key; - size_t key_len; + char *key; + size_t key_len; #ifdef SPIDER_HAS_HASH_VALUE_TYPE my_hash_value_type key_hash_value; #endif - char *remote_ip_str; - long remote_port; - ulong ip_port_count; - volatile ulong waiting_count; - pthread_mutex_t mutex; - pthread_cond_t cond; - ulonglong conn_id; /* each conn has it's own conn_id */ + char *remote_ip_str; + long remote_port; + ulong ip_port_count; + volatile ulong waiting_count; + pthread_mutex_t mutex; + pthread_cond_t cond; + ulonglong conn_id; /* each conn has it's own conn_id */ } SPIDER_IP_PORT_CONN; diff --git a/storage/spider/spd_init_query.h b/storage/spider/spd_init_query.h index ba982590766..c63d2f39b40 100644 --- a/storage/spider/spd_init_query.h +++ b/storage/spider/spd_init_query.h @@ -20,843 +20,829 @@ */ static LEX_STRING spider_init_queries[] = { - {C_STRING_WITH_LEN( - "create table if not exists mysql.spider_xa(" - " format_id int not null default 0," - " gtrid_length int not null default 0," - " bqual_length int not null default 0," - " data char(128) charset binary not null default ''," - " status char(8) not null default ''," - " primary key (data, format_id, gtrid_length)," - " key idx1 (status)" - ") engine=MyISAM default charset=utf8 collate=utf8_bin" - )}, - {C_STRING_WITH_LEN( - "create table if not exists mysql.spider_xa_member(" - " format_id int not null default 0," - " gtrid_length int not null default 0," - " bqual_length int not null default 0," - " data char(128) charset binary not null default ''," - " scheme char(64) not null default ''," - " host char(64) not null default ''," - " port char(5) not null default ''," - " socket text not null," - " username char(64) not null default ''," - " password char(64) not null default ''," - " ssl_ca text," - " ssl_capath text," - " ssl_cert text," - " ssl_cipher char(64) default null," - " ssl_key text," - " ssl_verify_server_cert tinyint not null default 0," - " default_file text," - " default_group char(64) default null," - " dsn char(64) default null," - " filedsn text default null," - " driver char(64) default null," - " key idx1 (data, format_id, gtrid_length, host)" - ") engine=MyISAM default charset=utf8 collate=utf8_bin" - )}, - {C_STRING_WITH_LEN( - "create table if not exists mysql.spider_xa_failed_log(" - " format_id int not null default 0," - " gtrid_length int not null default 0," - " bqual_length int not null default 0," - " data char(128) charset binary not null default ''," - " scheme char(64) not null default ''," - " host char(64) not null default ''," - " port char(5) not null default ''," - " socket text not null," - " username char(64) not null default ''," - " password char(64) not null default ''," - " ssl_ca text," - " ssl_capath text," - " ssl_cert text," - " ssl_cipher char(64) default null," - " ssl_key text," - " ssl_verify_server_cert tinyint not null default 0," - " default_file text," - " default_group char(64) default null," - " dsn char(64) default null," - " filedsn text default null," - " driver char(64) default null," - " thread_id int default null," - " status char(8) not null default ''," - " failed_time timestamp not null default current_timestamp," - " key idx1 (data, format_id, gtrid_length, host)" - ") engine=MyISAM default charset=utf8 collate=utf8_bin" - )}, - {C_STRING_WITH_LEN( - "create table if not exists mysql.spider_tables(" - " db_name char(64) not null default ''," - " table_name char(199) not null default ''," - " link_id int not null default 0," - " priority bigint not null default 0," - " server char(64) default null," - " scheme char(64) default null," - " host char(64) default null," - " port char(5) default null," - " socket text," - " username char(64) default null," - " password char(64) default null," - " ssl_ca text," - " ssl_capath text," - " ssl_cert text," - " ssl_cipher char(64) default null," - " ssl_key text," - " ssl_verify_server_cert tinyint not null default 0," - " monitoring_binlog_pos_at_failing tinyint not null default 0," - " default_file text," - " default_group char(64) default null," - " dsn char(64) default null," - " filedsn text default null," - " driver char(64) default null," - " tgt_db_name char(64) default null," - " tgt_table_name char(64) default null," - " link_status tinyint not null default 1," - " block_status tinyint not null default 0," - " static_link_id char(64) default null," - " primary key (db_name, table_name, link_id)," - " key idx1 (priority)," - " unique key uidx1 (db_name, table_name, static_link_id)" - ") engine=MyISAM default charset=utf8 collate=utf8_bin" - )}, - {C_STRING_WITH_LEN( - "create table if not exists mysql.spider_link_mon_servers(" - " db_name char(64) not null default ''," - " table_name char(199) not null default ''," - " link_id char(64) not null default ''," - " sid int unsigned not null default 0," - " server char(64) default null," - " scheme char(64) default null," - " host char(64) default null," - " port char(5) default null," - " socket text," - " username char(64) default null," - " password char(64) default null," - " ssl_ca text," - " ssl_capath text," - " ssl_cert text," - " ssl_cipher char(64) default null," - " ssl_key text," - " ssl_verify_server_cert tinyint not null default 0," - " default_file text," - " default_group char(64) default null," - " dsn char(64) default null," - " filedsn text default null," - " driver char(64) default null," - " primary key (db_name, table_name, link_id, sid)" - ") engine=MyISAM default charset=utf8 collate=utf8_bin" - )}, - {C_STRING_WITH_LEN( - "create table if not exists mysql.spider_link_failed_log(" - " db_name char(64) not null default ''," - " table_name char(199) not null default ''," - " link_id char(64) not null default ''," - " failed_time timestamp not null default current_timestamp" - ") engine=MyISAM default charset=utf8 collate=utf8_bin" - )}, - {C_STRING_WITH_LEN( - "create table if not exists mysql.spider_table_position_for_recovery(" - " db_name char(64) not null default ''," - " table_name char(199) not null default ''," - " failed_link_id int not null default 0," - " source_link_id int not null default 0," - " file text," - " position text," - " gtid text," - " primary key (db_name, table_name, failed_link_id, source_link_id)" - ") engine=MyISAM default charset=utf8 collate=utf8_bin" - )}, - {C_STRING_WITH_LEN( - "create table if not exists mysql.spider_table_sts(" - " db_name char(64) not null default ''," - " table_name char(199) not null default ''," - " data_file_length bigint unsigned not null default 0," - " max_data_file_length bigint unsigned not null default 0," - " index_file_length bigint unsigned not null default 0," - " records bigint unsigned not null default 0," - " mean_rec_length bigint unsigned not null default 0," - " check_time datetime not null default '0000-00-00 00:00:00'," - " create_time datetime not null default '0000-00-00 00:00:00'," - " update_time datetime not null default '0000-00-00 00:00:00'," - " checksum bigint unsigned default null," - " primary key (db_name, table_name)" - ") engine=MyISAM default charset=utf8 collate=utf8_bin" - )}, - {C_STRING_WITH_LEN( - "create table if not exists mysql.spider_table_crd(" - " db_name char(64) not null default ''," - " table_name char(199) not null default ''," - " key_seq int unsigned not null default 0," - " cardinality bigint not null default 0," - " primary key (db_name, table_name, key_seq)" - ") engine=MyISAM default charset=utf8 collate=utf8_bin" - )}, -/* - If tables already exist and their definition differ - from the latest ones, we fix them here. -*/ - {C_STRING_WITH_LEN( - "drop procedure if exists mysql.spider_fix_one_table" - )}, - {C_STRING_WITH_LEN( - "drop procedure if exists mysql.spider_fix_system_tables" - )}, - {C_STRING_WITH_LEN( - "create procedure mysql.spider_fix_one_table" - " (tab_name char(255) charset utf8 collate utf8_bin," - " test_col_name char(255) charset utf8 collate utf8_bin," - " _sql text charset utf8 collate utf8_bin)" - "begin" - " set @col_exists := 0;" - " select 1 into @col_exists from INFORMATION_SCHEMA.COLUMNS" - " where TABLE_SCHEMA = 'mysql'" - " AND TABLE_NAME = tab_name" - " AND COLUMN_NAME = test_col_name;" - " if @col_exists = 0 then" - " select @stmt := _sql;" - " prepare sp_stmt1 from @stmt;" - " execute sp_stmt1;" - " end if;" - "end;" - )}, - {C_STRING_WITH_LEN( - "create procedure mysql.spider_fix_system_tables()" - "begin" - " select substring_index(substring_index(version(), '-', 2), '-', -1)" - " into @server_name;" - " if @server_name regexp '^[0-9]+$' then" - " select substring_index(substring_index(version(), '-', 3), '-', -1)" - " into @server_name;" - " end if;" - " select substring_index(version(), '.', 1)" - " into @server_major_version;" - " select substring_index(substring_index(version(), '.', 2), '.', -1)" - " into @server_minor_version;" -/* - Fix for 0.5 -*/ - " call mysql.spider_fix_one_table('spider_tables', 'server'," - " 'alter table mysql.spider_tables" - " add server char(64) default null," - " add scheme char(64) default null," - " add host char(64) default null," - " add port char(5) default null," - " add socket char(64) default null," - " add username char(64) default null," - " add password char(64) default null," - " add tgt_db_name char(64) default null," - " add tgt_table_name char(64) default null');" -/* - Fix for version 0.17 -*/ - " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS" - " where TABLE_SCHEMA = 'mysql'" - " AND TABLE_NAME = 'spider_xa'" - " AND COLUMN_NAME = 'data';" - " if @col_type != 'binary(128)' then" - " alter table mysql.spider_xa" - " modify data binary(128) not null default '';" - " end if;" - " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS" - " where TABLE_SCHEMA = 'mysql'" - " AND TABLE_NAME = 'spider_xa_member'" - " AND COLUMN_NAME = 'data';" - " if @col_type != 'binary(128)' then" - " alter table mysql.spider_xa_member" - " modify data binary(128) not null default '';" - " end if;" -/* - Fix for version 2.7 -*/ - " call mysql.spider_fix_one_table('spider_tables', 'link_id'," - " 'alter table mysql.spider_tables" - " add column link_id int not null default 0 after table_name," - " drop primary key," - " add primary key (db_name, table_name, link_id)');" -/* - Fix for version 2.8 -*/ - " call mysql.spider_fix_one_table('spider_tables', 'link_status'," - " 'alter table mysql.spider_tables" - " add column link_status tinyint not null default 1');" -/* - Fix for version 2.10 -*/ - " call mysql.spider_fix_one_table('spider_xa_member', 'ssl_ca'," - " 'alter table mysql.spider_xa_member" - " add column ssl_ca char(64) default null after password," - " add column ssl_capath char(64) default null after ssl_ca," - " add column ssl_cert char(64) default null after ssl_capath," - " add column ssl_cipher char(64) default null after ssl_cert," - " add column ssl_key char(64) default null after ssl_cipher," - " add column ssl_verify_server_cert tinyint not null default 0" - " after ssl_key," - " add column default_file char(64) default null" - " after ssl_verify_server_cert," - " add column default_group char(64) default null after default_file');" - " call mysql.spider_fix_one_table('spider_tables', 'ssl_ca'," - " 'alter table mysql.spider_tables" - " add column ssl_ca char(64) default null after password," - " add column ssl_capath char(64) default null after ssl_ca," - " add column ssl_cert char(64) default null after ssl_capath," - " add column ssl_cipher char(64) default null after ssl_cert," - " add column ssl_key char(64) default null after ssl_cipher," - " add column ssl_verify_server_cert tinyint not null default 0" - " after ssl_key," - " add column default_file char(64) default null" - " after ssl_verify_server_cert," - " add column default_group char(64) default null after default_file');" - " call mysql.spider_fix_one_table('spider_link_mon_servers', 'ssl_ca'," - " 'alter table mysql.spider_link_mon_servers" - " add column ssl_ca char(64) default null after password," - " add column ssl_capath char(64) default null after ssl_ca," - " add column ssl_cert char(64) default null after ssl_capath," - " add column ssl_cipher char(64) default null after ssl_cert," - " add column ssl_key char(64) default null after ssl_cipher," - " add column ssl_verify_server_cert tinyint not null default 0" - " after ssl_key," - " add column default_file char(64) default null" - " after ssl_verify_server_cert," - " add column default_group char(64) default null after default_file');" -/* - Fix for version 2.28 -*/ - " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS" - " where TABLE_SCHEMA = 'mysql'" - " AND TABLE_NAME = 'spider_link_mon_servers'" - " AND COLUMN_NAME = 'sid';" - " if @col_type != 'int(10) unsigned' then" - " alter table mysql.spider_link_mon_servers" - " modify sid int unsigned not null default 0;" - " end if;" -/* - Fix for version 3.1 -*/ - " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS" - " where TABLE_SCHEMA = 'mysql'" - " AND TABLE_NAME = 'spider_xa_member'" - " AND COLUMN_NAME = 'socket';" - " if @col_type = 'char(64)' then" - " alter table mysql.spider_xa_member" - " drop primary key," - " add index idx1 (data, format_id, gtrid_length, host)," - " modify socket text not null," - " modify ssl_ca text," - " modify ssl_capath text," - " modify ssl_cert text," - " modify ssl_key text," - " modify default_file text;" - " end if;" - " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS" - " where TABLE_SCHEMA = 'mysql'" - " AND TABLE_NAME = 'spider_tables'" - " AND COLUMN_NAME = 'socket';" - " if @col_type = 'char(64)' then" - " alter table mysql.spider_tables" - " modify socket text," - " modify ssl_ca text," - " modify ssl_capath text," - " modify ssl_cert text," - " modify ssl_key text," - " modify default_file text;" - " end if;" - " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS" - " where TABLE_SCHEMA = 'mysql'" - " AND TABLE_NAME = 'spider_link_mon_servers'" - " AND COLUMN_NAME = 'socket';" - " if @col_type = 'char(64)' then" - " alter table mysql.spider_link_mon_servers" - " modify socket text," - " modify ssl_ca text," - " modify ssl_capath text," - " modify ssl_cert text," - " modify ssl_key text," - " modify default_file text;" - " end if;" -/* - Fix for version 3.3.0 -*/ - " call mysql.spider_fix_one_table('spider_tables'," - " 'monitoring_binlog_pos_at_failing'," - " 'alter table mysql.spider_tables" - " add monitoring_binlog_pos_at_failing tinyint not null default 0" - " after ssl_verify_server_cert');" -/* - Fix for version 3.3.6 -*/ - " call mysql.spider_fix_one_table('spider_tables', 'block_status'," - " 'alter table mysql.spider_tables" - " add column block_status tinyint not null default 0" - " after link_status');" - " call mysql.spider_fix_one_table('spider_tables', 'static_link_id'," - " 'alter table mysql.spider_tables" - " add column static_link_id char(64) default null after block_status," - " add unique index uidx1 (db_name, table_name, static_link_id)');" - " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS" - " where TABLE_SCHEMA = 'mysql'" - " AND TABLE_NAME = 'spider_link_mon_servers'" - " AND COLUMN_NAME = 'link_id';" - " if @col_type != 'char(64)' then" - " alter table mysql.spider_link_mon_servers" - " modify link_id char(64) not null default '';" - " end if;" - " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS" - " where TABLE_SCHEMA = 'mysql'" - " AND TABLE_NAME = 'spider_link_failed_log'" - " AND COLUMN_NAME = 'link_id';" - " if @col_type != 'char(64)' then" - " alter table mysql.spider_link_failed_log" - " modify link_id char(64) not null default '';" - " end if;" -/* - Fix for version 3.3.10 -*/ - " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS" - " where TABLE_SCHEMA = 'mysql'" - " AND TABLE_NAME = 'spider_tables'" - " AND COLUMN_NAME = 'table_name';" - " if @col_type != 'char(199)' then" - " alter table mysql.spider_tables" - " modify table_name char(199) not null default '';" - " end if;" - " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS" - " where TABLE_SCHEMA = 'mysql'" - " AND TABLE_NAME = 'spider_link_mon_servers'" - " AND COLUMN_NAME = 'table_name';" - " if @col_type != 'char(199)' then" - " alter table mysql.spider_link_mon_servers" - " modify table_name char(199) not null default '';" - " end if;" - " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS" - " where TABLE_SCHEMA = 'mysql'" - " AND TABLE_NAME = 'spider_link_failed_log'" - " AND COLUMN_NAME = 'table_name';" - " if @col_type != 'char(199)' then" - " alter table mysql.spider_link_failed_log" - " modify table_name char(199) not null default '';" - " end if;" - " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS" - " where TABLE_SCHEMA = 'mysql'" - " AND TABLE_NAME = 'spider_table_position_for_recovery'" - " AND COLUMN_NAME = 'table_name';" - " if @col_type != 'char(199)' then" - " alter table mysql.spider_table_position_for_recovery" - " modify table_name char(199) not null default '';" - " end if;" - " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS" - " where TABLE_SCHEMA = 'mysql'" - " AND TABLE_NAME = 'spider_table_sts'" - " AND COLUMN_NAME = 'table_name';" - " if @col_type != 'char(199)' then" - " alter table mysql.spider_table_sts" - " modify table_name char(199) not null default '';" - " end if;" - " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS" - " where TABLE_SCHEMA = 'mysql'" - " AND TABLE_NAME = 'spider_table_crd'" - " AND COLUMN_NAME = 'table_name';" - " if @col_type != 'char(199)' then" - " alter table mysql.spider_table_crd" - " modify table_name char(199) not null default '';" - " end if;" -/* - Fix for version 3.3.15 -*/ - " call mysql.spider_fix_one_table('spider_table_sts', 'checksum'," - " 'alter table mysql.spider_table_sts" - " add column checksum bigint unsigned default null after update_time');" -/* - Fix for MariaDB 10.4: Crash-Safe system tables -*/ - " if @server_name = 'MariaDB' and" - " (" - " @server_major_version > 10 or" - " (" - " @server_major_version = 10 and" - " @server_minor_version >= 4" - " )" - " )" - " then" - " select ENGINE INTO @engine_name from INFORMATION_SCHEMA.TABLES" - " where TABLE_SCHEMA = 'mysql'" - " AND TABLE_NAME = 'spider_link_failed_log';" - " if @engine_name != 'Aria' then" - " alter table mysql.spider_link_failed_log" - " engine=Aria transactional=1;" - " end if;" - " select ENGINE INTO @engine_name from INFORMATION_SCHEMA.TABLES" - " where TABLE_SCHEMA = 'mysql'" - " AND TABLE_NAME = 'spider_link_mon_servers';" - " if @engine_name != 'Aria' then" - " alter table mysql.spider_link_mon_servers" - " engine=Aria transactional=1;" - " end if;" - " select ENGINE INTO @engine_name from INFORMATION_SCHEMA.TABLES" - " where TABLE_SCHEMA = 'mysql'" - " AND TABLE_NAME = 'spider_table_crd';" - " if @engine_name != 'Aria' then" - " alter table mysql.spider_table_crd" - " engine=Aria transactional=1;" - " end if;" - " select ENGINE INTO @engine_name from INFORMATION_SCHEMA.TABLES" - " where TABLE_SCHEMA = 'mysql'" - " AND TABLE_NAME = 'spider_table_position_for_recovery';" - " if @engine_name != 'Aria' then" - " alter table mysql.spider_table_position_for_recovery" - " engine=Aria transactional=1;" - " end if;" - " select ENGINE INTO @engine_name from INFORMATION_SCHEMA.TABLES" - " where TABLE_SCHEMA = 'mysql'" - " AND TABLE_NAME = 'spider_table_sts';" - " if @engine_name != 'Aria' then" - " alter table mysql.spider_table_sts" - " engine=Aria transactional=1;" - " end if;" - " select ENGINE INTO @engine_name from INFORMATION_SCHEMA.TABLES" - " where TABLE_SCHEMA = 'mysql'" - " AND TABLE_NAME = 'spider_tables';" - " if @engine_name != 'Aria' then" - " alter table mysql.spider_tables" - " engine=Aria transactional=1;" - " end if;" - " select ENGINE INTO @engine_name from INFORMATION_SCHEMA.TABLES" - " where TABLE_SCHEMA = 'mysql'" - " AND TABLE_NAME = 'spider_xa';" - " if @engine_name != 'Aria' then" - " alter table mysql.spider_xa" - " engine=Aria transactional=1;" - " end if;" - " select ENGINE INTO @engine_name from INFORMATION_SCHEMA.TABLES" - " where TABLE_SCHEMA = 'mysql'" - " AND TABLE_NAME = 'spider_xa_failed_log';" - " if @engine_name != 'Aria' then" - " alter table mysql.spider_xa_failed_log" - " engine=Aria transactional=1;" - " end if;" - " select ENGINE INTO @engine_name from INFORMATION_SCHEMA.TABLES" - " where TABLE_SCHEMA = 'mysql'" - " AND TABLE_NAME = 'spider_xa_member';" - " if @engine_name != 'Aria' then" - " alter table mysql.spider_xa_member" - " engine=Aria transactional=1;" - " end if;" - " end if;" - " if @server_name = 'MariaDB' and" - " (" - " @server_major_version > 10 or" - " (" - " @server_major_version = 10 and" - " @server_minor_version >= 8" - " )" - " )" - " then" - " /* table for ddl pushdown */" - " create table if not exists mysql.spider_rewrite_tables(" - " table_id bigint unsigned not null auto_increment," - " db_name char(64) not null default ''," - " table_name char(64) not null default ''," - " primary key (table_id)," - " unique uk1(db_name, table_name)" - " ) engine=Aria transactional=1 default charset=utf8 collate=utf8_bin;" - " create table if not exists mysql.spider_rewrite_table_tables(" - " table_id bigint unsigned not null," - " partition_id bigint unsigned not null auto_increment," - " partition_method varchar(18) default ''," - " partition_expression varchar(64) default ''," - " subpartition_method varchar(12) default ''," - " subpartition_expression varchar(64) default ''," - " connection_str text not null default ''," - " comment_str text not null default ''," - " primary key (table_id, partition_id)," - " unique uk1(table_id, partition_method, partition_expression," - " subpartition_method, subpartition_expression)" - " ) engine=Aria transactional=1 default charset=utf8 collate=utf8_bin;" - " create table if not exists mysql.spider_rewrite_table_partitions(" - " table_id bigint unsigned not null," - " partition_id bigint unsigned not null," - " partition_ordinal_position bigint unsigned not null auto_increment," - " partition_name varchar(64) not null default ''," - " partition_description varchar(64) not null default ''," - " connection_str text not null default ''," - " comment_str text not null default ''," - " primary key (table_id, partition_id, partition_ordinal_position)," - " unique key uk1 (table_id, partition_id, partition_name)" - " ) engine=Aria transactional=1 default charset=utf8 collate=utf8_bin;" - " create table if not exists mysql.spider_rewrite_table_subpartitions(" - " table_id bigint unsigned not null," - " partition_id bigint unsigned not null," - " partition_ordinal_position bigint unsigned not null," - " subpartition_ordinal_position bigint unsigned not null" - " auto_increment," - " subpartition_name varchar(64) not null default ''," - " subpartition_description varchar(64) not null default ''," - " connection_str text not null default ''," - " comment_str text not null default ''," - " primary key (table_id, partition_id, partition_ordinal_position," - " subpartition_ordinal_position)," - " unique key uk1 (table_id, partition_id, partition_ordinal_position," - " subpartition_name)" - " ) engine=Aria transactional=1 default charset=utf8 collate=utf8_bin;" - " create table if not exists mysql.spider_rewritten_tables(" - " db_name char(64) not null," - " table_name char(64) not null," - " table_id bigint unsigned not null," - " partition_id bigint unsigned not null," - " primary key (db_name, table_name, table_id, partition_id)" - " ) engine=Aria transactional=1 default charset=utf8 collate=utf8_bin;" - " end if;" -/* - Fix for version 3.4 -*/ - " call mysql.spider_fix_one_table('spider_link_mon_servers', 'dsn'," - " 'alter table mysql.spider_link_mon_servers" - " add column dsn char(64) default null after default_group');" - " call mysql.spider_fix_one_table('spider_tables', 'dsn'," - " 'alter table mysql.spider_tables" - " add column dsn char(64) default null after default_group');" - " call mysql.spider_fix_one_table('spider_xa_failed_log', 'dsn'," - " 'alter table mysql.spider_xa_failed_log" - " add column dsn char(64) default null after default_group');" - " call mysql.spider_fix_one_table('spider_xa_member', 'dsn'," - " 'alter table mysql.spider_xa_member" - " add column dsn char(64) default null after default_group');" - " call mysql.spider_fix_one_table('spider_link_mon_servers', 'filedsn'," - " 'alter table mysql.spider_link_mon_servers" - " add column filedsn text default null after dsn');" - " call mysql.spider_fix_one_table('spider_tables', 'filedsn'," - " 'alter table mysql.spider_tables" - " add column filedsn text default null after dsn');" - " call mysql.spider_fix_one_table('spider_xa_failed_log', 'filedsn'," - " 'alter table mysql.spider_xa_failed_log" - " add column filedsn text default null after dsn');" - " call mysql.spider_fix_one_table('spider_xa_member', 'filedsn'," - " 'alter table mysql.spider_xa_member" - " add column filedsn text default null after dsn');" - " call mysql.spider_fix_one_table('spider_link_mon_servers', 'driver'," - " 'alter table mysql.spider_link_mon_servers" - " add column driver char(64) default null after filedsn');" - " call mysql.spider_fix_one_table('spider_tables', 'driver'," - " 'alter table mysql.spider_tables" - " add column driver char(64) default null after filedsn');" - " call mysql.spider_fix_one_table('spider_xa_failed_log', 'driver'," - " 'alter table mysql.spider_xa_failed_log" - " add column driver char(64) default null after filedsn');" - " call mysql.spider_fix_one_table('spider_xa_member', 'driver'," - " 'alter table mysql.spider_xa_member" - " add column driver char(64) default null after filedsn');" - "end;" - )}, - {C_STRING_WITH_LEN( - "call mysql.spider_fix_system_tables" - )}, - {C_STRING_WITH_LEN( - "drop procedure mysql.spider_fix_one_table" - )}, - {C_STRING_WITH_LEN( - "drop procedure mysql.spider_fix_system_tables" - )}, -/* - Install a plugin and UDFs -*/ - {C_STRING_WITH_LEN( - "drop procedure if exists mysql.spider_plugin_installer" - )}, - {C_STRING_WITH_LEN( - "create procedure mysql.spider_plugin_installer()" - "begin" - " set @win_plugin := IF(@@version_compile_os like 'Win%', 1, 0);" -/* - Install spider plugin -*/ -/* - " set @have_spider_i_s_plugin := 0;" - " select @have_spider_i_s_plugin := 1 from INFORMATION_SCHEMA.plugins" - " where PLUGIN_NAME = 'SPIDER';" - " set @have_spider_plugin := 0;" - " select @have_spider_plugin := 1 from mysql.plugin" - " where name = 'spider';" - " if @have_spider_i_s_plugin = 0 then" - " if @have_spider_plugin = 1 then" - " / *" - " spider plugin is present in mysql.plugin but not in" - " information_schema.plugins. Remove spider plugin entry" - " in mysql.plugin first." - " * /" - " delete from mysql.plugin where name = 'spider';" - " end if;" - " if @win_plugin = 0 then " - " install plugin spider soname 'ha_spider.so';" - " else" - " install plugin spider soname 'ha_spider.dll';" - " end if;" - " end if;" -*/ -/* - Install spider_alloc_mem plugin -*/ - " set @have_spider_i_s_alloc_mem_plugin := 0;" - " select @have_spider_i_s_alloc_mem_plugin := 1" - " from INFORMATION_SCHEMA.plugins" - " where PLUGIN_NAME = 'SPIDER_ALLOC_MEM';" - " set @have_spider_alloc_mem_plugin := 0;" - " select @have_spider_alloc_mem_plugin := 1 from mysql.plugin" - " where name = 'spider_alloc_mem';" - " if @have_spider_i_s_alloc_mem_plugin = 0 then" - " if @have_spider_alloc_mem_plugin = 1 then" - " /*" - " spider_alloc_mem plugin is present in mysql.plugin but not in" - " information_schema.plugins. Remove spider_alloc_mem plugin entry" - " in mysql.plugin first." - " */" - " delete from mysql.plugin where name = 'spider_alloc_mem';" - " end if;" - " if @win_plugin = 0 then " - " install plugin spider_alloc_mem soname 'ha_spider.so';" - " else" - " install plugin spider_alloc_mem soname 'ha_spider.dll';" - " end if;" - " end if;" -/* - Install spider_wrapper_protocols plugin -*/ - " set @have_spider_i_s_wrapper_protocols_plugin := 0;" - " select @have_spider_i_s_wrapper_protocols_plugin := 1" - " from INFORMATION_SCHEMA.plugins" - " where PLUGIN_NAME = 'SPIDER_WRAPPER_PROTOCOLS';" - " set @have_spider_wrapper_protocols_plugin := 0;" - " select @have_spider_wrapper_protocols_plugin := 1 from mysql.plugin" - " where name = 'spider_wrapper_protocols';" - " if @have_spider_i_s_wrapper_protocols_plugin = 0 then" - " if @have_spider_wrapper_protocols_plugin = 1 then" - " /*" - " spider_wrapper_protocols plugin is present in mysql.plugin but not in" - " information_schema.plugins. Remove spider_wrapper_protocols plugin entry" - " in mysql.plugin first." - " */" - " delete from mysql.plugin where name = 'spider_wrapper_protocols';" - " end if;" - " if @win_plugin = 0 then " - " install plugin spider_wrapper_protocols soname 'ha_spider.so';" - " else" - " install plugin spider_wrapper_protocols soname 'ha_spider.dll';" - " end if;" - " end if;" - " set @have_spider_direct_sql_udf := 0;" - " select @have_spider_direct_sql_udf := 1 from mysql.func" - " where name = 'spider_direct_sql';" - " if @have_spider_direct_sql_udf = 0 then" - " if @win_plugin = 0 then " - " create function spider_direct_sql returns int" - " soname 'ha_spider.so';" - " else" - " create function spider_direct_sql returns int" - " soname 'ha_spider.dll';" - " end if;" - " end if;" - " set @have_spider_bg_direct_sql_udf := 0;" - " select @have_spider_bg_direct_sql_udf := 1 from mysql.func" - " where name = 'spider_bg_direct_sql';" - " if @have_spider_bg_direct_sql_udf = 0 then" - " if @win_plugin = 0 then " - " create aggregate function spider_bg_direct_sql returns int" - " soname 'ha_spider.so';" - " else" - " create aggregate function spider_bg_direct_sql returns int" - " soname 'ha_spider.dll';" - " end if;" - " end if;" - " set @have_spider_ping_table_udf := 0;" - " select @have_spider_ping_table_udf := 1 from mysql.func" - " where name = 'spider_ping_table';" - " if @have_spider_ping_table_udf = 0 then" - " if @win_plugin = 0 then " - " create function spider_ping_table returns int" - " soname 'ha_spider.so';" - " else" - " create function spider_ping_table returns int" - " soname 'ha_spider.dll';" - " end if;" - " end if;" - " set @have_spider_copy_tables_udf := 0;" - " select @have_spider_copy_tables_udf := 1 from mysql.func" - " where name = 'spider_copy_tables';" - " if @have_spider_copy_tables_udf = 0 then" - " if @win_plugin = 0 then " - " create function spider_copy_tables returns int" - " soname 'ha_spider.so';" - " else" - " create function spider_copy_tables returns int" - " soname 'ha_spider.dll';" - " end if;" - " end if;" - " set @have_spider_flush_table_mon_cache_udf := 0;" - " select @have_spider_flush_table_mon_cache_udf := 1 from mysql.func" - " where name = 'spider_flush_table_mon_cache';" - " if @have_spider_flush_table_mon_cache_udf = 0 then" - " if @win_plugin = 0 then " - " create function spider_flush_table_mon_cache returns int" - " soname 'ha_spider.so';" - " else" - " create function spider_flush_table_mon_cache returns int" - " soname 'ha_spider.dll';" - " end if;" - " end if;" - " if @server_name = 'MariaDB' and" - " (" - " @server_major_version > 10 or" - " (" - " @server_major_version = 10 and" - " @server_minor_version >= 8" - " )" - " )" - " then" -/* - Install spider_rewrite plugin -*/ - " set @have_spider_i_s_rewrite_plugin := 0;" - " select @have_spider_i_s_rewrite_plugin := 1" - " from INFORMATION_SCHEMA.plugins" - " where PLUGIN_NAME = 'SPIDER_REWRITE';" - " set @have_spider_rewrite_plugin := 0;" - " select @have_spider_rewrite_plugin := 1 from mysql.plugin" - " where name = 'spider_rewrite';" - " if @have_spider_i_s_rewrite_plugin = 0 then" - " if @have_spider_rewrite_plugin = 1 then" - " /*" - " spider_rewrite plugin is present in mysql.plugin but not in" - " information_schema.plugins. Remove spider_rewrite plugin entry" - " in mysql.plugin first." - " */" - " delete from mysql.plugin where name = 'spider_rewrite';" - " end if;" - " if @win_plugin = 0 then " - " install plugin spider_rewrite soname 'ha_spider.so';" - " else" - " install plugin spider_rewrite soname 'ha_spider.dll';" - " end if;" - " end if;" - " set @have_spider_flush_rewrite_cache_udf := 0;" - " select @have_spider_flush_rewrite_cache_udf := 1 from mysql.func" - " where name = 'spider_flush_rewrite_cache';" - " if @have_spider_flush_rewrite_cache_udf = 0 then" - " if @win_plugin = 0 then " - " create function spider_flush_rewrite_cache returns int" - " soname 'ha_spider.so';" - " else" - " create function spider_flush_rewrite_cache returns int" - " soname 'ha_spider.dll';" - " end if;" - " end if;" - " end if;" - "end;" - )}, - {C_STRING_WITH_LEN( - "call mysql.spider_plugin_installer" - )}, - {C_STRING_WITH_LEN( - "drop procedure mysql.spider_plugin_installer" - )}, - {C_STRING_WITH_LEN("")} -}; + {C_STRING_WITH_LEN( + "create table if not exists mysql.spider_xa(" + " format_id int not null default 0," + " gtrid_length int not null default 0," + " bqual_length int not null default 0," + " data char(128) charset binary not null default ''," + " status char(8) not null default ''," + " primary key (data, format_id, gtrid_length)," + " key idx1 (status)" + ") engine=MyISAM default charset=utf8 collate=utf8_bin")}, + {C_STRING_WITH_LEN( + "create table if not exists mysql.spider_xa_member(" + " format_id int not null default 0," + " gtrid_length int not null default 0," + " bqual_length int not null default 0," + " data char(128) charset binary not null default ''," + " scheme char(64) not null default ''," + " host char(64) not null default ''," + " port char(5) not null default ''," + " socket text not null," + " username char(64) not null default ''," + " password char(64) not null default ''," + " ssl_ca text," + " ssl_capath text," + " ssl_cert text," + " ssl_cipher char(64) default null," + " ssl_key text," + " ssl_verify_server_cert tinyint not null default 0," + " default_file text," + " default_group char(64) default null," + " dsn char(64) default null," + " filedsn text default null," + " driver char(64) default null," + " key idx1 (data, format_id, gtrid_length, host)" + ") engine=MyISAM default charset=utf8 collate=utf8_bin")}, + {C_STRING_WITH_LEN( + "create table if not exists mysql.spider_xa_failed_log(" + " format_id int not null default 0," + " gtrid_length int not null default 0," + " bqual_length int not null default 0," + " data char(128) charset binary not null default ''," + " scheme char(64) not null default ''," + " host char(64) not null default ''," + " port char(5) not null default ''," + " socket text not null," + " username char(64) not null default ''," + " password char(64) not null default ''," + " ssl_ca text," + " ssl_capath text," + " ssl_cert text," + " ssl_cipher char(64) default null," + " ssl_key text," + " ssl_verify_server_cert tinyint not null default 0," + " default_file text," + " default_group char(64) default null," + " dsn char(64) default null," + " filedsn text default null," + " driver char(64) default null," + " thread_id int default null," + " status char(8) not null default ''," + " failed_time timestamp not null default current_timestamp," + " key idx1 (data, format_id, gtrid_length, host)" + ") engine=MyISAM default charset=utf8 collate=utf8_bin")}, + {C_STRING_WITH_LEN( + "create table if not exists mysql.spider_tables(" + " db_name char(64) not null default ''," + " table_name char(199) not null default ''," + " link_id int not null default 0," + " priority bigint not null default 0," + " server char(64) default null," + " scheme char(64) default null," + " host char(64) default null," + " port char(5) default null," + " socket text," + " username char(64) default null," + " password char(64) default null," + " ssl_ca text," + " ssl_capath text," + " ssl_cert text," + " ssl_cipher char(64) default null," + " ssl_key text," + " ssl_verify_server_cert tinyint not null default 0," + " monitoring_binlog_pos_at_failing tinyint not null default 0," + " default_file text," + " default_group char(64) default null," + " dsn char(64) default null," + " filedsn text default null," + " driver char(64) default null," + " tgt_db_name char(64) default null," + " tgt_table_name char(64) default null," + " link_status tinyint not null default 1," + " block_status tinyint not null default 0," + " static_link_id char(64) default null," + " primary key (db_name, table_name, link_id)," + " key idx1 (priority)," + " unique key uidx1 (db_name, table_name, static_link_id)" + ") engine=MyISAM default charset=utf8 collate=utf8_bin")}, + {C_STRING_WITH_LEN( + "create table if not exists mysql.spider_link_mon_servers(" + " db_name char(64) not null default ''," + " table_name char(199) not null default ''," + " link_id char(64) not null default ''," + " sid int unsigned not null default 0," + " server char(64) default null," + " scheme char(64) default null," + " host char(64) default null," + " port char(5) default null," + " socket text," + " username char(64) default null," + " password char(64) default null," + " ssl_ca text," + " ssl_capath text," + " ssl_cert text," + " ssl_cipher char(64) default null," + " ssl_key text," + " ssl_verify_server_cert tinyint not null default 0," + " default_file text," + " default_group char(64) default null," + " dsn char(64) default null," + " filedsn text default null," + " driver char(64) default null," + " primary key (db_name, table_name, link_id, sid)" + ") engine=MyISAM default charset=utf8 collate=utf8_bin")}, + {C_STRING_WITH_LEN( + "create table if not exists mysql.spider_link_failed_log(" + " db_name char(64) not null default ''," + " table_name char(199) not null default ''," + " link_id char(64) not null default ''," + " failed_time timestamp not null default current_timestamp" + ") engine=MyISAM default charset=utf8 collate=utf8_bin")}, + {C_STRING_WITH_LEN( + "create table if not exists mysql.spider_table_position_for_recovery(" + " db_name char(64) not null default ''," + " table_name char(199) not null default ''," + " failed_link_id int not null default 0," + " source_link_id int not null default 0," + " file text," + " position text," + " gtid text," + " primary key (db_name, table_name, failed_link_id, source_link_id)" + ") engine=MyISAM default charset=utf8 collate=utf8_bin")}, + {C_STRING_WITH_LEN( + "create table if not exists mysql.spider_table_sts(" + " db_name char(64) not null default ''," + " table_name char(199) not null default ''," + " data_file_length bigint unsigned not null default 0," + " max_data_file_length bigint unsigned not null default 0," + " index_file_length bigint unsigned not null default 0," + " records bigint unsigned not null default 0," + " mean_rec_length bigint unsigned not null default 0," + " check_time datetime not null default '0000-00-00 00:00:00'," + " create_time datetime not null default '0000-00-00 00:00:00'," + " update_time datetime not null default '0000-00-00 00:00:00'," + " checksum bigint unsigned default null," + " primary key (db_name, table_name)" + ") engine=MyISAM default charset=utf8 collate=utf8_bin")}, + {C_STRING_WITH_LEN( + "create table if not exists mysql.spider_table_crd(" + " db_name char(64) not null default ''," + " table_name char(199) not null default ''," + " key_seq int unsigned not null default 0," + " cardinality bigint not null default 0," + " primary key (db_name, table_name, key_seq)" + ") engine=MyISAM default charset=utf8 collate=utf8_bin")}, + /* + If tables already exist and their definition differ + from the latest ones, we fix them here. + */ + {C_STRING_WITH_LEN("drop procedure if exists mysql.spider_fix_one_table")}, + {C_STRING_WITH_LEN( + "drop procedure if exists mysql.spider_fix_system_tables")}, + {C_STRING_WITH_LEN( + "create procedure mysql.spider_fix_one_table" + " (tab_name char(255) charset utf8 collate utf8_bin," + " test_col_name char(255) charset utf8 collate utf8_bin," + " _sql text charset utf8 collate utf8_bin)" + "begin" + " set @col_exists := 0;" + " select 1 into @col_exists from INFORMATION_SCHEMA.COLUMNS" + " where TABLE_SCHEMA = 'mysql'" + " AND TABLE_NAME = tab_name" + " AND COLUMN_NAME = test_col_name;" + " if @col_exists = 0 then" + " select @stmt := _sql;" + " prepare sp_stmt1 from @stmt;" + " execute sp_stmt1;" + " end if;" + "end;")}, + {C_STRING_WITH_LEN( + "create procedure mysql.spider_fix_system_tables()" + "begin" + " select substring_index(substring_index(version(), '-', 2), '-', -1)" + " into @server_name;" + " if @server_name regexp '^[0-9]+$' then" + " select substring_index(substring_index(version(), '-', 3), '-', " + "-1)" + " into @server_name;" + " end if;" + " select substring_index(version(), '.', 1)" + " into @server_major_version;" + " select substring_index(substring_index(version(), '.', 2), '.', -1)" + " into @server_minor_version;" + /* + Fix for 0.5 + */ + " call mysql.spider_fix_one_table('spider_tables', 'server'," + " 'alter table mysql.spider_tables" + " add server char(64) default null," + " add scheme char(64) default null," + " add host char(64) default null," + " add port char(5) default null," + " add socket char(64) default null," + " add username char(64) default null," + " add password char(64) default null," + " add tgt_db_name char(64) default null," + " add tgt_table_name char(64) default null');" + /* + Fix for version 0.17 + */ + " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS" + " where TABLE_SCHEMA = 'mysql'" + " AND TABLE_NAME = 'spider_xa'" + " AND COLUMN_NAME = 'data';" + " if @col_type != 'binary(128)' then" + " alter table mysql.spider_xa" + " modify data binary(128) not null default '';" + " end if;" + " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS" + " where TABLE_SCHEMA = 'mysql'" + " AND TABLE_NAME = 'spider_xa_member'" + " AND COLUMN_NAME = 'data';" + " if @col_type != 'binary(128)' then" + " alter table mysql.spider_xa_member" + " modify data binary(128) not null default '';" + " end if;" + /* + Fix for version 2.7 + */ + " call mysql.spider_fix_one_table('spider_tables', 'link_id'," + " 'alter table mysql.spider_tables" + " add column link_id int not null default 0 after table_name," + " drop primary key," + " add primary key (db_name, table_name, link_id)');" + /* + Fix for version 2.8 + */ + " call mysql.spider_fix_one_table('spider_tables', 'link_status'," + " 'alter table mysql.spider_tables" + " add column link_status tinyint not null default 1');" + /* + Fix for version 2.10 + */ + " call mysql.spider_fix_one_table('spider_xa_member', 'ssl_ca'," + " 'alter table mysql.spider_xa_member" + " add column ssl_ca char(64) default null after password," + " add column ssl_capath char(64) default null after ssl_ca," + " add column ssl_cert char(64) default null after ssl_capath," + " add column ssl_cipher char(64) default null after ssl_cert," + " add column ssl_key char(64) default null after ssl_cipher," + " add column ssl_verify_server_cert tinyint not null default 0" + " after ssl_key," + " add column default_file char(64) default null" + " after ssl_verify_server_cert," + " add column default_group char(64) default null after " + "default_file');" + " call mysql.spider_fix_one_table('spider_tables', 'ssl_ca'," + " 'alter table mysql.spider_tables" + " add column ssl_ca char(64) default null after password," + " add column ssl_capath char(64) default null after ssl_ca," + " add column ssl_cert char(64) default null after ssl_capath," + " add column ssl_cipher char(64) default null after ssl_cert," + " add column ssl_key char(64) default null after ssl_cipher," + " add column ssl_verify_server_cert tinyint not null default 0" + " after ssl_key," + " add column default_file char(64) default null" + " after ssl_verify_server_cert," + " add column default_group char(64) default null after " + "default_file');" + " call mysql.spider_fix_one_table('spider_link_mon_servers', 'ssl_ca'," + " 'alter table mysql.spider_link_mon_servers" + " add column ssl_ca char(64) default null after password," + " add column ssl_capath char(64) default null after ssl_ca," + " add column ssl_cert char(64) default null after ssl_capath," + " add column ssl_cipher char(64) default null after ssl_cert," + " add column ssl_key char(64) default null after ssl_cipher," + " add column ssl_verify_server_cert tinyint not null default 0" + " after ssl_key," + " add column default_file char(64) default null" + " after ssl_verify_server_cert," + " add column default_group char(64) default null after " + "default_file');" + /* + Fix for version 2.28 + */ + " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS" + " where TABLE_SCHEMA = 'mysql'" + " AND TABLE_NAME = 'spider_link_mon_servers'" + " AND COLUMN_NAME = 'sid';" + " if @col_type != 'int(10) unsigned' then" + " alter table mysql.spider_link_mon_servers" + " modify sid int unsigned not null default 0;" + " end if;" + /* + Fix for version 3.1 + */ + " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS" + " where TABLE_SCHEMA = 'mysql'" + " AND TABLE_NAME = 'spider_xa_member'" + " AND COLUMN_NAME = 'socket';" + " if @col_type = 'char(64)' then" + " alter table mysql.spider_xa_member" + " drop primary key," + " add index idx1 (data, format_id, gtrid_length, host)," + " modify socket text not null," + " modify ssl_ca text," + " modify ssl_capath text," + " modify ssl_cert text," + " modify ssl_key text," + " modify default_file text;" + " end if;" + " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS" + " where TABLE_SCHEMA = 'mysql'" + " AND TABLE_NAME = 'spider_tables'" + " AND COLUMN_NAME = 'socket';" + " if @col_type = 'char(64)' then" + " alter table mysql.spider_tables" + " modify socket text," + " modify ssl_ca text," + " modify ssl_capath text," + " modify ssl_cert text," + " modify ssl_key text," + " modify default_file text;" + " end if;" + " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS" + " where TABLE_SCHEMA = 'mysql'" + " AND TABLE_NAME = 'spider_link_mon_servers'" + " AND COLUMN_NAME = 'socket';" + " if @col_type = 'char(64)' then" + " alter table mysql.spider_link_mon_servers" + " modify socket text," + " modify ssl_ca text," + " modify ssl_capath text," + " modify ssl_cert text," + " modify ssl_key text," + " modify default_file text;" + " end if;" + /* + Fix for version 3.3.0 + */ + " call mysql.spider_fix_one_table('spider_tables'," + " 'monitoring_binlog_pos_at_failing'," + " 'alter table mysql.spider_tables" + " add monitoring_binlog_pos_at_failing tinyint not null default 0" + " after ssl_verify_server_cert');" + /* + Fix for version 3.3.6 + */ + " call mysql.spider_fix_one_table('spider_tables', 'block_status'," + " 'alter table mysql.spider_tables" + " add column block_status tinyint not null default 0" + " after link_status');" + " call mysql.spider_fix_one_table('spider_tables', 'static_link_id'," + " 'alter table mysql.spider_tables" + " add column static_link_id char(64) default null after " + "block_status," + " add unique index uidx1 (db_name, table_name, static_link_id)');" + " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS" + " where TABLE_SCHEMA = 'mysql'" + " AND TABLE_NAME = 'spider_link_mon_servers'" + " AND COLUMN_NAME = 'link_id';" + " if @col_type != 'char(64)' then" + " alter table mysql.spider_link_mon_servers" + " modify link_id char(64) not null default '';" + " end if;" + " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS" + " where TABLE_SCHEMA = 'mysql'" + " AND TABLE_NAME = 'spider_link_failed_log'" + " AND COLUMN_NAME = 'link_id';" + " if @col_type != 'char(64)' then" + " alter table mysql.spider_link_failed_log" + " modify link_id char(64) not null default '';" + " end if;" + /* + Fix for version 3.3.10 + */ + " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS" + " where TABLE_SCHEMA = 'mysql'" + " AND TABLE_NAME = 'spider_tables'" + " AND COLUMN_NAME = 'table_name';" + " if @col_type != 'char(199)' then" + " alter table mysql.spider_tables" + " modify table_name char(199) not null default '';" + " end if;" + " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS" + " where TABLE_SCHEMA = 'mysql'" + " AND TABLE_NAME = 'spider_link_mon_servers'" + " AND COLUMN_NAME = 'table_name';" + " if @col_type != 'char(199)' then" + " alter table mysql.spider_link_mon_servers" + " modify table_name char(199) not null default '';" + " end if;" + " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS" + " where TABLE_SCHEMA = 'mysql'" + " AND TABLE_NAME = 'spider_link_failed_log'" + " AND COLUMN_NAME = 'table_name';" + " if @col_type != 'char(199)' then" + " alter table mysql.spider_link_failed_log" + " modify table_name char(199) not null default '';" + " end if;" + " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS" + " where TABLE_SCHEMA = 'mysql'" + " AND TABLE_NAME = 'spider_table_position_for_recovery'" + " AND COLUMN_NAME = 'table_name';" + " if @col_type != 'char(199)' then" + " alter table mysql.spider_table_position_for_recovery" + " modify table_name char(199) not null default '';" + " end if;" + " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS" + " where TABLE_SCHEMA = 'mysql'" + " AND TABLE_NAME = 'spider_table_sts'" + " AND COLUMN_NAME = 'table_name';" + " if @col_type != 'char(199)' then" + " alter table mysql.spider_table_sts" + " modify table_name char(199) not null default '';" + " end if;" + " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS" + " where TABLE_SCHEMA = 'mysql'" + " AND TABLE_NAME = 'spider_table_crd'" + " AND COLUMN_NAME = 'table_name';" + " if @col_type != 'char(199)' then" + " alter table mysql.spider_table_crd" + " modify table_name char(199) not null default '';" + " end if;" + /* + Fix for version 3.3.15 + */ + " call mysql.spider_fix_one_table('spider_table_sts', 'checksum'," + " 'alter table mysql.spider_table_sts" + " add column checksum bigint unsigned default null after " + "update_time');" + /* + Fix for MariaDB 10.4: Crash-Safe system tables + */ + " if @server_name = 'MariaDB' and" + " (" + " @server_major_version > 10 or" + " (" + " @server_major_version = 10 and" + " @server_minor_version >= 4" + " )" + " )" + " then" + " select ENGINE INTO @engine_name from INFORMATION_SCHEMA.TABLES" + " where TABLE_SCHEMA = 'mysql'" + " AND TABLE_NAME = 'spider_link_failed_log';" + " if @engine_name != 'Aria' then" + " alter table mysql.spider_link_failed_log" + " engine=Aria transactional=1;" + " end if;" + " select ENGINE INTO @engine_name from INFORMATION_SCHEMA.TABLES" + " where TABLE_SCHEMA = 'mysql'" + " AND TABLE_NAME = 'spider_link_mon_servers';" + " if @engine_name != 'Aria' then" + " alter table mysql.spider_link_mon_servers" + " engine=Aria transactional=1;" + " end if;" + " select ENGINE INTO @engine_name from INFORMATION_SCHEMA.TABLES" + " where TABLE_SCHEMA = 'mysql'" + " AND TABLE_NAME = 'spider_table_crd';" + " if @engine_name != 'Aria' then" + " alter table mysql.spider_table_crd" + " engine=Aria transactional=1;" + " end if;" + " select ENGINE INTO @engine_name from INFORMATION_SCHEMA.TABLES" + " where TABLE_SCHEMA = 'mysql'" + " AND TABLE_NAME = 'spider_table_position_for_recovery';" + " if @engine_name != 'Aria' then" + " alter table mysql.spider_table_position_for_recovery" + " engine=Aria transactional=1;" + " end if;" + " select ENGINE INTO @engine_name from INFORMATION_SCHEMA.TABLES" + " where TABLE_SCHEMA = 'mysql'" + " AND TABLE_NAME = 'spider_table_sts';" + " if @engine_name != 'Aria' then" + " alter table mysql.spider_table_sts" + " engine=Aria transactional=1;" + " end if;" + " select ENGINE INTO @engine_name from INFORMATION_SCHEMA.TABLES" + " where TABLE_SCHEMA = 'mysql'" + " AND TABLE_NAME = 'spider_tables';" + " if @engine_name != 'Aria' then" + " alter table mysql.spider_tables" + " engine=Aria transactional=1;" + " end if;" + " select ENGINE INTO @engine_name from INFORMATION_SCHEMA.TABLES" + " where TABLE_SCHEMA = 'mysql'" + " AND TABLE_NAME = 'spider_xa';" + " if @engine_name != 'Aria' then" + " alter table mysql.spider_xa" + " engine=Aria transactional=1;" + " end if;" + " select ENGINE INTO @engine_name from INFORMATION_SCHEMA.TABLES" + " where TABLE_SCHEMA = 'mysql'" + " AND TABLE_NAME = 'spider_xa_failed_log';" + " if @engine_name != 'Aria' then" + " alter table mysql.spider_xa_failed_log" + " engine=Aria transactional=1;" + " end if;" + " select ENGINE INTO @engine_name from INFORMATION_SCHEMA.TABLES" + " where TABLE_SCHEMA = 'mysql'" + " AND TABLE_NAME = 'spider_xa_member';" + " if @engine_name != 'Aria' then" + " alter table mysql.spider_xa_member" + " engine=Aria transactional=1;" + " end if;" + " end if;" + " if @server_name = 'MariaDB' and" + " (" + " @server_major_version > 10 or" + " (" + " @server_major_version = 10 and" + " @server_minor_version >= 8" + " )" + " )" + " then" + " /* table for ddl pushdown */" + " create table if not exists mysql.spider_rewrite_tables(" + " table_id bigint unsigned not null auto_increment," + " db_name char(64) not null default ''," + " table_name char(64) not null default ''," + " primary key (table_id)," + " unique uk1(db_name, table_name)" + " ) engine=Aria transactional=1 default charset=utf8 " + "collate=utf8_bin;" + " create table if not exists mysql.spider_rewrite_table_tables(" + " table_id bigint unsigned not null," + " partition_id bigint unsigned not null auto_increment," + " partition_method varchar(18) default ''," + " partition_expression varchar(64) default ''," + " subpartition_method varchar(12) default ''," + " subpartition_expression varchar(64) default ''," + " connection_str text not null default ''," + " comment_str text not null default ''," + " primary key (table_id, partition_id)," + " unique uk1(table_id, partition_method, partition_expression," + " subpartition_method, subpartition_expression)" + " ) engine=Aria transactional=1 default charset=utf8 " + "collate=utf8_bin;" + " create table if not exists mysql.spider_rewrite_table_partitions(" + " table_id bigint unsigned not null," + " partition_id bigint unsigned not null," + " partition_ordinal_position bigint unsigned not null " + "auto_increment," + " partition_name varchar(64) not null default ''," + " partition_description varchar(64) not null default ''," + " connection_str text not null default ''," + " comment_str text not null default ''," + " primary key (table_id, partition_id, " + "partition_ordinal_position)," + " unique key uk1 (table_id, partition_id, partition_name)" + " ) engine=Aria transactional=1 default charset=utf8 " + "collate=utf8_bin;" + " create table if not exists " + "mysql.spider_rewrite_table_subpartitions(" + " table_id bigint unsigned not null," + " partition_id bigint unsigned not null," + " partition_ordinal_position bigint unsigned not null," + " subpartition_ordinal_position bigint unsigned not null" + " auto_increment," + " subpartition_name varchar(64) not null default ''," + " subpartition_description varchar(64) not null default ''," + " connection_str text not null default ''," + " comment_str text not null default ''," + " primary key (table_id, partition_id, partition_ordinal_position," + " subpartition_ordinal_position)," + " unique key uk1 (table_id, partition_id, " + "partition_ordinal_position," + " subpartition_name)" + " ) engine=Aria transactional=1 default charset=utf8 " + "collate=utf8_bin;" + " create table if not exists mysql.spider_rewritten_tables(" + " db_name char(64) not null," + " table_name char(64) not null," + " table_id bigint unsigned not null," + " partition_id bigint unsigned not null," + " primary key (db_name, table_name, table_id, partition_id)" + " ) engine=Aria transactional=1 default charset=utf8 " + "collate=utf8_bin;" + " end if;" + /* + Fix for version 3.4 + */ + " call mysql.spider_fix_one_table('spider_link_mon_servers', 'dsn'," + " 'alter table mysql.spider_link_mon_servers" + " add column dsn char(64) default null after default_group');" + " call mysql.spider_fix_one_table('spider_tables', 'dsn'," + " 'alter table mysql.spider_tables" + " add column dsn char(64) default null after default_group');" + " call mysql.spider_fix_one_table('spider_xa_failed_log', 'dsn'," + " 'alter table mysql.spider_xa_failed_log" + " add column dsn char(64) default null after default_group');" + " call mysql.spider_fix_one_table('spider_xa_member', 'dsn'," + " 'alter table mysql.spider_xa_member" + " add column dsn char(64) default null after default_group');" + " call mysql.spider_fix_one_table('spider_link_mon_servers', " + "'filedsn'," + " 'alter table mysql.spider_link_mon_servers" + " add column filedsn text default null after dsn');" + " call mysql.spider_fix_one_table('spider_tables', 'filedsn'," + " 'alter table mysql.spider_tables" + " add column filedsn text default null after dsn');" + " call mysql.spider_fix_one_table('spider_xa_failed_log', 'filedsn'," + " 'alter table mysql.spider_xa_failed_log" + " add column filedsn text default null after dsn');" + " call mysql.spider_fix_one_table('spider_xa_member', 'filedsn'," + " 'alter table mysql.spider_xa_member" + " add column filedsn text default null after dsn');" + " call mysql.spider_fix_one_table('spider_link_mon_servers', 'driver'," + " 'alter table mysql.spider_link_mon_servers" + " add column driver char(64) default null after filedsn');" + " call mysql.spider_fix_one_table('spider_tables', 'driver'," + " 'alter table mysql.spider_tables" + " add column driver char(64) default null after filedsn');" + " call mysql.spider_fix_one_table('spider_xa_failed_log', 'driver'," + " 'alter table mysql.spider_xa_failed_log" + " add column driver char(64) default null after filedsn');" + " call mysql.spider_fix_one_table('spider_xa_member', 'driver'," + " 'alter table mysql.spider_xa_member" + " add column driver char(64) default null after filedsn');" + "end;")}, + {C_STRING_WITH_LEN("call mysql.spider_fix_system_tables")}, + {C_STRING_WITH_LEN("drop procedure mysql.spider_fix_one_table")}, + {C_STRING_WITH_LEN("drop procedure mysql.spider_fix_system_tables")}, + /* + Install a plugin and UDFs + */ + {C_STRING_WITH_LEN( + "drop procedure if exists mysql.spider_plugin_installer")}, + {C_STRING_WITH_LEN( + "create procedure mysql.spider_plugin_installer()" + "begin" + " set @win_plugin := IF(@@version_compile_os like 'Win%', 1, 0);" + /* + Install spider plugin + */ + /* + " set @have_spider_i_s_plugin := 0;" + " select @have_spider_i_s_plugin := 1 from + INFORMATION_SCHEMA.plugins" " where PLUGIN_NAME = 'SPIDER';" " set + @have_spider_plugin := 0;" " select @have_spider_plugin := 1 from + mysql.plugin" " where name = 'spider';" " if + @have_spider_i_s_plugin = 0 then" " if @have_spider_plugin = 1 + then" " / *" " spider plugin is present in mysql.plugin + but not in" " information_schema.plugins. Remove spider + plugin entry" " in mysql.plugin first." " * /" " delete + from mysql.plugin where name = 'spider';" " end if;" " if + @win_plugin = 0 then " " install plugin spider soname + 'ha_spider.so';" " else" " install plugin spider soname + 'ha_spider.dll';" " end if;" " end if;" + */ + /* + Install spider_alloc_mem plugin + */ + " set @have_spider_i_s_alloc_mem_plugin := 0;" + " select @have_spider_i_s_alloc_mem_plugin := 1" + " from INFORMATION_SCHEMA.plugins" + " where PLUGIN_NAME = 'SPIDER_ALLOC_MEM';" + " set @have_spider_alloc_mem_plugin := 0;" + " select @have_spider_alloc_mem_plugin := 1 from mysql.plugin" + " where name = 'spider_alloc_mem';" + " if @have_spider_i_s_alloc_mem_plugin = 0 then" + " if @have_spider_alloc_mem_plugin = 1 then" + " /*" + " spider_alloc_mem plugin is present in mysql.plugin but not in" + " information_schema.plugins. Remove spider_alloc_mem plugin " + "entry" + " in mysql.plugin first." + " */" + " delete from mysql.plugin where name = 'spider_alloc_mem';" + " end if;" + " if @win_plugin = 0 then " + " install plugin spider_alloc_mem soname 'ha_spider.so';" + " else" + " install plugin spider_alloc_mem soname 'ha_spider.dll';" + " end if;" + " end if;" + /* + Install spider_wrapper_protocols plugin + */ + " set @have_spider_i_s_wrapper_protocols_plugin := 0;" + " select @have_spider_i_s_wrapper_protocols_plugin := 1" + " from INFORMATION_SCHEMA.plugins" + " where PLUGIN_NAME = 'SPIDER_WRAPPER_PROTOCOLS';" + " set @have_spider_wrapper_protocols_plugin := 0;" + " select @have_spider_wrapper_protocols_plugin := 1 from mysql.plugin" + " where name = 'spider_wrapper_protocols';" + " if @have_spider_i_s_wrapper_protocols_plugin = 0 then" + " if @have_spider_wrapper_protocols_plugin = 1 then" + " /*" + " spider_wrapper_protocols plugin is present in mysql.plugin " + "but not in" + " information_schema.plugins. Remove spider_wrapper_protocols " + "plugin entry" + " in mysql.plugin first." + " */" + " delete from mysql.plugin where name = " + "'spider_wrapper_protocols';" + " end if;" + " if @win_plugin = 0 then " + " install plugin spider_wrapper_protocols soname 'ha_spider.so';" + " else" + " install plugin spider_wrapper_protocols soname 'ha_spider.dll';" + " end if;" + " end if;" + " set @have_spider_direct_sql_udf := 0;" + " select @have_spider_direct_sql_udf := 1 from mysql.func" + " where name = 'spider_direct_sql';" + " if @have_spider_direct_sql_udf = 0 then" + " if @win_plugin = 0 then " + " create function spider_direct_sql returns int" + " soname 'ha_spider.so';" + " else" + " create function spider_direct_sql returns int" + " soname 'ha_spider.dll';" + " end if;" + " end if;" + " set @have_spider_bg_direct_sql_udf := 0;" + " select @have_spider_bg_direct_sql_udf := 1 from mysql.func" + " where name = 'spider_bg_direct_sql';" + " if @have_spider_bg_direct_sql_udf = 0 then" + " if @win_plugin = 0 then " + " create aggregate function spider_bg_direct_sql returns int" + " soname 'ha_spider.so';" + " else" + " create aggregate function spider_bg_direct_sql returns int" + " soname 'ha_spider.dll';" + " end if;" + " end if;" + " set @have_spider_ping_table_udf := 0;" + " select @have_spider_ping_table_udf := 1 from mysql.func" + " where name = 'spider_ping_table';" + " if @have_spider_ping_table_udf = 0 then" + " if @win_plugin = 0 then " + " create function spider_ping_table returns int" + " soname 'ha_spider.so';" + " else" + " create function spider_ping_table returns int" + " soname 'ha_spider.dll';" + " end if;" + " end if;" + " set @have_spider_copy_tables_udf := 0;" + " select @have_spider_copy_tables_udf := 1 from mysql.func" + " where name = 'spider_copy_tables';" + " if @have_spider_copy_tables_udf = 0 then" + " if @win_plugin = 0 then " + " create function spider_copy_tables returns int" + " soname 'ha_spider.so';" + " else" + " create function spider_copy_tables returns int" + " soname 'ha_spider.dll';" + " end if;" + " end if;" + " set @have_spider_flush_table_mon_cache_udf := 0;" + " select @have_spider_flush_table_mon_cache_udf := 1 from mysql.func" + " where name = 'spider_flush_table_mon_cache';" + " if @have_spider_flush_table_mon_cache_udf = 0 then" + " if @win_plugin = 0 then " + " create function spider_flush_table_mon_cache returns int" + " soname 'ha_spider.so';" + " else" + " create function spider_flush_table_mon_cache returns int" + " soname 'ha_spider.dll';" + " end if;" + " end if;" + " if @server_name = 'MariaDB' and" + " (" + " @server_major_version > 10 or" + " (" + " @server_major_version = 10 and" + " @server_minor_version >= 8" + " )" + " )" + " then" + /* + Install spider_rewrite plugin + */ + " set @have_spider_i_s_rewrite_plugin := 0;" + " select @have_spider_i_s_rewrite_plugin := 1" + " from INFORMATION_SCHEMA.plugins" + " where PLUGIN_NAME = 'SPIDER_REWRITE';" + " set @have_spider_rewrite_plugin := 0;" + " select @have_spider_rewrite_plugin := 1 from mysql.plugin" + " where name = 'spider_rewrite';" + " if @have_spider_i_s_rewrite_plugin = 0 then" + " if @have_spider_rewrite_plugin = 1 then" + " /*" + " spider_rewrite plugin is present in mysql.plugin but not in" + " information_schema.plugins. Remove spider_rewrite plugin " + "entry" + " in mysql.plugin first." + " */" + " delete from mysql.plugin where name = 'spider_rewrite';" + " end if;" + " if @win_plugin = 0 then " + " install plugin spider_rewrite soname 'ha_spider.so';" + " else" + " install plugin spider_rewrite soname 'ha_spider.dll';" + " end if;" + " end if;" + " set @have_spider_flush_rewrite_cache_udf := 0;" + " select @have_spider_flush_rewrite_cache_udf := 1 from mysql.func" + " where name = 'spider_flush_rewrite_cache';" + " if @have_spider_flush_rewrite_cache_udf = 0 then" + " if @win_plugin = 0 then " + " create function spider_flush_rewrite_cache returns int" + " soname 'ha_spider.so';" + " else" + " create function spider_flush_rewrite_cache returns int" + " soname 'ha_spider.dll';" + " end if;" + " end if;" + " end if;" + "end;")}, + {C_STRING_WITH_LEN("call mysql.spider_plugin_installer")}, + {C_STRING_WITH_LEN("drop procedure mysql.spider_plugin_installer")}, + {C_STRING_WITH_LEN("")}}; diff --git a/storage/spider/spd_malloc.h b/storage/spider/spd_malloc.h index 9e97e039e04..714da485286 100644 --- a/storage/spider/spd_malloc.h +++ b/storage/spider/spd_malloc.h @@ -12,69 +12,49 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */ - -#define spider_free(A,B,C) spider_free_mem(A,B,C) -#define spider_malloc(A,B,C,D) \ - spider_alloc_mem(A,B,__func__,__FILE__,__LINE__,C,D) -#define spider_bulk_malloc(A,B,C,...) \ - spider_bulk_alloc_mem(A,B,__func__,__FILE__,__LINE__,C,__VA_ARGS__) -#define spider_current_trx \ - (current_thd && spider_hton_ptr->slot != HA_SLOT_UNDEF ? ((SPIDER_TRX *) thd_get_ha_data(current_thd, spider_hton_ptr)) : NULL) - -#define init_calc_mem(A) init_mem_calc(A,__func__,__FILE__,__LINE__) - -#define SPIDER_CALC_MEM_ID(name) name ## _id -#define SPIDER_CALC_MEM_FUNC(name) name ## _func_name -#define SPIDER_CALC_MEM_FILE(name) name ## _file_name -#define SPIDER_CALC_MEM_LINE(name) name ## _line_no -#define spider_alloc_calc_mem_init(A,B) \ - {SPIDER_CALC_MEM_ID(A) = B; SPIDER_CALC_MEM_FUNC(A) = __func__; SPIDER_CALC_MEM_FILE(A) = __FILE__; SPIDER_CALC_MEM_LINE(A) = __LINE__;} -#define spider_alloc_calc_mem(A,B,C) \ - spider_alloc_mem_calc(A,SPIDER_CALC_MEM_ID(B),SPIDER_CALC_MEM_FUNC(B),SPIDER_CALC_MEM_FILE(B),SPIDER_CALC_MEM_LINE(B),C) - -void spider_merge_mem_calc( - SPIDER_TRX *trx, - bool force -); - -void spider_free_mem_calc( - SPIDER_TRX *trx, - uint id, - size_t size -); - -void spider_alloc_mem_calc( - SPIDER_TRX *trx, - uint id, - const char *func_name, - const char *file_name, - ulong line_no, - size_t size -); - -void spider_free_mem( - SPIDER_TRX *trx, - void *ptr, - myf my_flags -); - -void *spider_alloc_mem( - SPIDER_TRX *trx, - uint id, - const char *func_name, - const char *file_name, - ulong line_no, - size_t size, - myf my_flags -); - -void *spider_bulk_alloc_mem( - SPIDER_TRX *trx, - uint id, - const char *func_name, - const char *file_name, - ulong line_no, - myf my_flags, - ... -); + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA +*/ + +#define spider_free(A, B, C) spider_free_mem(A, B, C) +#define spider_malloc(A, B, C, D) \ + spider_alloc_mem(A, B, __func__, __FILE__, __LINE__, C, D) +#define spider_bulk_malloc(A, B, C, ...) \ + spider_bulk_alloc_mem(A, B, __func__, __FILE__, __LINE__, C, __VA_ARGS__) +#define spider_current_trx \ + (current_thd && spider_hton_ptr->slot != HA_SLOT_UNDEF \ + ? ((SPIDER_TRX *)thd_get_ha_data(current_thd, spider_hton_ptr)) \ + : NULL) + +#define init_calc_mem(A) init_mem_calc(A, __func__, __FILE__, __LINE__) + +#define SPIDER_CALC_MEM_ID(name) name##_id +#define SPIDER_CALC_MEM_FUNC(name) name##_func_name +#define SPIDER_CALC_MEM_FILE(name) name##_file_name +#define SPIDER_CALC_MEM_LINE(name) name##_line_no +#define spider_alloc_calc_mem_init(A, B) \ + { \ + SPIDER_CALC_MEM_ID(A) = B; \ + SPIDER_CALC_MEM_FUNC(A) = __func__; \ + SPIDER_CALC_MEM_FILE(A) = __FILE__; \ + SPIDER_CALC_MEM_LINE(A) = __LINE__; \ + } +#define spider_alloc_calc_mem(A, B, C) \ + spider_alloc_mem_calc(A, SPIDER_CALC_MEM_ID(B), SPIDER_CALC_MEM_FUNC(B), \ + SPIDER_CALC_MEM_FILE(B), SPIDER_CALC_MEM_LINE(B), C) + +void spider_merge_mem_calc(SPIDER_TRX *trx, bool force); + +void spider_free_mem_calc(SPIDER_TRX *trx, uint id, size_t size); + +void spider_alloc_mem_calc(SPIDER_TRX *trx, uint id, const char *func_name, + const char *file_name, ulong line_no, size_t size); + +void spider_free_mem(SPIDER_TRX *trx, void *ptr, myf my_flags); + +void *spider_alloc_mem(SPIDER_TRX *trx, uint id, const char *func_name, + const char *file_name, ulong line_no, size_t size, + myf my_flags); + +void *spider_bulk_alloc_mem(SPIDER_TRX *trx, uint id, const char *func_name, + const char *file_name, ulong line_no, myf my_flags, + ...); diff --git a/storage/spider/spd_param.h b/storage/spider/spd_param.h index c3a79cec065..5eeba1ef242 100644 --- a/storage/spider/spd_param.h +++ b/storage/spider/spd_param.h @@ -12,431 +12,161 @@ You should have received a copy of the GNU General Public License along with this program); if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA +*/ my_bool spider_param_support_xa(); my_bool spider_param_connect_mutex(); uint spider_param_connect_error_interval(); uint spider_param_table_init_error_interval(); -int spider_param_use_table_charset( - int use_table_charset -); -uint spider_param_conn_recycle_mode( - THD *thd -); -uint spider_param_conn_recycle_strict( - THD *thd -); -bool spider_param_sync_trx_isolation( - THD *thd -); -bool spider_param_use_consistent_snapshot( - THD *thd -); -bool spider_param_internal_xa( - THD *thd -); -uint spider_param_internal_xa_snapshot( - THD *thd -); -uint spider_param_force_commit( - THD *thd -); -uint spider_param_xa_register_mode( - THD *thd -); -longlong spider_param_internal_offset( - THD *thd, - longlong internal_offset -); -longlong spider_param_internal_limit( - THD *thd, - longlong internal_limit -); -longlong spider_param_split_read( - THD *thd, - longlong split_read -); -double spider_param_semi_split_read( - THD *thd, - double semi_split_read -); -longlong spider_param_semi_split_read_limit( - THD *thd, - longlong semi_split_read_limit -); -int spider_param_init_sql_alloc_size( - THD *thd, - int init_sql_alloc_size -); -int spider_param_reset_sql_alloc( - THD *thd, - int reset_sql_alloc -); +int spider_param_use_table_charset(int use_table_charset); +uint spider_param_conn_recycle_mode(THD *thd); +uint spider_param_conn_recycle_strict(THD *thd); +bool spider_param_sync_trx_isolation(THD *thd); +bool spider_param_use_consistent_snapshot(THD *thd); +bool spider_param_internal_xa(THD *thd); +uint spider_param_internal_xa_snapshot(THD *thd); +uint spider_param_force_commit(THD *thd); +uint spider_param_xa_register_mode(THD *thd); +longlong spider_param_internal_offset(THD *thd, longlong internal_offset); +longlong spider_param_internal_limit(THD *thd, longlong internal_limit); +longlong spider_param_split_read(THD *thd, longlong split_read); +double spider_param_semi_split_read(THD *thd, double semi_split_read); +longlong spider_param_semi_split_read_limit(THD *thd, + longlong semi_split_read_limit); +int spider_param_init_sql_alloc_size(THD *thd, int init_sql_alloc_size); +int spider_param_reset_sql_alloc(THD *thd, int reset_sql_alloc); #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) -longlong spider_param_hs_result_free_size( - THD *thd, - longlong hs_result_free_size -); +longlong spider_param_hs_result_free_size(THD *thd, + longlong hs_result_free_size); #endif -int spider_param_multi_split_read( - THD *thd, - int multi_split_read -); -int spider_param_max_order( - THD *thd, - int max_order -); -int spider_param_semi_trx_isolation( - THD *thd -); -int spider_param_semi_table_lock( - THD *thd, - int semi_table_lock -); -int spider_param_semi_table_lock_connection( - THD *thd, - int semi_table_lock_connection -); -uint spider_param_block_size( - THD *thd -); -int spider_param_selupd_lock_mode( - THD *thd, - int selupd_lock_mode -); -bool spider_param_sync_autocommit( - THD *thd -); -bool spider_param_use_default_database( - THD *thd -); -int spider_param_internal_sql_log_off( - THD *thd -); -int spider_param_bulk_size( - THD *thd, - int bulk_size -); -int spider_param_bulk_update_mode( - THD *thd, - int bulk_update_mode -); -int spider_param_bulk_update_size( - THD *thd, - int bulk_update_size -); -int spider_param_buffer_size( - THD *thd, - int buffer_size -); -int spider_param_internal_optimize( - THD *thd, - int internal_optimize -); -int spider_param_internal_optimize_local( - THD *thd, - int internal_optimize_local -); -bool spider_param_use_flash_logs( - THD *thd -); -int spider_param_use_snapshot_with_flush_tables( - THD *thd -); -bool spider_param_use_all_conns_snapshot( - THD *thd -); -bool spider_param_lock_exchange( - THD *thd -); -bool spider_param_internal_unlock( - THD *thd -); -bool spider_param_semi_trx( - THD *thd -); -int spider_param_connect_timeout( - THD *thd, - int connect_timeout -); -int spider_param_net_read_timeout( - THD *thd, - int net_read_timeout -); -int spider_param_net_write_timeout( - THD *thd, - int net_write_timeout -); -int spider_param_quick_mode( - THD *thd, - int quick_mode -); -longlong spider_param_quick_page_size( - THD *thd, - longlong quick_page_size -); -longlong spider_param_quick_page_byte( - THD *thd, - longlong quick_page_byte -); -int spider_param_low_mem_read( - THD *thd, - int low_mem_read -); -int spider_param_select_column_mode( - THD *thd, - int select_column_mode -); +int spider_param_multi_split_read(THD *thd, int multi_split_read); +int spider_param_max_order(THD *thd, int max_order); +int spider_param_semi_trx_isolation(THD *thd); +int spider_param_semi_table_lock(THD *thd, int semi_table_lock); +int spider_param_semi_table_lock_connection(THD *thd, + int semi_table_lock_connection); +uint spider_param_block_size(THD *thd); +int spider_param_selupd_lock_mode(THD *thd, int selupd_lock_mode); +bool spider_param_sync_autocommit(THD *thd); +bool spider_param_use_default_database(THD *thd); +int spider_param_internal_sql_log_off(THD *thd); +int spider_param_bulk_size(THD *thd, int bulk_size); +int spider_param_bulk_update_mode(THD *thd, int bulk_update_mode); +int spider_param_bulk_update_size(THD *thd, int bulk_update_size); +int spider_param_buffer_size(THD *thd, int buffer_size); +int spider_param_internal_optimize(THD *thd, int internal_optimize); +int spider_param_internal_optimize_local(THD *thd, int internal_optimize_local); +bool spider_param_use_flash_logs(THD *thd); +int spider_param_use_snapshot_with_flush_tables(THD *thd); +bool spider_param_use_all_conns_snapshot(THD *thd); +bool spider_param_lock_exchange(THD *thd); +bool spider_param_internal_unlock(THD *thd); +bool spider_param_semi_trx(THD *thd); +int spider_param_connect_timeout(THD *thd, int connect_timeout); +int spider_param_net_read_timeout(THD *thd, int net_read_timeout); +int spider_param_net_write_timeout(THD *thd, int net_write_timeout); +int spider_param_quick_mode(THD *thd, int quick_mode); +longlong spider_param_quick_page_size(THD *thd, longlong quick_page_size); +longlong spider_param_quick_page_byte(THD *thd, longlong quick_page_byte); +int spider_param_low_mem_read(THD *thd, int low_mem_read); +int spider_param_select_column_mode(THD *thd, int select_column_mode); #ifndef WITHOUT_SPIDER_BG_SEARCH -int spider_param_bgs_mode( - THD *thd, - int bgs_mode -); -longlong spider_param_bgs_first_read( - THD *thd, - longlong bgs_first_read -); -longlong spider_param_bgs_second_read( - THD *thd, - longlong bgs_second_read -); +int spider_param_bgs_mode(THD *thd, int bgs_mode); +longlong spider_param_bgs_first_read(THD *thd, longlong bgs_first_read); +longlong spider_param_bgs_second_read(THD *thd, longlong bgs_second_read); #endif -longlong spider_param_first_read( - THD *thd, - longlong first_read -); -longlong spider_param_second_read( - THD *thd, - longlong second_read -); -double spider_param_crd_interval( - THD *thd, - double crd_interval -); -int spider_param_crd_mode( - THD *thd, - int crd_mode -); +longlong spider_param_first_read(THD *thd, longlong first_read); +longlong spider_param_second_read(THD *thd, longlong second_read); +double spider_param_crd_interval(THD *thd, double crd_interval); +int spider_param_crd_mode(THD *thd, int crd_mode); #ifdef WITH_PARTITION_STORAGE_ENGINE -int spider_param_crd_sync( - THD *thd, - int crd_sync -); +int spider_param_crd_sync(THD *thd, int crd_sync); #endif -int spider_param_crd_type( - THD *thd, - int crd_type -); -double spider_param_crd_weight( - THD *thd, - double crd_weight -); +int spider_param_crd_type(THD *thd, int crd_type); +double spider_param_crd_weight(THD *thd, double crd_weight); #ifndef WITHOUT_SPIDER_BG_SEARCH -int spider_param_crd_bg_mode( - THD *thd, - int crd_bg_mode -); +int spider_param_crd_bg_mode(THD *thd, int crd_bg_mode); #endif -double spider_param_sts_interval( - THD *thd, - double sts_interval -); -int spider_param_sts_mode( - THD *thd, - int sts_mode -); +double spider_param_sts_interval(THD *thd, double sts_interval); +int spider_param_sts_mode(THD *thd, int sts_mode); #ifdef WITH_PARTITION_STORAGE_ENGINE -int spider_param_sts_sync( - THD *thd, - int sts_sync -); +int spider_param_sts_sync(THD *thd, int sts_sync); #endif #ifndef WITHOUT_SPIDER_BG_SEARCH -int spider_param_sts_bg_mode( - THD *thd, - int sts_bg_mode -); +int spider_param_sts_bg_mode(THD *thd, int sts_bg_mode); #endif -double spider_param_ping_interval_at_trx_start( - THD *thd -); +double spider_param_ping_interval_at_trx_start(THD *thd); #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) -double spider_param_hs_ping_interval( - THD *thd -); +double spider_param_hs_ping_interval(THD *thd); #endif -int spider_param_auto_increment_mode( - THD *thd, - int auto_increment_mode -); -bool spider_param_same_server_link( - THD *thd -); -bool spider_param_local_lock_table( - THD *thd -); -int spider_param_use_pushdown_udf( - THD *thd, - int use_pushdown_udf -); -int spider_param_direct_dup_insert( - THD *thd, - int direct_dup_insert -); +int spider_param_auto_increment_mode(THD *thd, int auto_increment_mode); +bool spider_param_same_server_link(THD *thd); +bool spider_param_local_lock_table(THD *thd); +int spider_param_use_pushdown_udf(THD *thd, int use_pushdown_udf); +int spider_param_direct_dup_insert(THD *thd, int direct_dup_insert); uint spider_param_udf_table_lock_mutex_count(); uint spider_param_udf_table_mon_mutex_count(); -longlong spider_param_udf_ds_bulk_insert_rows( - THD *thd, - longlong udf_ds_bulk_insert_rows -); -int spider_param_udf_ds_table_loop_mode( - THD *thd, - int udf_ds_table_loop_mode -); +longlong spider_param_udf_ds_bulk_insert_rows(THD *thd, + longlong udf_ds_bulk_insert_rows); +int spider_param_udf_ds_table_loop_mode(THD *thd, int udf_ds_table_loop_mode); char *spider_param_remote_access_charset(); int spider_param_remote_autocommit(); char *spider_param_remote_time_zone(); int spider_param_remote_sql_log_off(); int spider_param_remote_trx_isolation(); char *spider_param_remote_default_database(); -longlong spider_param_connect_retry_interval( - THD *thd -); -int spider_param_connect_retry_count( - THD *thd -); -char *spider_param_bka_engine( - THD *thd, - char *bka_engine -); -int spider_param_bka_mode( - THD *thd, - int bka_mode -); -int spider_param_udf_ct_bulk_insert_interval( - int udf_ct_bulk_insert_interval -); -longlong spider_param_udf_ct_bulk_insert_rows( - longlong udf_ct_bulk_insert_rows -); +longlong spider_param_connect_retry_interval(THD *thd); +int spider_param_connect_retry_count(THD *thd); +char *spider_param_bka_engine(THD *thd, char *bka_engine); +int spider_param_bka_mode(THD *thd, int bka_mode); +int spider_param_udf_ct_bulk_insert_interval(int udf_ct_bulk_insert_interval); +longlong spider_param_udf_ct_bulk_insert_rows(longlong udf_ct_bulk_insert_rows); #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) -uint spider_param_hs_r_conn_recycle_mode( - THD *thd -); -uint spider_param_hs_r_conn_recycle_strict( - THD *thd -); -uint spider_param_hs_w_conn_recycle_mode( - THD *thd -); -uint spider_param_hs_w_conn_recycle_strict( - THD *thd -); -int spider_param_use_hs_read( - THD *thd, - int use_hs_read -); -int spider_param_use_hs_write( - THD *thd, - int use_hs_write -); +uint spider_param_hs_r_conn_recycle_mode(THD *thd); +uint spider_param_hs_r_conn_recycle_strict(THD *thd); +uint spider_param_hs_w_conn_recycle_mode(THD *thd); +uint spider_param_hs_w_conn_recycle_strict(THD *thd); +int spider_param_use_hs_read(THD *thd, int use_hs_read); +int spider_param_use_hs_write(THD *thd, int use_hs_write); #endif -int spider_param_use_handler( - THD *thd, - int use_handler -); -int spider_param_error_read_mode( - THD *thd, - int error_read_mode -); -int spider_param_error_write_mode( - THD *thd, - int error_write_mode -); -int spider_param_skip_default_condition( - THD *thd, - int skip_default_condition -); -int spider_param_skip_parallel_search( - THD *thd, - int skip_parallel_search -); -longlong spider_param_direct_order_limit( - THD *thd, - longlong direct_order_limit -); -int spider_param_read_only_mode( - THD *thd, - int read_only_mode -); +int spider_param_use_handler(THD *thd, int use_handler); +int spider_param_error_read_mode(THD *thd, int error_read_mode); +int spider_param_error_write_mode(THD *thd, int error_write_mode); +int spider_param_skip_default_condition(THD *thd, int skip_default_condition); +int spider_param_skip_parallel_search(THD *thd, int skip_parallel_search); +longlong spider_param_direct_order_limit(THD *thd, longlong direct_order_limit); +int spider_param_read_only_mode(THD *thd, int read_only_mode); #ifdef HA_CAN_BULK_ACCESS -int spider_param_bulk_access_free( - int bulk_access_free -); +int spider_param_bulk_access_free(int bulk_access_free); #endif #if MYSQL_VERSION_ID < 50500 #else -int spider_param_udf_ds_use_real_table( - THD *thd, - int udf_ds_use_real_table -); +int spider_param_udf_ds_use_real_table(THD *thd, int udf_ds_use_real_table); #endif my_bool spider_param_general_log(); -my_bool spider_param_index_hint_pushdown( - THD *thd -); +my_bool spider_param_index_hint_pushdown(THD *thd); uint spider_param_max_connections(); uint spider_param_conn_wait_timeout(); uint spider_param_internal_lock_wait_timeout(); uint spider_param_log_result_errors(); uint spider_param_log_result_error_with_sql(); -uint spider_param_internal_xa_id_type( - THD *thd -); -int spider_param_casual_read( - THD *thd, - int casual_read -); +uint spider_param_internal_xa_id_type(THD *thd); +int spider_param_casual_read(THD *thd, int casual_read); my_bool spider_param_dry_access(); -int spider_param_delete_all_rows_type( - THD *thd, - int delete_all_rows_type -); -int spider_param_bka_table_name_type( - THD *thd, - int bka_table_name_type -); -int spider_param_use_cond_other_than_pk_for_update( - THD *thd -); -int spider_param_store_last_sts( - int store_last_sts -); -int spider_param_store_last_crd( - int store_last_crd -); -int spider_param_load_sts_at_startup( - int load_sts_at_startup -); -int spider_param_load_crd_at_startup( - int load_crd_at_startup -); +int spider_param_delete_all_rows_type(THD *thd, int delete_all_rows_type); +int spider_param_bka_table_name_type(THD *thd, int bka_table_name_type); +int spider_param_use_cond_other_than_pk_for_update(THD *thd); +int spider_param_store_last_sts(int store_last_sts); +int spider_param_store_last_crd(int store_last_crd); +int spider_param_load_sts_at_startup(int load_sts_at_startup); +int spider_param_load_crd_at_startup(int load_crd_at_startup); #ifndef WITHOUT_SPIDER_BG_SEARCH uint spider_param_table_sts_thread_count(); uint spider_param_table_crd_thread_count(); #endif int spider_param_slave_trx_isolation(); -int spider_param_remote_wait_timeout( - THD *thd -); -int spider_param_wait_timeout( - THD *thd -); -bool spider_param_sync_sql_mode( - THD *thd -); -int spider_param_strict_group_by( - THD *thd, - int strict_group_by -); +int spider_param_remote_wait_timeout(THD *thd); +int spider_param_wait_timeout(THD *thd); +bool spider_param_sync_sql_mode(THD *thd); +int spider_param_strict_group_by(THD *thd, int strict_group_by); diff --git a/storage/spider/spd_ping_table.h b/storage/spider/spd_ping_table.h index 586ee7afde2..06c156dea68 100644 --- a/storage/spider/spd_ping_table.h +++ b/storage/spider/spd_ping_table.h @@ -11,109 +11,52 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA +*/ SPIDER_TABLE_MON_LIST *spider_get_ping_table_mon_list( - SPIDER_TRX *trx, - THD *thd, - spider_string *str, - uint conv_name_length, - int link_idx, - char *static_link_id, - uint static_link_id_length, - uint32 server_id, - bool need_lock, - int *error_num -); - -void spider_free_ping_table_mon_list( - SPIDER_TABLE_MON_LIST *table_mon_list -); + SPIDER_TRX *trx, THD *thd, spider_string *str, uint conv_name_length, + int link_idx, char *static_link_id, uint static_link_id_length, + uint32 server_id, bool need_lock, int *error_num); + +void spider_free_ping_table_mon_list(SPIDER_TABLE_MON_LIST *table_mon_list); void spider_release_ping_table_mon_list_loop( - uint mutex_hash, - SPIDER_TABLE_MON_LIST *table_mon_list -); - -int spider_release_ping_table_mon_list( - const char *conv_name, - uint conv_name_length, - int link_idx -); - -int spider_get_ping_table_mon( - THD *thd, - SPIDER_TABLE_MON_LIST *table_mon_list, - char *name, - uint name_length, - int link_idx, - uint32 server_id, - MEM_ROOT *mem_root, - bool need_lock -); + uint mutex_hash, SPIDER_TABLE_MON_LIST *table_mon_list); + +int spider_release_ping_table_mon_list(const char *conv_name, + uint conv_name_length, int link_idx); + +int spider_get_ping_table_mon(THD *thd, SPIDER_TABLE_MON_LIST *table_mon_list, + char *name, uint name_length, int link_idx, + uint32 server_id, MEM_ROOT *mem_root, + bool need_lock); SPIDER_TABLE_MON_LIST *spider_get_ping_table_tgt( - THD *thd, - char *name, - uint name_length, - int link_idx, - char *static_link_id, - uint static_link_id_length, - uint32 server_id, - spider_string *str, - bool need_lock, - int *error_num -); - -SPIDER_CONN *spider_get_ping_table_tgt_conn( - SPIDER_TRX *trx, - SPIDER_SHARE *share, - int *error_num -); - -int spider_get_ping_table_gtid_pos( - SPIDER_TRX *trx, - THD *thd, - spider_string *str, - uint conv_name_length, - int failed_link_idx, - uint32 server_id, - bool need_lock, - spider_string *tmp_str -); - -int spider_init_ping_table_mon_cache( - THD *thd, - MEM_ROOT *mem_root, - bool need_lock -); - -int spider_ping_table_cache_compare( - TABLE *table, - MEM_ROOT *mem_root -); - -void spider_ping_table_free_mon_list( - SPIDER_TABLE_MON_LIST *table_mon_list -); - -void spider_ping_table_free_mon( - SPIDER_TABLE_MON *table_mon -); + THD *thd, char *name, uint name_length, int link_idx, char *static_link_id, + uint static_link_id_length, uint32 server_id, spider_string *str, + bool need_lock, int *error_num); + +SPIDER_CONN *spider_get_ping_table_tgt_conn(SPIDER_TRX *trx, + SPIDER_SHARE *share, + int *error_num); + +int spider_get_ping_table_gtid_pos(SPIDER_TRX *trx, THD *thd, + spider_string *str, uint conv_name_length, + int failed_link_idx, uint32 server_id, + bool need_lock, spider_string *tmp_str); + +int spider_init_ping_table_mon_cache(THD *thd, MEM_ROOT *mem_root, + bool need_lock); + +int spider_ping_table_cache_compare(TABLE *table, MEM_ROOT *mem_root); + +void spider_ping_table_free_mon_list(SPIDER_TABLE_MON_LIST *table_mon_list); + +void spider_ping_table_free_mon(SPIDER_TABLE_MON *table_mon); int spider_ping_table_mon_from_table( - SPIDER_TRX *trx, - THD *thd, - SPIDER_SHARE *share, - int base_link_idx, - uint32 server_id, - char *conv_name, - uint conv_name_length, - int link_idx, - char *where_clause, - uint where_clause_length, - long monitoring_kind, - longlong monitoring_limit, - long monitoring_flag, - bool need_lock -); + SPIDER_TRX *trx, THD *thd, SPIDER_SHARE *share, int base_link_idx, + uint32 server_id, char *conv_name, uint conv_name_length, int link_idx, + char *where_clause, uint where_clause_length, long monitoring_kind, + longlong monitoring_limit, long monitoring_flag, bool need_lock); diff --git a/storage/spider/spd_sys_table.h b/storage/spider/spd_sys_table.h index 22f48b05dfb..11ac4c88d7c 100644 --- a/storage/spider/spd_sys_table.h +++ b/storage/spider/spd_sys_table.h @@ -12,7 +12,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA +*/ #define SPIDER_SYS_XA_TABLE_NAME_STR "spider_xa" #define SPIDER_SYS_XA_TABLE_NAME_LEN 9 @@ -26,7 +27,8 @@ #define SPIDER_SYS_LINK_FAILED_TABLE_NAME_LEN 22 #define SPIDER_SYS_XA_FAILED_TABLE_NAME_STR "spider_xa_failed_log" #define SPIDER_SYS_XA_FAILED_TABLE_NAME_LEN 20 -#define SPIDER_SYS_POS_FOR_RECOVERY_TABLE_NAME_STR "spider_table_position_for_recovery" +#define SPIDER_SYS_POS_FOR_RECOVERY_TABLE_NAME_STR \ + "spider_table_position_for_recovery" #define SPIDER_SYS_POS_FOR_RECOVERY_TABLE_NAME_LEN 34 #define SPIDER_SYS_TABLE_STS_TABLE_NAME_STR "spider_table_sts" #define SPIDER_SYS_TABLE_STS_TABLE_NAME_LEN 16 @@ -38,7 +40,8 @@ #define SPIDER_SYS_RW_TBL_TBLS_TABLE_NAME_LEN 27 #define SPIDER_SYS_RW_TBL_PTTS_TABLE_NAME_STR "spider_rewrite_table_partitions" #define SPIDER_SYS_RW_TBL_PTTS_TABLE_NAME_LEN 31 -#define SPIDER_SYS_RW_TBL_SPTTS_TABLE_NAME_STR "spider_rewrite_table_subpartitions" +#define SPIDER_SYS_RW_TBL_SPTTS_TABLE_NAME_STR \ + "spider_rewrite_table_subpartitions" #define SPIDER_SYS_RW_TBL_SPTTS_TABLE_NAME_LEN 34 #define SPIDER_SYS_RWN_TBLS_TABLE_NAME_STR "spider_rewritten_tables" #define SPIDER_SYS_RWN_TBLS_TABLE_NAME_LEN 23 @@ -75,9 +78,8 @@ #define SPIDER_SYS_LINK_MON_TABLE_TABLE_NAME_SIZE 64 #define SPIDER_SYS_LINK_MON_TABLE_LINK_ID_SIZE 64 -class SPIDER_MON_KEY: public SPIDER_SORT -{ -public: +class SPIDER_MON_KEY : public SPIDER_SORT { + public: char db_name[SPIDER_SYS_LINK_MON_TABLE_DB_NAME_SIZE + 1]; char table_name[SPIDER_SYS_LINK_MON_TABLE_TABLE_NAME_SIZE + 1]; char link_id[SPIDER_SYS_LINK_MON_TABLE_LINK_ID_SIZE + 1]; @@ -86,562 +88,264 @@ public: uint link_id_length; }; -TABLE *spider_open_sys_table( - THD *thd, - const char *table_name, - int table_name_length, - bool write, - SPIDER_Open_tables_backup *open_tables_backup, - bool need_lock, - int *error_num -); - -void spider_close_sys_table( - THD *thd, - TABLE *table, - SPIDER_Open_tables_backup *open_tables_backup, - bool need_lock -); +TABLE *spider_open_sys_table(THD *thd, const char *table_name, + int table_name_length, bool write, + SPIDER_Open_tables_backup *open_tables_backup, + bool need_lock, int *error_num); + +void spider_close_sys_table(THD *thd, TABLE *table, + SPIDER_Open_tables_backup *open_tables_backup, + bool need_lock); #if MYSQL_VERSION_ID < 50500 #else bool spider_sys_open_and_lock_tables( - THD *thd, - TABLE_LIST **tables, - SPIDER_Open_tables_backup *open_tables_backup -); - -TABLE *spider_sys_open_table( - THD *thd, - TABLE_LIST *tables, - SPIDER_Open_tables_backup *open_tables_backup -); - -void spider_sys_close_table( - THD *thd, - SPIDER_Open_tables_backup *open_tables_backup -); + THD *thd, TABLE_LIST **tables, + SPIDER_Open_tables_backup *open_tables_backup); + +TABLE *spider_sys_open_table(THD *thd, TABLE_LIST *tables, + SPIDER_Open_tables_backup *open_tables_backup); + +void spider_sys_close_table(THD *thd, + SPIDER_Open_tables_backup *open_tables_backup); #endif -int spider_sys_index_init( - TABLE *table, - uint idx, - bool sorted -); - -int spider_sys_index_end( - TABLE *table -); - -int spider_sys_rnd_init( - TABLE *table, - bool scan -); - -int spider_sys_rnd_end( - TABLE *table -); - -int spider_check_sys_table( - TABLE *table, - char *table_key -); - -int spider_check_sys_table_with_find_flag( - TABLE *table, - char *table_key, - enum ha_rkey_function find_flag -); - -int spider_check_sys_table_for_update_all_columns( - TABLE *table, - char *table_key -); - -int spider_get_sys_table_by_idx( - TABLE *table, - char *table_key, - const int idx, - const int col_count -); - -int spider_sys_index_next_same( - TABLE *table, - char *table_key -); - -int spider_sys_index_first( - TABLE *table, - const int idx -); - -int spider_sys_index_last( - TABLE *table, - const int idx -); - -int spider_sys_index_next( - TABLE *table -); - -void spider_store_xa_pk( - TABLE *table, - XID *xid -); - -void spider_store_xa_bqual_length( - TABLE *table, - XID *xid -); - -void spider_store_xa_status( - TABLE *table, - const char *status -); - -void spider_store_xa_member_pk( - TABLE *table, - XID *xid, - SPIDER_CONN *conn -); - -void spider_store_xa_member_info( - TABLE *table, - XID *xid, - SPIDER_CONN *conn -); - -void spider_store_tables_name( - TABLE *table, - const char *name, - const uint name_length -); - -void spider_store_db_and_table_name( - TABLE *table, - const char *db_name, - const uint db_name_length, - const char *table_name, - const uint table_name_length -); - -void spider_store_tables_link_idx( - TABLE *table, - int link_idx -); - -void spider_store_tables_link_idx_str( - TABLE *table, - const char *link_idx, - const uint link_idx_length -); - -void spider_store_tables_static_link_id( - TABLE *table, - const char *static_link_id, - const uint static_link_id_length -); - -void spider_store_tables_priority( - TABLE *table, - longlong priority -); - -void spider_store_tables_connect_info( - TABLE *table, - SPIDER_ALTER_TABLE *alter_table, - int link_idx -); - -void spider_store_tables_link_status( - TABLE *table, - long link_status -); - -void spider_store_binlog_pos_failed_link_idx( - TABLE *table, - int failed_link_idx -); - -void spider_store_binlog_pos_source_link_idx( - TABLE *table, - int source_link_idx -); - -void spider_store_binlog_pos_binlog_file( - TABLE *table, - const char *file_name, - int file_name_length, - const char *position, - int position_length, - CHARSET_INFO *binlog_pos_cs -); - -void spider_store_binlog_pos_gtid( - TABLE *table, - const char *gtid, - int gtid_length, - CHARSET_INFO *binlog_pos_cs -); - -void spider_store_table_sts_info( - TABLE *table, - ha_statistics *stat -); - -void spider_store_table_crd_info( - TABLE *table, - uint *seq, - longlong *cardinality -); - -int spider_insert_xa( - TABLE *table, - XID *xid, - const char *status -); - -int spider_insert_xa_member( - TABLE *table, - XID *xid, - SPIDER_CONN *conn -); - -int spider_insert_tables( - TABLE *table, - SPIDER_SHARE *share -); - -int spider_insert_sys_table( - TABLE *table -); - -int spider_insert_or_update_table_sts( - TABLE *table, - const char *name, - uint name_length, - ha_statistics *stat -); - -int spider_insert_or_update_table_crd( - TABLE *table, - const char *name, - uint name_length, - longlong *cardinality, - uint number_of_keys -); - -int spider_log_tables_link_failed( - TABLE *table, - char *name, - uint name_length, - int link_idx -); - -int spider_log_xa_failed( - THD *thd, - TABLE *table, - XID *xid, - SPIDER_CONN *conn, - const char *status -); - -int spider_update_xa( - TABLE *table, - XID *xid, - const char *status -); - -int spider_update_tables_name( - TABLE *table, - const char *from, - const char *to, - int *old_link_count -); - -int spider_update_tables_priority( - TABLE *table, - SPIDER_ALTER_TABLE *alter_table, - const char *name, - int *old_link_count -); - -int spider_update_tables_link_status( - TABLE *table, - char *name, - uint name_length, - int link_idx, - long link_status -); - -int spider_update_sys_table( - TABLE *table -); - -int spider_delete_xa( - TABLE *table, - XID *xid -); - -int spider_delete_xa_member( - TABLE *table, - XID *xid -); - -int spider_delete_tables( - TABLE *table, - const char *name, - int *old_link_count -); - -int spider_delete_table_sts( - TABLE *table, - const char *name, - uint name_length -); - -int spider_delete_table_crd( - TABLE *table, - const char *name, - uint name_length -); - -int spider_get_sys_xid( - TABLE *table, - XID *xid, - MEM_ROOT *mem_root -); - -int spider_get_sys_server_info( - TABLE *table, - SPIDER_SHARE *share, - int link_idx, - MEM_ROOT *mem_root -); - -int spider_check_sys_xa_status( - TABLE *table, - const char *status1, - const char *status2, - const char *status3, - const int check_error_num, - MEM_ROOT *mem_root -); - -int spider_get_sys_tables( - TABLE *table, - char **db_name, - char **table_name, - MEM_ROOT *mem_root -); - -int spider_get_sys_tables_connect_info( - TABLE *table, - SPIDER_SHARE *share, - int link_idx, - MEM_ROOT *mem_root -); +int spider_sys_index_init(TABLE *table, uint idx, bool sorted); + +int spider_sys_index_end(TABLE *table); + +int spider_sys_rnd_init(TABLE *table, bool scan); + +int spider_sys_rnd_end(TABLE *table); + +int spider_check_sys_table(TABLE *table, char *table_key); + +int spider_check_sys_table_with_find_flag(TABLE *table, char *table_key, + enum ha_rkey_function find_flag); + +int spider_check_sys_table_for_update_all_columns(TABLE *table, + char *table_key); + +int spider_get_sys_table_by_idx(TABLE *table, char *table_key, const int idx, + const int col_count); + +int spider_sys_index_next_same(TABLE *table, char *table_key); + +int spider_sys_index_first(TABLE *table, const int idx); + +int spider_sys_index_last(TABLE *table, const int idx); + +int spider_sys_index_next(TABLE *table); + +void spider_store_xa_pk(TABLE *table, XID *xid); + +void spider_store_xa_bqual_length(TABLE *table, XID *xid); + +void spider_store_xa_status(TABLE *table, const char *status); + +void spider_store_xa_member_pk(TABLE *table, XID *xid, SPIDER_CONN *conn); + +void spider_store_xa_member_info(TABLE *table, XID *xid, SPIDER_CONN *conn); + +void spider_store_tables_name(TABLE *table, const char *name, + const uint name_length); + +void spider_store_db_and_table_name(TABLE *table, const char *db_name, + const uint db_name_length, + const char *table_name, + const uint table_name_length); + +void spider_store_tables_link_idx(TABLE *table, int link_idx); + +void spider_store_tables_link_idx_str(TABLE *table, const char *link_idx, + const uint link_idx_length); + +void spider_store_tables_static_link_id(TABLE *table, + const char *static_link_id, + const uint static_link_id_length); + +void spider_store_tables_priority(TABLE *table, longlong priority); + +void spider_store_tables_connect_info(TABLE *table, + SPIDER_ALTER_TABLE *alter_table, + int link_idx); + +void spider_store_tables_link_status(TABLE *table, long link_status); + +void spider_store_binlog_pos_failed_link_idx(TABLE *table, int failed_link_idx); + +void spider_store_binlog_pos_source_link_idx(TABLE *table, int source_link_idx); + +void spider_store_binlog_pos_binlog_file(TABLE *table, const char *file_name, + int file_name_length, + const char *position, + int position_length, + CHARSET_INFO *binlog_pos_cs); + +void spider_store_binlog_pos_gtid(TABLE *table, const char *gtid, + int gtid_length, CHARSET_INFO *binlog_pos_cs); + +void spider_store_table_sts_info(TABLE *table, ha_statistics *stat); + +void spider_store_table_crd_info(TABLE *table, uint *seq, + longlong *cardinality); + +int spider_insert_xa(TABLE *table, XID *xid, const char *status); + +int spider_insert_xa_member(TABLE *table, XID *xid, SPIDER_CONN *conn); + +int spider_insert_tables(TABLE *table, SPIDER_SHARE *share); + +int spider_insert_sys_table(TABLE *table); + +int spider_insert_or_update_table_sts(TABLE *table, const char *name, + uint name_length, ha_statistics *stat); + +int spider_insert_or_update_table_crd(TABLE *table, const char *name, + uint name_length, longlong *cardinality, + uint number_of_keys); + +int spider_log_tables_link_failed(TABLE *table, char *name, uint name_length, + int link_idx); + +int spider_log_xa_failed(THD *thd, TABLE *table, XID *xid, SPIDER_CONN *conn, + const char *status); + +int spider_update_xa(TABLE *table, XID *xid, const char *status); + +int spider_update_tables_name(TABLE *table, const char *from, const char *to, + int *old_link_count); + +int spider_update_tables_priority(TABLE *table, SPIDER_ALTER_TABLE *alter_table, + const char *name, int *old_link_count); + +int spider_update_tables_link_status(TABLE *table, char *name, uint name_length, + int link_idx, long link_status); + +int spider_update_sys_table(TABLE *table); + +int spider_delete_xa(TABLE *table, XID *xid); + +int spider_delete_xa_member(TABLE *table, XID *xid); + +int spider_delete_tables(TABLE *table, const char *name, int *old_link_count); + +int spider_delete_table_sts(TABLE *table, const char *name, uint name_length); + +int spider_delete_table_crd(TABLE *table, const char *name, uint name_length); + +int spider_get_sys_xid(TABLE *table, XID *xid, MEM_ROOT *mem_root); + +int spider_get_sys_server_info(TABLE *table, SPIDER_SHARE *share, int link_idx, + MEM_ROOT *mem_root); + +int spider_check_sys_xa_status(TABLE *table, const char *status1, + const char *status2, const char *status3, + const int check_error_num, MEM_ROOT *mem_root); + +int spider_get_sys_tables(TABLE *table, char **db_name, char **table_name, + MEM_ROOT *mem_root); + +int spider_get_sys_tables_connect_info(TABLE *table, SPIDER_SHARE *share, + int link_idx, MEM_ROOT *mem_root); int spider_get_sys_tables_monitoring_binlog_pos_at_failing( - TABLE *table, - long *monitoring_binlog_pos_at_failing, - MEM_ROOT *mem_root -); - -int spider_get_sys_tables_link_status( - TABLE *table, - SPIDER_SHARE *share, - int link_idx, - MEM_ROOT *mem_root -); - -int spider_get_sys_tables_link_status( - TABLE *table, - long *link_status, - MEM_ROOT *mem_root -); - -int spider_get_sys_tables_link_idx( - TABLE *table, - int *link_idx, - MEM_ROOT *mem_root -); - -int spider_get_sys_tables_static_link_id( - TABLE *table, - char **static_link_id, - uint *static_link_id_length, - MEM_ROOT *mem_root -); - -void spider_get_sys_table_sts_info( - TABLE *table, - ha_statistics *stat -); - -void spider_get_sys_table_crd_info( - TABLE *table, - longlong *cardinality, - uint number_of_keys -); - -int spider_sys_update_tables_link_status( - THD *thd, - char *name, - uint name_length, - int link_idx, - long link_status, - bool need_lock -); - -int spider_sys_log_tables_link_failed( - THD *thd, - char *name, - uint name_length, - int link_idx, - bool need_lock -); - -int spider_sys_log_xa_failed( - THD *thd, - XID *xid, - SPIDER_CONN *conn, - const char *status, - bool need_lock -); - -int spider_get_sys_link_mon_key( - TABLE *table, - SPIDER_MON_KEY *mon_key, - MEM_ROOT *mem_root, - int *same -); - -int spider_get_sys_link_mon_server_id( - TABLE *table, - uint32 *server_id, - MEM_ROOT *mem_root -); - -int spider_get_sys_link_mon_connect_info( - TABLE *table, - SPIDER_SHARE *share, - int link_idx, - MEM_ROOT *mem_root -); - -int spider_get_link_statuses( - TABLE *table, - SPIDER_SHARE *share, - MEM_ROOT *mem_root -); - -int spider_sys_insert_or_update_table_sts( - THD *thd, - const char *name, - uint name_length, - ha_statistics *stat, - bool need_lock -); - -int spider_sys_insert_or_update_table_crd( - THD *thd, - const char *name, - uint name_length, - longlong *cardinality, - uint number_of_keys, - bool need_lock -); - -int spider_sys_delete_table_sts( - THD *thd, - const char *name, - uint name_length, - bool need_lock -); - -int spider_sys_delete_table_crd( - THD *thd, - const char *name, - uint name_length, - bool need_lock -); - -int spider_sys_get_table_sts( - THD *thd, - const char *name, - uint name_length, - ha_statistics *stat, - bool need_lock -); - -int spider_sys_get_table_crd( - THD *thd, - const char *name, - uint name_length, - longlong *cardinality, - uint number_of_keys, - bool need_lock -); - -int spider_sys_replace( - TABLE *table, - bool *modified_non_trans_table -); + TABLE *table, long *monitoring_binlog_pos_at_failing, MEM_ROOT *mem_root); + +int spider_get_sys_tables_link_status(TABLE *table, SPIDER_SHARE *share, + int link_idx, MEM_ROOT *mem_root); + +int spider_get_sys_tables_link_status(TABLE *table, long *link_status, + MEM_ROOT *mem_root); + +int spider_get_sys_tables_link_idx(TABLE *table, int *link_idx, + MEM_ROOT *mem_root); + +int spider_get_sys_tables_static_link_id(TABLE *table, char **static_link_id, + uint *static_link_id_length, + MEM_ROOT *mem_root); + +void spider_get_sys_table_sts_info(TABLE *table, ha_statistics *stat); + +void spider_get_sys_table_crd_info(TABLE *table, longlong *cardinality, + uint number_of_keys); + +int spider_sys_update_tables_link_status(THD *thd, char *name, uint name_length, + int link_idx, long link_status, + bool need_lock); + +int spider_sys_log_tables_link_failed(THD *thd, char *name, uint name_length, + int link_idx, bool need_lock); + +int spider_sys_log_xa_failed(THD *thd, XID *xid, SPIDER_CONN *conn, + const char *status, bool need_lock); + +int spider_get_sys_link_mon_key(TABLE *table, SPIDER_MON_KEY *mon_key, + MEM_ROOT *mem_root, int *same); + +int spider_get_sys_link_mon_server_id(TABLE *table, uint32 *server_id, + MEM_ROOT *mem_root); + +int spider_get_sys_link_mon_connect_info(TABLE *table, SPIDER_SHARE *share, + int link_idx, MEM_ROOT *mem_root); + +int spider_get_link_statuses(TABLE *table, SPIDER_SHARE *share, + MEM_ROOT *mem_root); + +int spider_sys_insert_or_update_table_sts(THD *thd, const char *name, + uint name_length, ha_statistics *stat, + bool need_lock); + +int spider_sys_insert_or_update_table_crd(THD *thd, const char *name, + uint name_length, + longlong *cardinality, + uint number_of_keys, bool need_lock); + +int spider_sys_delete_table_sts(THD *thd, const char *name, uint name_length, + bool need_lock); + +int spider_sys_delete_table_crd(THD *thd, const char *name, uint name_length, + bool need_lock); + +int spider_sys_get_table_sts(THD *thd, const char *name, uint name_length, + ha_statistics *stat, bool need_lock); + +int spider_sys_get_table_crd(THD *thd, const char *name, uint name_length, + longlong *cardinality, uint number_of_keys, + bool need_lock); + +int spider_sys_replace(TABLE *table, bool *modified_non_trans_table); #ifdef SPIDER_use_LEX_CSTRING_for_Field_blob_constructor -TABLE *spider_mk_sys_tmp_table( - THD *thd, - TABLE *table, - TMP_TABLE_PARAM *tmp_tbl_prm, - const LEX_CSTRING *field_name, - CHARSET_INFO *cs -); +TABLE *spider_mk_sys_tmp_table(THD *thd, TABLE *table, + TMP_TABLE_PARAM *tmp_tbl_prm, + const LEX_CSTRING *field_name, CHARSET_INFO *cs); #else -TABLE *spider_mk_sys_tmp_table( - THD *thd, - TABLE *table, - TMP_TABLE_PARAM *tmp_tbl_prm, - const char *field_name, - CHARSET_INFO *cs -); +TABLE *spider_mk_sys_tmp_table(THD *thd, TABLE *table, + TMP_TABLE_PARAM *tmp_tbl_prm, + const char *field_name, CHARSET_INFO *cs); #endif -void spider_rm_sys_tmp_table( - THD *thd, - TABLE *tmp_table, - TMP_TABLE_PARAM *tmp_tbl_prm -); +void spider_rm_sys_tmp_table(THD *thd, TABLE *tmp_table, + TMP_TABLE_PARAM *tmp_tbl_prm); #ifdef SPIDER_use_LEX_CSTRING_for_Field_blob_constructor -TABLE *spider_mk_sys_tmp_table_for_result( - THD *thd, - TABLE *table, - TMP_TABLE_PARAM *tmp_tbl_prm, - const LEX_CSTRING *field_name1, - const LEX_CSTRING *field_name2, - const LEX_CSTRING *field_name3, - CHARSET_INFO *cs -); +TABLE *spider_mk_sys_tmp_table_for_result(THD *thd, TABLE *table, + TMP_TABLE_PARAM *tmp_tbl_prm, + const LEX_CSTRING *field_name1, + const LEX_CSTRING *field_name2, + const LEX_CSTRING *field_name3, + CHARSET_INFO *cs); #else -TABLE *spider_mk_sys_tmp_table_for_result( - THD *thd, - TABLE *table, - TMP_TABLE_PARAM *tmp_tbl_prm, - const char *field_name1, - const char *field_name2, - const char *field_name3, - CHARSET_INFO *cs -); +TABLE *spider_mk_sys_tmp_table_for_result(THD *thd, TABLE *table, + TMP_TABLE_PARAM *tmp_tbl_prm, + const char *field_name1, + const char *field_name2, + const char *field_name3, + CHARSET_INFO *cs); #endif -void spider_rm_sys_tmp_table_for_result( - THD *thd, - TABLE *tmp_table, - TMP_TABLE_PARAM *tmp_tbl_prm -); +void spider_rm_sys_tmp_table_for_result(THD *thd, TABLE *tmp_table, + TMP_TABLE_PARAM *tmp_tbl_prm); -TABLE *spider_find_temporary_table( - THD *thd, - TABLE_LIST *table_list -); +TABLE *spider_find_temporary_table(THD *thd, TABLE_LIST *table_list); diff --git a/storage/spider/spd_table.h b/storage/spider/spd_table.h index 2b40fb33d5a..243cf6006c0 100644 --- a/storage/spider/spd_table.h +++ b/storage/spider/spd_table.h @@ -12,7 +12,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA +*/ /* Structure used to manage Spider parameter string parsing. Types of @@ -28,24 +29,23 @@ single or double quotes. */ -typedef struct st_spider_param_string_parse -{ - char *start_ptr; /* Pointer to the start of the parameter string */ - char *end_ptr; /* Pointer to the end of the parameter string */ - char *start_title_ptr; /* Pointer to the start of the current parameter - title */ - char *end_title_ptr; /* Pointer to the end of the current parameter - title */ - char *start_value_ptr; /* Pointer to the start of the current parameter - value */ - char *end_value_ptr; /* Pointer to the end of the current parameter - value */ - int error_num; /* Error code of the error message to print when - an error is detected */ - uint delim_title_len; /* Length of the paramater title's delimiter */ - uint delim_value_len; /* Length of the paramater value's delimiter */ - char delim_title; /* Current parameter title's delimiter character */ - char delim_value; /* Current parameter value's delimiter character */ +typedef struct st_spider_param_string_parse { + char *start_ptr; /* Pointer to the start of the parameter string */ + char *end_ptr; /* Pointer to the end of the parameter string */ + char *start_title_ptr; /* Pointer to the start of the current parameter + title */ + char *end_title_ptr; /* Pointer to the end of the current parameter + title */ + char *start_value_ptr; /* Pointer to the start of the current parameter + value */ + char *end_value_ptr; /* Pointer to the end of the current parameter + value */ + int error_num; /* Error code of the error message to print when + an error is detected */ + uint delim_title_len; /* Length of the paramater title's delimiter */ + uint delim_value_len; /* Length of the paramater value's delimiter */ + char delim_title; /* Current parameter title's delimiter character */ + char delim_value; /* Current parameter value's delimiter character */ /** Initialize the parameter string parse information. @@ -55,8 +55,7 @@ typedef struct st_spider_param_string_parse an error is detected. */ - inline void init(char *param_string, int error_code) - { + inline void init(char *param_string, int error_code) { start_ptr = param_string; end_ptr = start_ptr + strlen(start_ptr); @@ -70,8 +69,7 @@ typedef struct st_spider_param_string_parse Initialize the current parameter title. */ - inline void init_param_title() - { + inline void init_param_title() { start_title_ptr = end_title_ptr = NULL; delim_title_len = 0; delim_title = '\0'; @@ -88,14 +86,11 @@ typedef struct st_spider_param_string_parse parameter title. */ - inline void set_param_title(char *start_title, char *end_title) - { + inline void set_param_title(char *start_title, char *end_title) { start_title_ptr = start_title; end_title_ptr = end_title; - if (*start_title == '"' || - *start_title == '\'') - { + if (*start_title == '"' || *start_title == '\'') { delim_title = *start_title; if (start_title >= start_ptr && *--start_title == '\\') @@ -109,8 +104,7 @@ typedef struct st_spider_param_string_parse Initialize the current parameter value. */ - inline void init_param_value() - { + inline void init_param_value() { start_value_ptr = end_value_ptr = NULL; delim_value_len = 0; delim_value = '\0'; @@ -127,14 +121,11 @@ typedef struct st_spider_param_string_parse parameter value. */ - inline void set_param_value(char *start_value, char *end_value) - { + inline void set_param_value(char *start_value, char *end_value) { start_value_ptr = start_value--; end_value_ptr = end_value; - if (*start_value == '"' || - *start_value == '\'') - { + if (*start_value == '"' || *start_value == '\'') { delim_value = *start_value; if (*--start_value == '\\') @@ -155,23 +146,20 @@ typedef struct st_spider_param_string_parse parameter values. */ - inline int has_extra_parameter_values() - { + inline int has_extra_parameter_values() { int error_num = 0; DBUG_ENTER("has_extra_parameter_values"); - if (end_value_ptr) - { + if (end_value_ptr) { /* There is a current parameter value */ - char *end_param_ptr = end_value_ptr; + char *end_param_ptr = end_value_ptr; while (end_param_ptr < end_ptr && - (*end_param_ptr == ' ' || *end_param_ptr == '\r' || - *end_param_ptr == '\n' || *end_param_ptr == '\t')) + (*end_param_ptr == ' ' || *end_param_ptr == '\r' || + *end_param_ptr == '\n' || *end_param_ptr == '\t')) end_param_ptr++; - if (end_param_ptr < end_ptr && *end_param_ptr != '\0') - { + if (end_param_ptr < end_ptr && *end_param_ptr != '\0') { /* Extra values in parameter definition */ error_num = print_param_error(); } @@ -180,88 +168,60 @@ typedef struct st_spider_param_string_parse DBUG_RETURN(error_num); } - inline int get_next_parameter_head(char *st, char **nx) - { + inline int get_next_parameter_head(char *st, char **nx) { DBUG_ENTER("get_next_parameter_head"); char *sq = strchr(st, '\''); char *dq = strchr(st, '"'); - if (!sq && !dq) - { + if (!sq && !dq) { DBUG_RETURN(print_param_error()); } - if (dq && (!sq || sq > dq)) - { - while (1) - { + if (dq && (!sq || sq > dq)) { + while (1) { ++dq; - if (*dq == '\\') - { + if (*dq == '\\') { ++dq; - } - else if (*dq == '"') - { + } else if (*dq == '"') { break; - } - else if (*dq == '\0') - { + } else if (*dq == '\0') { DBUG_RETURN(print_param_error()); } } - while (1) - { + while (1) { ++dq; - if (*dq == '\0') - { + if (*dq == '\0') { *nx = dq; break; - } - else if (*dq == ',') - { + } else if (*dq == ',') { *dq = '\0'; *nx = dq + 1; break; - } - else if (*dq != ' ' && *dq != '\r' && *dq != '\n' && *dq != '\t') - { + } else if (*dq != ' ' && *dq != '\r' && *dq != '\n' && *dq != '\t') { DBUG_RETURN(print_param_error()); } } - } - else /* sq && (!dq || sq <= dq) */ + } else /* sq && (!dq || sq <= dq) */ { - while (1) - { + while (1) { ++sq; - if (*sq == '\\') - { + if (*sq == '\\') { ++sq; - } - else if (*sq == '\'') - { + } else if (*sq == '\'') { break; - } - else if (*sq == '\0') - { + } else if (*sq == '\0') { DBUG_RETURN(print_param_error()); } } - while (1) - { + while (1) { ++sq; - if (*sq == '\0') - { + if (*sq == '\0') { *nx = sq; break; - } - else if (*sq == ',') - { + } else if (*sq == ',') { *sq = '\0'; *nx = sq + 1; break; - } - else if (*sq != ' ' && *sq != '\r' && *sq != '\n' && *sq != '\t') - { + } else if (*sq != ' ' && *sq != '\r' && *sq != '\n' && *sq != '\t') { DBUG_RETURN(print_param_error()); } } @@ -274,27 +234,24 @@ typedef struct st_spider_param_string_parse parameter string. They were NULLed during parameter parsing. */ - inline void restore_delims() - { + inline void restore_delims() { char *end = end_title_ptr - 1; - switch (delim_title_len) - { - case 2: - *end++ = '\\'; - /* Fall through */ - case 1: - *end = delim_title; + switch (delim_title_len) { + case 2: + *end++ = '\\'; + /* Fall through */ + case 1: + *end = delim_title; } end = end_value_ptr - 1; - switch (delim_value_len) - { - case 2: - *end++ = '\\'; - /* Fall through */ - case 1: - *end = delim_value; + switch (delim_value_len) { + case 2: + *end++ = '\\'; + /* Fall through */ + case 1: + *end = delim_value; } } @@ -307,529 +264,289 @@ typedef struct st_spider_param_string_parse int print_param_error(); } SPIDER_PARAM_STRING_PARSE; -uchar *spider_tbl_get_key( - SPIDER_SHARE *share, - size_t *length, - my_bool not_used __attribute__ ((unused)) -); +uchar *spider_tbl_get_key(SPIDER_SHARE *share, size_t *length, + my_bool not_used __attribute__((unused))); -uchar *spider_wide_share_get_key( - SPIDER_WIDE_SHARE *share, - size_t *length, - my_bool not_used __attribute__ ((unused)) -); +uchar *spider_wide_share_get_key(SPIDER_WIDE_SHARE *share, size_t *length, + my_bool not_used __attribute__((unused))); #ifdef WITH_PARTITION_STORAGE_ENGINE -uchar *spider_pt_handler_share_get_key( - SPIDER_PARTITION_HANDLER_SHARE *share, - size_t *length, - my_bool not_used __attribute__ ((unused)) -); +uchar *spider_pt_handler_share_get_key(SPIDER_PARTITION_HANDLER_SHARE *share, + size_t *length, + my_bool not_used + __attribute__((unused))); #endif -uchar *spider_link_get_key( - SPIDER_LINK_FOR_HASH *link_for_hash, - size_t *length, - my_bool not_used __attribute__ ((unused)) -); +uchar *spider_link_get_key(SPIDER_LINK_FOR_HASH *link_for_hash, size_t *length, + my_bool not_used __attribute__((unused))); -uchar *spider_ha_get_key( - ha_spider *spider, - size_t *length, - my_bool not_used __attribute__ ((unused)) -); +uchar *spider_ha_get_key(ha_spider *spider, size_t *length, + my_bool not_used __attribute__((unused))); -int spider_get_server( - SPIDER_SHARE *share, - int link_idx -); +int spider_get_server(SPIDER_SHARE *share, int link_idx); -int spider_free_share_alloc( - SPIDER_SHARE *share -); +int spider_free_share_alloc(SPIDER_SHARE *share); -void spider_free_tmp_share_alloc( - SPIDER_SHARE *share -); +void spider_free_tmp_share_alloc(SPIDER_SHARE *share); char *spider_get_string_between_quote( - char *ptr, - bool alloc, - SPIDER_PARAM_STRING_PARSE *param_string_parse = NULL -); - -int spider_create_string_list( - char ***string_list, - uint **string_length_list, - uint *list_length, - char *str, - uint length, - SPIDER_PARAM_STRING_PARSE *param_string_parse -); - -int spider_create_long_list( - long **long_list, - uint *list_length, - char *str, - uint length, - long min_val, - long max_val, - SPIDER_PARAM_STRING_PARSE *param_string_parse -); - -int spider_create_longlong_list( - longlong **longlong_list, - uint *list_length, - char *str, - uint length, - longlong min_val, - longlong max_val, - SPIDER_PARAM_STRING_PARSE *param_string_parse -); - -int spider_increase_string_list( - char ***string_list, - uint **string_length_list, - uint *list_length, - uint *list_charlen, - uint link_count -); - -int spider_increase_long_list( - long **long_list, - uint *list_length, - uint link_count -); - -int spider_increase_longlong_list( - longlong **longlong_list, - uint *list_length, - uint link_count -); - -int spider_parse_connect_info( - SPIDER_SHARE *share, - TABLE_SHARE *table_share, + char *ptr, bool alloc, + SPIDER_PARAM_STRING_PARSE *param_string_parse = NULL); + +int spider_create_string_list(char ***string_list, uint **string_length_list, + uint *list_length, char *str, uint length, + SPIDER_PARAM_STRING_PARSE *param_string_parse); + +int spider_create_long_list(long **long_list, uint *list_length, char *str, + uint length, long min_val, long max_val, + SPIDER_PARAM_STRING_PARSE *param_string_parse); + +int spider_create_longlong_list(longlong **longlong_list, uint *list_length, + char *str, uint length, longlong min_val, + longlong max_val, + SPIDER_PARAM_STRING_PARSE *param_string_parse); + +int spider_increase_string_list(char ***string_list, uint **string_length_list, + uint *list_length, uint *list_charlen, + uint link_count); + +int spider_increase_long_list(long **long_list, uint *list_length, + uint link_count); + +int spider_increase_longlong_list(longlong **longlong_list, uint *list_length, + uint link_count); + +int spider_parse_connect_info(SPIDER_SHARE *share, TABLE_SHARE *table_share, #ifdef WITH_PARTITION_STORAGE_ENGINE - partition_info *part_info, + partition_info *part_info, #endif - uint create_table -); + uint create_table); -int spider_set_connect_info_default( - SPIDER_SHARE *share, +int spider_set_connect_info_default(SPIDER_SHARE *share, #ifdef WITH_PARTITION_STORAGE_ENGINE - partition_element *part_elem, - partition_element *sub_elem, + partition_element *part_elem, + partition_element *sub_elem, #endif - TABLE_SHARE *table_share -); - -int spider_set_connect_info_default_db_table( - SPIDER_SHARE *share, - const char *db_name, - uint db_name_length, - const char *table_name, - uint table_name_length -); - -int spider_set_connect_info_default_dbtable( - SPIDER_SHARE *share, - const char *dbtable_name, - int dbtable_name_length -); + TABLE_SHARE *table_share); + +int spider_set_connect_info_default_db_table(SPIDER_SHARE *share, + const char *db_name, + uint db_name_length, + const char *table_name, + uint table_name_length); + +int spider_set_connect_info_default_dbtable(SPIDER_SHARE *share, + const char *dbtable_name, + int dbtable_name_length); #ifndef DBUG_OFF -void spider_print_keys( - const char *key, - uint length -); +void spider_print_keys(const char *key, uint length); #endif -int spider_create_conn_keys( - SPIDER_SHARE *share -); +int spider_create_conn_keys(SPIDER_SHARE *share); #ifdef SPIDER_HAS_HASH_VALUE_TYPE SPIDER_LGTM_TBLHND_SHARE *spider_get_lgtm_tblhnd_share( - const char *table_name, - uint table_name_length, - my_hash_value_type hash_value, - bool locked, - bool need_to_create, - int *error_num -); + const char *table_name, uint table_name_length, + my_hash_value_type hash_value, bool locked, bool need_to_create, + int *error_num); #else -SPIDER_LGTM_TBLHND_SHARE *spider_get_lgtm_tblhnd_share( - const char *table_name, - uint table_name_length, - bool locked, - bool need_to_create, - int *error_num -); +SPIDER_LGTM_TBLHND_SHARE *spider_get_lgtm_tblhnd_share(const char *table_name, + uint table_name_length, + bool locked, + bool need_to_create, + int *error_num); #endif void spider_free_lgtm_tblhnd_share_alloc( - SPIDER_LGTM_TBLHND_SHARE *lgtm_tblhnd_share, - bool locked -); + SPIDER_LGTM_TBLHND_SHARE *lgtm_tblhnd_share, bool locked); -SPIDER_SHARE *spider_create_share( - const char *table_name, - TABLE_SHARE *table_share, +SPIDER_SHARE *spider_create_share(const char *table_name, + TABLE_SHARE *table_share, #ifdef WITH_PARTITION_STORAGE_ENGINE - partition_info *part_info, + partition_info *part_info, #endif #ifdef SPIDER_HAS_HASH_VALUE_TYPE - my_hash_value_type hash_value, + my_hash_value_type hash_value, #endif - int *error_num -); - -SPIDER_SHARE *spider_get_share( - const char *table_name, - TABLE *table, - THD *thd, - ha_spider *spider, - int *error_num -); - -void spider_free_share_resource_only( - SPIDER_SHARE *share -); - -int spider_free_share( - SPIDER_SHARE *share -); - -void spider_update_link_status_for_share( - const char *table_name, - uint table_name_length, - int link_idx, - long link_status -); - -SPIDER_WIDE_SHARE *spider_get_wide_share( - SPIDER_SHARE *share, - TABLE_SHARE *table_share, - int *error_num -); - -int spider_free_wide_share( - SPIDER_WIDE_SHARE *wide_share -); - -void spider_copy_sts_to_wide_share( - SPIDER_WIDE_SHARE *wide_share, - SPIDER_SHARE *share -); - -void spider_copy_sts_to_share( - SPIDER_SHARE *share, - SPIDER_WIDE_SHARE *wide_share -); - -void spider_copy_crd_to_wide_share( - SPIDER_WIDE_SHARE *wide_share, - SPIDER_SHARE *share, - int fields -); - -void spider_copy_crd_to_share( - SPIDER_SHARE *share, - SPIDER_WIDE_SHARE *wide_share, - int fields -); - -int spider_open_all_tables( - SPIDER_TRX *trx, - bool lock -); - -bool spider_flush_logs( - handlerton *hton -); - -handler* spider_create_handler( - handlerton *hton, - TABLE_SHARE *table, - MEM_ROOT *mem_root -); - -int spider_close_connection( - handlerton* hton, - THD* thd -); - -void spider_drop_database( - handlerton *hton, - char* path -); - -bool spider_show_status( - handlerton *hton, - THD *thd, - stat_print_fn *stat_print, - enum ha_stat_type stat_type -); - -int spider_db_done( - void *p -); - -int spider_panic( - handlerton *hton, - ha_panic_function type -); - -int spider_db_init( - void *p -); - -char *spider_create_table_name_string( - const char *table_name, - const char *part_name, - const char *sub_name -); + int *error_num); + +SPIDER_SHARE *spider_get_share(const char *table_name, TABLE *table, THD *thd, + ha_spider *spider, int *error_num); + +void spider_free_share_resource_only(SPIDER_SHARE *share); + +int spider_free_share(SPIDER_SHARE *share); + +void spider_update_link_status_for_share(const char *table_name, + uint table_name_length, int link_idx, + long link_status); + +SPIDER_WIDE_SHARE *spider_get_wide_share(SPIDER_SHARE *share, + TABLE_SHARE *table_share, + int *error_num); + +int spider_free_wide_share(SPIDER_WIDE_SHARE *wide_share); + +void spider_copy_sts_to_wide_share(SPIDER_WIDE_SHARE *wide_share, + SPIDER_SHARE *share); + +void spider_copy_sts_to_share(SPIDER_SHARE *share, + SPIDER_WIDE_SHARE *wide_share); + +void spider_copy_crd_to_wide_share(SPIDER_WIDE_SHARE *wide_share, + SPIDER_SHARE *share, int fields); + +void spider_copy_crd_to_share(SPIDER_SHARE *share, + SPIDER_WIDE_SHARE *wide_share, int fields); + +int spider_open_all_tables(SPIDER_TRX *trx, bool lock); + +bool spider_flush_logs(handlerton *hton); + +handler *spider_create_handler(handlerton *hton, TABLE_SHARE *table, + MEM_ROOT *mem_root); + +int spider_close_connection(handlerton *hton, THD *thd); + +void spider_drop_database(handlerton *hton, char *path); + +bool spider_show_status(handlerton *hton, THD *thd, stat_print_fn *stat_print, + enum ha_stat_type stat_type); + +int spider_db_done(void *p); + +int spider_panic(handlerton *hton, ha_panic_function type); + +int spider_db_init(void *p); + +char *spider_create_table_name_string(const char *table_name, + const char *part_name, + const char *sub_name); #ifdef WITH_PARTITION_STORAGE_ENGINE -void spider_get_partition_info( - const char *table_name, - uint table_name_length, - const TABLE_SHARE *table_share, - partition_info *part_info, - partition_element **part_elem, - partition_element **sub_elem -); +void spider_get_partition_info(const char *table_name, uint table_name_length, + const TABLE_SHARE *table_share, + partition_info *part_info, + partition_element **part_elem, + partition_element **sub_elem); #endif -int spider_get_sts( - SPIDER_SHARE *share, - int link_idx, - time_t tmp_time, - ha_spider *spider, - double sts_interval, - int sts_mode, +int spider_get_sts(SPIDER_SHARE *share, int link_idx, time_t tmp_time, + ha_spider *spider, double sts_interval, int sts_mode, #ifdef WITH_PARTITION_STORAGE_ENGINE - int sts_sync, + int sts_sync, #endif - int sts_sync_level, - uint flag -); - -int spider_get_crd( - SPIDER_SHARE *share, - int link_idx, - time_t tmp_time, - ha_spider *spider, - TABLE *table, - double crd_interval, - int crd_mode, + int sts_sync_level, uint flag); + +int spider_get_crd(SPIDER_SHARE *share, int link_idx, time_t tmp_time, + ha_spider *spider, TABLE *table, double crd_interval, + int crd_mode, #ifdef WITH_PARTITION_STORAGE_ENGINE - int crd_sync, + int crd_sync, #endif - int crd_sync_level -); + int crd_sync_level); -void spider_set_result_list_param( - ha_spider *spider -); +void spider_set_result_list_param(ha_spider *spider); -SPIDER_INIT_ERROR_TABLE *spider_get_init_error_table( - SPIDER_TRX *trx, - SPIDER_SHARE *share, - bool create -); +SPIDER_INIT_ERROR_TABLE *spider_get_init_error_table(SPIDER_TRX *trx, + SPIDER_SHARE *share, + bool create); -void spider_delete_init_error_table( - const char *name -); +void spider_delete_init_error_table(const char *name); -bool spider_check_pk_update( - TABLE *table -); +bool spider_check_pk_update(TABLE *table); #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS -bool spider_check_hs_pk_update( - ha_spider *spider, - key_range *key -); +bool spider_check_hs_pk_update(ha_spider *spider, key_range *key); #endif #endif -void spider_set_tmp_share_pointer( - SPIDER_SHARE *tmp_share, - char **tmp_connect_info, - uint *tmp_connect_info_length, - long *tmp_long, - longlong *tmp_longlong -); - -int spider_create_tmp_dbton_share( - SPIDER_SHARE *tmp_share -); - -void spider_free_tmp_dbton_share( - SPIDER_SHARE *tmp_share -); - -int spider_create_tmp_dbton_handler( - ha_spider *tmp_spider -); - -void spider_free_tmp_dbton_handler( - ha_spider *tmp_spider -); - -TABLE_LIST *spider_get_parent_table_list( - ha_spider *spider -); -List<Index_hint> *spider_get_index_hints( - ha_spider *spider - ); - -st_select_lex *spider_get_select_lex( - ha_spider *spider -); - -void spider_get_select_limit_from_select_lex( - st_select_lex *select_lex, - longlong *select_limit, - longlong *offset_limit -); - -void spider_get_select_limit( - ha_spider *spider, - st_select_lex **select_lex, - longlong *select_limit, - longlong *offset_limit -); - -longlong spider_split_read_param( - ha_spider *spider -); - -longlong spider_bg_split_read_param( - ha_spider *spider -); - -void spider_first_split_read_param( - ha_spider *spider -); - -void spider_next_split_read_param( - ha_spider *spider -); - -bool spider_check_direct_order_limit( - ha_spider *spider -); +void spider_set_tmp_share_pointer(SPIDER_SHARE *tmp_share, + char **tmp_connect_info, + uint *tmp_connect_info_length, long *tmp_long, + longlong *tmp_longlong); + +int spider_create_tmp_dbton_share(SPIDER_SHARE *tmp_share); + +void spider_free_tmp_dbton_share(SPIDER_SHARE *tmp_share); + +int spider_create_tmp_dbton_handler(ha_spider *tmp_spider); + +void spider_free_tmp_dbton_handler(ha_spider *tmp_spider); + +TABLE_LIST *spider_get_parent_table_list(ha_spider *spider); +List<Index_hint> *spider_get_index_hints(ha_spider *spider); + +st_select_lex *spider_get_select_lex(ha_spider *spider); + +void spider_get_select_limit_from_select_lex(st_select_lex *select_lex, + longlong *select_limit, + longlong *offset_limit); + +void spider_get_select_limit(ha_spider *spider, st_select_lex **select_lex, + longlong *select_limit, longlong *offset_limit); + +longlong spider_split_read_param(ha_spider *spider); + +longlong spider_bg_split_read_param(ha_spider *spider); + +void spider_first_split_read_param(ha_spider *spider); + +void spider_next_split_read_param(ha_spider *spider); + +bool spider_check_direct_order_limit(ha_spider *spider); #ifdef HANDLER_HAS_DIRECT_AGGREGATE -bool spider_all_part_in_order( - ORDER *order, - TABLE *table -); - -Field *spider_field_exchange( - handler *handler, - Field *field -); +bool spider_all_part_in_order(ORDER *order, TABLE *table); + +Field *spider_field_exchange(handler *handler, Field *field); #endif -int spider_set_direct_limit_offset( - ha_spider *spider -); +int spider_set_direct_limit_offset(ha_spider *spider); -bool spider_check_index_merge( - TABLE *table, - st_select_lex *select_lex -); +bool spider_check_index_merge(TABLE *table, st_select_lex *select_lex); -int spider_compare_for_sort( - SPIDER_SORT *a, - SPIDER_SORT *b -); +int spider_compare_for_sort(SPIDER_SORT *a, SPIDER_SORT *b); -ulong spider_calc_for_sort( - uint count, - ... -); +ulong spider_calc_for_sort(uint count, ...); -double spider_rand( - uint32 rand_source -); +double spider_rand(uint32 rand_source); #ifdef SPIDER_HAS_DISCOVER_TABLE_STRUCTURE -int spider_discover_table_structure_internal( - SPIDER_TRX *trx, - SPIDER_SHARE *spider_share, - spider_string *str -); - -int spider_discover_table_structure( - handlerton *hton, - THD* thd, - TABLE_SHARE *share, - HA_CREATE_INFO *info -); +int spider_discover_table_structure_internal(SPIDER_TRX *trx, + SPIDER_SHARE *spider_share, + spider_string *str); + +int spider_discover_table_structure(handlerton *hton, THD *thd, + TABLE_SHARE *share, HA_CREATE_INFO *info); #endif #ifndef WITHOUT_SPIDER_BG_SEARCH -int spider_create_spider_object_for_share( - SPIDER_TRX *trx, - SPIDER_SHARE *share, - ha_spider **spider -); - -void spider_free_spider_object_for_share( - ha_spider **spider -); - -int spider_create_sts_threads( - SPIDER_THREAD *spider_thread -); - -void spider_free_sts_threads( - SPIDER_THREAD *spider_thread -); - -int spider_create_crd_threads( - SPIDER_THREAD *spider_thread -); - -void spider_free_crd_threads( - SPIDER_THREAD *spider_thread -); - -void *spider_table_bg_sts_action( - void *arg -); - -void *spider_table_bg_crd_action( - void *arg -); - -void spider_table_add_share_to_sts_thread( - SPIDER_SHARE *share -); - -void spider_table_add_share_to_crd_thread( - SPIDER_SHARE *share -); - -void spider_table_remove_share_from_sts_thread( - SPIDER_SHARE *share -); - -void spider_table_remove_share_from_crd_thread( - SPIDER_SHARE *share -); +int spider_create_spider_object_for_share(SPIDER_TRX *trx, SPIDER_SHARE *share, + ha_spider **spider); + +void spider_free_spider_object_for_share(ha_spider **spider); + +int spider_create_sts_threads(SPIDER_THREAD *spider_thread); + +void spider_free_sts_threads(SPIDER_THREAD *spider_thread); + +int spider_create_crd_threads(SPIDER_THREAD *spider_thread); + +void spider_free_crd_threads(SPIDER_THREAD *spider_thread); + +void *spider_table_bg_sts_action(void *arg); + +void *spider_table_bg_crd_action(void *arg); + +void spider_table_add_share_to_sts_thread(SPIDER_SHARE *share); + +void spider_table_add_share_to_crd_thread(SPIDER_SHARE *share); + +void spider_table_remove_share_from_sts_thread(SPIDER_SHARE *share); + +void spider_table_remove_share_from_crd_thread(SPIDER_SHARE *share); #endif -uchar *spider_duplicate_char( - uchar *dst, - uchar esc, - uchar *src, - uint src_lgt -); +uchar *spider_duplicate_char(uchar *dst, uchar esc, uchar *src, uint src_lgt); diff --git a/storage/spider/spd_trx.h b/storage/spider/spd_trx.h index 3bf93aada1a..c36bf7b1362 100644 --- a/storage/spider/spd_trx.h +++ b/storage/spider/spd_trx.h @@ -12,263 +12,119 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */ - -int spider_free_trx_conn( - SPIDER_TRX *trx, - bool trx_free -); - -int spider_free_trx_another_conn( - SPIDER_TRX *trx, - bool lock -); - -int spider_trx_another_lock_tables( - SPIDER_TRX *trx -); - -int spider_trx_another_flush_tables( - SPIDER_TRX *trx -); - -int spider_trx_all_flush_tables( - SPIDER_TRX *trx -); - -int spider_trx_all_unlock_tables( - SPIDER_TRX *trx -); - -int spider_trx_all_start_trx( - SPIDER_TRX *trx -); - -int spider_trx_all_flush_logs( - SPIDER_TRX *trx -); - -int spider_free_trx_alloc( - SPIDER_TRX *trx -); - -void spider_free_trx_alter_table_alloc( - SPIDER_TRX *trx, - SPIDER_ALTER_TABLE *alter_table -); - -int spider_free_trx_alter_table( - SPIDER_TRX *trx -); - -int spider_create_trx_alter_table( - SPIDER_TRX *trx, - SPIDER_SHARE *share, - bool now_create -); - -bool spider_cmp_trx_alter_table( - SPIDER_ALTER_TABLE *cmp1, - SPIDER_ALTER_TABLE *cmp2 -); - -SPIDER_TRX *spider_get_trx( - THD *thd, - bool regist_allocated_thds, - int *error_num -); - -int spider_free_trx( - SPIDER_TRX *trx, - bool need_lock, - bool reset_ha_data= true -); - -int spider_check_and_set_trx_isolation( - SPIDER_CONN *conn, - int *need_mon -); - -int spider_check_and_set_autocommit( - THD *thd, - SPIDER_CONN *conn, - int *need_mon -); - -int spider_check_and_set_sql_log_off( - THD *thd, - SPIDER_CONN *conn, - int *need_mon -); - -int spider_check_and_set_wait_timeout( - THD *thd, - SPIDER_CONN *conn, - int *need_mon -); - -int spider_check_and_set_sql_mode( - THD *thd, - SPIDER_CONN *conn, - int *need_mon -); - -int spider_check_and_set_time_zone( - THD *thd, - SPIDER_CONN *conn, - int *need_mon -); - -int spider_start_internal_consistent_snapshot( - SPIDER_TRX *trx, - SPIDER_CONN *conn, - int *need_mon -); - -int spider_internal_start_trx( - ha_spider *spider -); - -int spider_internal_start_trx_for_connection( - ha_spider *spider, - SPIDER_CONN *conn, - int link_idx -); - -int spider_internal_xa_commit( - THD* thd, - SPIDER_TRX *trx, - XID* xid, - TABLE *table_xa, - TABLE *table_xa_member -); - -int spider_internal_xa_rollback( - THD* thd, - SPIDER_TRX *trx -); - -int spider_internal_xa_prepare( - THD* thd, - SPIDER_TRX *trx, - TABLE *table_xa, - TABLE *table_xa_member, - bool internal_xa -); - -int spider_internal_xa_recover( - THD* thd, - XID* xid_list, - uint len -); - -int spider_initinal_xa_recover( - XID* xid_list, - uint len -); - -int spider_internal_xa_commit_by_xid( - THD* thd, - SPIDER_TRX *trx, - XID* xid -); - -int spider_internal_xa_rollback_by_xid( - THD* thd, - SPIDER_TRX *trx, - XID* xid -); - -int spider_start_consistent_snapshot( - handlerton *hton, - THD* thd -); - -int spider_commit( - handlerton *hton, - THD *thd, - bool all -); - -int spider_rollback( - handlerton *hton, - THD *thd, - bool all -); - -int spider_xa_prepare( - handlerton *hton, - THD* thd, - bool all -); - -int spider_xa_recover( - handlerton *hton, - XID* xid_list, - uint len -); - -int spider_xa_commit_by_xid( - handlerton *hton, - XID* xid -); - -int spider_xa_rollback_by_xid( - handlerton *hton, - XID* xid -); - -void spider_copy_table_free_trx_conn( - SPIDER_TRX *trx -); - -int spider_end_trx( - SPIDER_TRX *trx, - SPIDER_CONN *conn -); - -int spider_check_trx_and_get_conn( - THD *thd, - ha_spider *spider, - bool use_conn_kind -); + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA +*/ + +int spider_free_trx_conn(SPIDER_TRX *trx, bool trx_free); + +int spider_free_trx_another_conn(SPIDER_TRX *trx, bool lock); + +int spider_trx_another_lock_tables(SPIDER_TRX *trx); + +int spider_trx_another_flush_tables(SPIDER_TRX *trx); + +int spider_trx_all_flush_tables(SPIDER_TRX *trx); + +int spider_trx_all_unlock_tables(SPIDER_TRX *trx); + +int spider_trx_all_start_trx(SPIDER_TRX *trx); + +int spider_trx_all_flush_logs(SPIDER_TRX *trx); + +int spider_free_trx_alloc(SPIDER_TRX *trx); + +void spider_free_trx_alter_table_alloc(SPIDER_TRX *trx, + SPIDER_ALTER_TABLE *alter_table); + +int spider_free_trx_alter_table(SPIDER_TRX *trx); + +int spider_create_trx_alter_table(SPIDER_TRX *trx, SPIDER_SHARE *share, + bool now_create); + +bool spider_cmp_trx_alter_table(SPIDER_ALTER_TABLE *cmp1, + SPIDER_ALTER_TABLE *cmp2); + +SPIDER_TRX *spider_get_trx(THD *thd, bool regist_allocated_thds, + int *error_num); + +int spider_free_trx(SPIDER_TRX *trx, bool need_lock, bool reset_ha_data = true); + +int spider_check_and_set_trx_isolation(SPIDER_CONN *conn, int *need_mon); + +int spider_check_and_set_autocommit(THD *thd, SPIDER_CONN *conn, int *need_mon); + +int spider_check_and_set_sql_log_off(THD *thd, SPIDER_CONN *conn, + int *need_mon); + +int spider_check_and_set_wait_timeout(THD *thd, SPIDER_CONN *conn, + int *need_mon); + +int spider_check_and_set_sql_mode(THD *thd, SPIDER_CONN *conn, int *need_mon); + +int spider_check_and_set_time_zone(THD *thd, SPIDER_CONN *conn, int *need_mon); + +int spider_start_internal_consistent_snapshot(SPIDER_TRX *trx, + SPIDER_CONN *conn, int *need_mon); + +int spider_internal_start_trx(ha_spider *spider); + +int spider_internal_start_trx_for_connection(ha_spider *spider, + SPIDER_CONN *conn, int link_idx); + +int spider_internal_xa_commit(THD *thd, SPIDER_TRX *trx, XID *xid, + TABLE *table_xa, TABLE *table_xa_member); + +int spider_internal_xa_rollback(THD *thd, SPIDER_TRX *trx); + +int spider_internal_xa_prepare(THD *thd, SPIDER_TRX *trx, TABLE *table_xa, + TABLE *table_xa_member, bool internal_xa); + +int spider_internal_xa_recover(THD *thd, XID *xid_list, uint len); + +int spider_initinal_xa_recover(XID *xid_list, uint len); + +int spider_internal_xa_commit_by_xid(THD *thd, SPIDER_TRX *trx, XID *xid); + +int spider_internal_xa_rollback_by_xid(THD *thd, SPIDER_TRX *trx, XID *xid); + +int spider_start_consistent_snapshot(handlerton *hton, THD *thd); + +int spider_commit(handlerton *hton, THD *thd, bool all); + +int spider_rollback(handlerton *hton, THD *thd, bool all); + +int spider_xa_prepare(handlerton *hton, THD *thd, bool all); + +int spider_xa_recover(handlerton *hton, XID *xid_list, uint len); + +int spider_xa_commit_by_xid(handlerton *hton, XID *xid); + +int spider_xa_rollback_by_xid(handlerton *hton, XID *xid); + +void spider_copy_table_free_trx_conn(SPIDER_TRX *trx); + +int spider_end_trx(SPIDER_TRX *trx, SPIDER_CONN *conn); + +int spider_check_trx_and_get_conn(THD *thd, ha_spider *spider, + bool use_conn_kind); THD *spider_create_tmp_thd(); -void spider_free_tmp_thd( - THD *thd -); +void spider_free_tmp_thd(THD *thd); -int spider_create_trx_ha( - SPIDER_TRX *trx, - ha_spider *spider, - SPIDER_TRX_HA *trx_ha -); +int spider_create_trx_ha(SPIDER_TRX *trx, ha_spider *spider, + SPIDER_TRX_HA *trx_ha); -SPIDER_TRX_HA *spider_check_trx_ha( - SPIDER_TRX *trx, - ha_spider *spider -); +SPIDER_TRX_HA *spider_check_trx_ha(SPIDER_TRX *trx, ha_spider *spider); -void spider_free_trx_ha( - SPIDER_TRX *trx -); +void spider_free_trx_ha(SPIDER_TRX *trx); -void spider_reuse_trx_ha( - SPIDER_TRX *trx -); +void spider_reuse_trx_ha(SPIDER_TRX *trx); -void spider_trx_set_link_idx_for_all( - ha_spider *spider -); +void spider_trx_set_link_idx_for_all(ha_spider *spider); -int spider_trx_check_link_idx_failed( - ha_spider *spider -); +int spider_trx_check_link_idx_failed(ha_spider *spider); #ifdef HA_CAN_BULK_ACCESS -void spider_trx_add_bulk_access_conn( - SPIDER_TRX *trx, - SPIDER_CONN *conn -); +void spider_trx_add_bulk_access_conn(SPIDER_TRX *trx, SPIDER_CONN *conn); #endif diff --git a/storage/spider/spd_udf.h b/storage/spider/spd_udf.h index d00a6151894..6e792ae2dec 100644 --- a/storage/spider/spd_udf.h +++ b/storage/spider/spd_udf.h @@ -11,69 +11,37 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA +*/ -long long spider_direct_sql_body( - UDF_INIT *initid, - UDF_ARGS *args, - char *is_null, - char *error, - my_bool bg -); +long long spider_direct_sql_body(UDF_INIT *initid, UDF_ARGS *args, + char *is_null, char *error, my_bool bg); -my_bool spider_direct_sql_init_body( - UDF_INIT *initid, - UDF_ARGS *args, - char *message, - my_bool bg -); +my_bool spider_direct_sql_init_body(UDF_INIT *initid, UDF_ARGS *args, + char *message, my_bool bg); -void spider_direct_sql_deinit_body( - UDF_INIT *initid -); +void spider_direct_sql_deinit_body(UDF_INIT *initid); #ifndef WITHOUT_SPIDER_BG_SEARCH -void spider_direct_sql_bg_start( - UDF_INIT *initid -); +void spider_direct_sql_bg_start(UDF_INIT *initid); -long long spider_direct_sql_bg_end( - UDF_INIT *initid -); +long long spider_direct_sql_bg_end(UDF_INIT *initid); #endif -long long spider_ping_table_body( - UDF_INIT *initid, - UDF_ARGS *args, - char *is_null, - char *error -); +long long spider_ping_table_body(UDF_INIT *initid, UDF_ARGS *args, + char *is_null, char *error); -my_bool spider_ping_table_init_body( - UDF_INIT *initid, - UDF_ARGS *args, - char *message -); +my_bool spider_ping_table_init_body(UDF_INIT *initid, UDF_ARGS *args, + char *message); -void spider_ping_table_deinit_body( - UDF_INIT *initid -); +void spider_ping_table_deinit_body(UDF_INIT *initid); long long spider_flush_table_mon_cache_body(); -long long spider_copy_tables_body( - UDF_INIT *initid, - UDF_ARGS *args, - char *is_null, - char *error -); +long long spider_copy_tables_body(UDF_INIT *initid, UDF_ARGS *args, + char *is_null, char *error); -my_bool spider_copy_tables_init_body( - UDF_INIT *initid, - UDF_ARGS *args, - char *message -); +my_bool spider_copy_tables_init_body(UDF_INIT *initid, UDF_ARGS *args, + char *message); -void spider_copy_tables_deinit_body( - UDF_INIT *initid -); +void spider_copy_tables_deinit_body(UDF_INIT *initid); |