diff options
Diffstat (limited to 'storage/spider/spd_sys_table.h')
-rw-r--r-- | storage/spider/spd_sys_table.h | 644 |
1 files changed, 644 insertions, 0 deletions
diff --git a/storage/spider/spd_sys_table.h b/storage/spider/spd_sys_table.h new file mode 100644 index 00000000..36f72375 --- /dev/null +++ b/storage/spider/spd_sys_table.h @@ -0,0 +1,644 @@ +/* Copyright (C) 2008-2019 Kentoku Shiba + Copyright (C) 2019 MariaDB corp + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + 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_SYS_XA_TABLE_NAME_STR "spider_xa" +#define SPIDER_SYS_XA_TABLE_NAME_LEN 9 +#define SPIDER_SYS_XA_MEMBER_TABLE_NAME_STR "spider_xa_member" +#define SPIDER_SYS_XA_MEMBER_TABLE_NAME_LEN 16 +#define SPIDER_SYS_TABLES_TABLE_NAME_STR "spider_tables" +#define SPIDER_SYS_TABLES_TABLE_NAME_LEN 13 +#define SPIDER_SYS_LINK_MON_TABLE_NAME_STR "spider_link_mon_servers" +#define SPIDER_SYS_LINK_MON_TABLE_NAME_LEN 23 +#define SPIDER_SYS_LINK_FAILED_TABLE_NAME_STR "spider_link_failed_log" +#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_LEN 34 +#define SPIDER_SYS_TABLE_STS_TABLE_NAME_STR "spider_table_sts" +#define SPIDER_SYS_TABLE_STS_TABLE_NAME_LEN 16 +#define SPIDER_SYS_TABLE_CRD_TABLE_NAME_STR "spider_table_crd" +#define SPIDER_SYS_TABLE_CRD_TABLE_NAME_LEN 16 +#define SPIDER_SYS_RW_TBLS_TABLE_NAME_STR "spider_rewrite_tables" +#define SPIDER_SYS_RW_TBLS_TABLE_NAME_LEN 21 +#define SPIDER_SYS_RW_TBL_TBLS_TABLE_NAME_STR "spider_rewrite_table_tables" +#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_LEN 34 +#define SPIDER_SYS_RWN_TBLS_TABLE_NAME_STR "spider_rewritten_tables" +#define SPIDER_SYS_RWN_TBLS_TABLE_NAME_LEN 23 + +#define SPIDER_SYS_XA_PREPARED_STR "PREPARED" +#define SPIDER_SYS_XA_NOT_YET_STR "NOT YET" +#define SPIDER_SYS_XA_COMMIT_STR "COMMIT" +#define SPIDER_SYS_XA_ROLLBACK_STR "ROLLBACK" + +#define SPIDER_SYS_XA_COL_CNT 5 +#define SPIDER_SYS_XA_PK_COL_CNT 3 +#define SPIDER_SYS_XA_IDX1_COL_CNT 1 +#define SPIDER_SYS_XA_MEMBER_COL_CNT 21 +#define SPIDER_SYS_XA_MEMBER_PK_COL_CNT 6 +#define SPIDER_SYS_TABLES_COL_CNT 28 +#define SPIDER_SYS_TABLES_PK_COL_CNT 3 +#define SPIDER_SYS_TABLES_IDX1_COL_CNT 1 +#define SPIDER_SYS_TABLES_UIDX1_COL_CNT 3 +#define SPIDER_SYS_LINK_MON_TABLE_COL_CNT 22 +#define SPIDER_SYS_LINK_FAILED_TABLE_COL_CNT 4 +#define SPIDER_SYS_XA_FAILED_TABLE_COL_CNT 24 +#define SPIDER_SYS_POS_FOR_RECOVERY_TABLE_COL_CNT 7 +#define SPIDER_SYS_TABLE_STS_COL_CNT 11 +#define SPIDER_SYS_TABLE_STS_PK_COL_CNT 2 +#define SPIDER_SYS_TABLE_CRD_COL_CNT 4 +#define SPIDER_SYS_TABLE_CRD_PK_COL_CNT 3 +#define SPIDER_SYS_RW_TBLS_COL_CNT 3 +#define SPIDER_SYS_RW_TBL_TBLS_COL_CNT 8 +#define SPIDER_SYS_RW_TBL_PTTS_COL_CNT 7 +#define SPIDER_SYS_RW_TBL_SPTTS_COL_CNT 8 +#define SPIDER_SYS_RWN_TBLS_COL_CNT 4 + +#define SPIDER_SYS_LINK_MON_TABLE_DB_NAME_SIZE 64 +#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: + 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]; + uint db_name_length; + uint table_name_length; + 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 +); + +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 +); + +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 +); + +#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 +); +#else +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 +); + +#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 +); +#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 +); +#endif + +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 +); |