Commit 0dffe33c authored by Kentoku SHIBA's avatar Kentoku SHIBA

add a table parameter "filedsn" to Spider

parent e685809a
...@@ -566,7 +566,7 @@ SPIDER_CONN *spider_create_conn( ...@@ -566,7 +566,7 @@ SPIDER_CONN *spider_create_conn(
char *tmp_name, *tmp_host, *tmp_username, *tmp_password, *tmp_socket; char *tmp_name, *tmp_host, *tmp_username, *tmp_password, *tmp_socket;
char *tmp_wrapper, *tmp_db, *tmp_ssl_ca, *tmp_ssl_capath, *tmp_ssl_cert; char *tmp_wrapper, *tmp_db, *tmp_ssl_ca, *tmp_ssl_capath, *tmp_ssl_cert;
char *tmp_ssl_cipher, *tmp_ssl_key, *tmp_default_file, *tmp_default_group; char *tmp_ssl_cipher, *tmp_ssl_key, *tmp_default_file, *tmp_default_group;
char *tmp_dsn; char *tmp_dsn, *tmp_filedsn;
DBUG_ENTER("spider_create_conn"); DBUG_ENTER("spider_create_conn");
if (unlikely(!UTC)) if (unlikely(!UTC))
...@@ -618,6 +618,8 @@ SPIDER_CONN *spider_create_conn( ...@@ -618,6 +618,8 @@ SPIDER_CONN *spider_create_conn(
(uint) (share->tgt_default_groups_lengths[link_idx] + 1), (uint) (share->tgt_default_groups_lengths[link_idx] + 1),
&tmp_dsn, &tmp_dsn,
(uint) (share->tgt_dsns_lengths[link_idx] + 1), (uint) (share->tgt_dsns_lengths[link_idx] + 1),
&tmp_filedsn,
(uint) (share->tgt_filedsns_lengths[link_idx] + 1),
&need_mon, (uint) (sizeof(int)), &need_mon, (uint) (sizeof(int)),
NullS)) NullS))
) { ) {
...@@ -726,6 +728,15 @@ SPIDER_CONN *spider_create_conn( ...@@ -726,6 +728,15 @@ SPIDER_CONN *spider_create_conn(
share->tgt_dsns_lengths[link_idx]); share->tgt_dsns_lengths[link_idx]);
} else } else
conn->tgt_dsn = NULL; conn->tgt_dsn = NULL;
conn->tgt_filedsn_length =
share->tgt_filedsns_lengths[link_idx];
if (conn->tgt_filedsn_length)
{
conn->tgt_filedsn = tmp_filedsn;
memcpy(conn->tgt_filedsn, share->tgt_filedsns[link_idx],
share->tgt_filedsns_lengths[link_idx]);
} else
conn->tgt_filedsn = NULL;
conn->tgt_port = share->tgt_ports[link_idx]; conn->tgt_port = share->tgt_ports[link_idx];
conn->tgt_ssl_vsc = share->tgt_ssl_vscs[link_idx]; conn->tgt_ssl_vsc = share->tgt_ssl_vscs[link_idx];
conn->dbton_id = share->sql_dbton_ids[link_idx]; conn->dbton_id = share->sql_dbton_ids[link_idx];
......
...@@ -289,7 +289,8 @@ int spider_udf_direct_sql_create_conn_key( ...@@ -289,7 +289,8 @@ int spider_udf_direct_sql_create_conn_key(
+ 1 + 1 + 1 + 1
+ direct_sql->tgt_default_file_length + 1 + direct_sql->tgt_default_file_length + 1
+ direct_sql->tgt_default_group_length + 1 + direct_sql->tgt_default_group_length + 1
+ direct_sql->tgt_dsn_length; + direct_sql->tgt_dsn_length + 1
+ direct_sql->tgt_filedsn_length;
#if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET)
} else { } else {
direct_sql->conn_key_length direct_sql->conn_key_length
...@@ -403,6 +404,13 @@ int spider_udf_direct_sql_create_conn_key( ...@@ -403,6 +404,13 @@ int spider_udf_direct_sql_create_conn_key(
tmp_name = strmov(tmp_name + 1, direct_sql->tgt_dsn); tmp_name = strmov(tmp_name + 1, direct_sql->tgt_dsn);
} else } else
tmp_name++; tmp_name++;
if (direct_sql->tgt_filedsn)
{
DBUG_PRINT("info",("spider tgt_filedsn=%s",
direct_sql->tgt_filedsn));
tmp_name = strmov(tmp_name + 1, direct_sql->tgt_filedsn);
} else
tmp_name++;
#if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET)
} }
#endif #endif
...@@ -422,7 +430,7 @@ SPIDER_CONN *spider_udf_direct_sql_create_conn( ...@@ -422,7 +430,7 @@ SPIDER_CONN *spider_udf_direct_sql_create_conn(
char *tmp_name, *tmp_host, *tmp_username, *tmp_password, *tmp_socket; char *tmp_name, *tmp_host, *tmp_username, *tmp_password, *tmp_socket;
char *tmp_wrapper, *tmp_db, *tmp_ssl_ca, *tmp_ssl_capath, *tmp_ssl_cert; char *tmp_wrapper, *tmp_db, *tmp_ssl_ca, *tmp_ssl_capath, *tmp_ssl_cert;
char *tmp_ssl_cipher, *tmp_ssl_key, *tmp_default_file, *tmp_default_group; char *tmp_ssl_cipher, *tmp_ssl_key, *tmp_default_file, *tmp_default_group;
char *tmp_dsn; char *tmp_dsn, *tmp_filedsn;
int *need_mon; int *need_mon;
bool tables_on_different_db_are_joinable = TRUE; bool tables_on_different_db_are_joinable = TRUE;
DBUG_ENTER("spider_udf_direct_sql_create_conn"); DBUG_ENTER("spider_udf_direct_sql_create_conn");
...@@ -463,6 +471,8 @@ SPIDER_CONN *spider_udf_direct_sql_create_conn( ...@@ -463,6 +471,8 @@ SPIDER_CONN *spider_udf_direct_sql_create_conn(
(uint) (direct_sql->tgt_default_group_length + 1), (uint) (direct_sql->tgt_default_group_length + 1),
&tmp_dsn, &tmp_dsn,
(uint) (direct_sql->tgt_dsn_length + 1), (uint) (direct_sql->tgt_dsn_length + 1),
&tmp_filedsn,
(uint) (direct_sql->tgt_filedsn_length + 1),
&need_mon, (uint) (sizeof(int)), &need_mon, (uint) (sizeof(int)),
NullS)) NullS))
) { ) {
...@@ -587,6 +597,14 @@ SPIDER_CONN *spider_udf_direct_sql_create_conn( ...@@ -587,6 +597,14 @@ SPIDER_CONN *spider_udf_direct_sql_create_conn(
direct_sql->tgt_dsn_length); direct_sql->tgt_dsn_length);
} else } else
conn->tgt_dsn = NULL; conn->tgt_dsn = NULL;
conn->tgt_filedsn_length = direct_sql->tgt_filedsn_length;
if (conn->tgt_filedsn_length)
{
conn->tgt_filedsn = tmp_filedsn;
memcpy(conn->tgt_filedsn, direct_sql->tgt_filedsn,
direct_sql->tgt_filedsn_length);
} else
conn->tgt_filedsn = NULL;
conn->tgt_ssl_vsc = direct_sql->tgt_ssl_vsc; conn->tgt_ssl_vsc = direct_sql->tgt_ssl_vsc;
#if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET)
} else { } else {
...@@ -1258,6 +1276,7 @@ int spider_udf_parse_direct_sql_param( ...@@ -1258,6 +1276,7 @@ int spider_udf_parse_direct_sql_param(
SPIDER_PARAM_STR("dff", tgt_default_file); SPIDER_PARAM_STR("dff", tgt_default_file);
SPIDER_PARAM_STR("dfg", tgt_default_group); SPIDER_PARAM_STR("dfg", tgt_default_group);
SPIDER_PARAM_STR("dsn", tgt_dsn); SPIDER_PARAM_STR("dsn", tgt_dsn);
SPIDER_PARAM_STR("fds", tgt_filedsn);
SPIDER_PARAM_LONGLONG("prt", priority, 0); SPIDER_PARAM_LONGLONG("prt", priority, 0);
SPIDER_PARAM_INT("rto", net_read_timeout, 0); SPIDER_PARAM_INT("rto", net_read_timeout, 0);
SPIDER_PARAM_STR("sca", tgt_ssl_ca); SPIDER_PARAM_STR("sca", tgt_ssl_ca);
...@@ -1290,6 +1309,7 @@ int spider_udf_parse_direct_sql_param( ...@@ -1290,6 +1309,7 @@ int spider_udf_parse_direct_sql_param(
error_num = param_string_parse.print_param_error(); error_num = param_string_parse.print_param_error();
goto error; goto error;
case 7: case 7:
SPIDER_PARAM_STR("filedsn", tgt_filedsn);
SPIDER_PARAM_STR("wrapper", tgt_wrapper); SPIDER_PARAM_STR("wrapper", tgt_wrapper);
SPIDER_PARAM_STR("ssl_key", tgt_ssl_key); SPIDER_PARAM_STR("ssl_key", tgt_ssl_key);
error_num = param_string_parse.print_param_error(); error_num = param_string_parse.print_param_error();
...@@ -1685,6 +1705,10 @@ void spider_udf_free_direct_sql_alloc( ...@@ -1685,6 +1705,10 @@ void spider_udf_free_direct_sql_alloc(
{ {
spider_free(spider_current_trx, direct_sql->tgt_dsn, MYF(0)); spider_free(spider_current_trx, direct_sql->tgt_dsn, MYF(0));
} }
if (direct_sql->tgt_filedsn)
{
spider_free(spider_current_trx, direct_sql->tgt_filedsn, MYF(0));
}
if (direct_sql->conn_key) if (direct_sql->conn_key)
{ {
spider_free(spider_current_trx, direct_sql->conn_key, MYF(0)); spider_free(spider_current_trx, direct_sql->conn_key, MYF(0));
......
...@@ -256,7 +256,7 @@ const char SPIDER_empty_string = ""; ...@@ -256,7 +256,7 @@ const char SPIDER_empty_string = "";
#define SPIDER_LINK_MON_DRAW_FEW_MON 1 #define SPIDER_LINK_MON_DRAW_FEW_MON 1
#define SPIDER_LINK_MON_DRAW 2 #define SPIDER_LINK_MON_DRAW 2
#define SPIDER_TMP_SHARE_CHAR_PTR_COUNT 21 #define SPIDER_TMP_SHARE_CHAR_PTR_COUNT 22
#define SPIDER_TMP_SHARE_UINT_COUNT SPIDER_TMP_SHARE_CHAR_PTR_COUNT #define SPIDER_TMP_SHARE_UINT_COUNT SPIDER_TMP_SHARE_CHAR_PTR_COUNT
#define SPIDER_TMP_SHARE_LONG_COUNT 20 #define SPIDER_TMP_SHARE_LONG_COUNT 20
#define SPIDER_TMP_SHARE_LONGLONG_COUNT 3 #define SPIDER_TMP_SHARE_LONGLONG_COUNT 3
...@@ -352,6 +352,7 @@ typedef struct st_spider_alter_table ...@@ -352,6 +352,7 @@ typedef struct st_spider_alter_table
char **tmp_tgt_default_files; char **tmp_tgt_default_files;
char **tmp_tgt_default_groups; char **tmp_tgt_default_groups;
char **tmp_tgt_dsns; char **tmp_tgt_dsns;
char **tmp_tgt_filedsns;
char **tmp_static_link_ids; char **tmp_static_link_ids;
long *tmp_tgt_ports; long *tmp_tgt_ports;
long *tmp_tgt_ssl_vscs; long *tmp_tgt_ssl_vscs;
...@@ -374,6 +375,7 @@ typedef struct st_spider_alter_table ...@@ -374,6 +375,7 @@ typedef struct st_spider_alter_table
uint *tmp_tgt_default_files_lengths; uint *tmp_tgt_default_files_lengths;
uint *tmp_tgt_default_groups_lengths; uint *tmp_tgt_default_groups_lengths;
uint *tmp_tgt_dsns_lengths; uint *tmp_tgt_dsns_lengths;
uint *tmp_tgt_filedsns_lengths;
uint *tmp_static_link_ids_lengths; uint *tmp_static_link_ids_lengths;
uint tmp_server_names_charlen; uint tmp_server_names_charlen;
...@@ -392,6 +394,7 @@ typedef struct st_spider_alter_table ...@@ -392,6 +394,7 @@ typedef struct st_spider_alter_table
uint tmp_tgt_default_files_charlen; uint tmp_tgt_default_files_charlen;
uint tmp_tgt_default_groups_charlen; uint tmp_tgt_default_groups_charlen;
uint tmp_tgt_dsns_charlen; uint tmp_tgt_dsns_charlen;
uint tmp_tgt_filedsns_charlen;
uint tmp_static_link_ids_charlen; uint tmp_static_link_ids_charlen;
uint tmp_server_names_length; uint tmp_server_names_length;
...@@ -410,6 +413,7 @@ typedef struct st_spider_alter_table ...@@ -410,6 +413,7 @@ typedef struct st_spider_alter_table
uint tmp_tgt_default_files_length; uint tmp_tgt_default_files_length;
uint tmp_tgt_default_groups_length; uint tmp_tgt_default_groups_length;
uint tmp_tgt_dsns_length; uint tmp_tgt_dsns_length;
uint tmp_tgt_filedsns_length;
uint tmp_static_link_ids_length; uint tmp_static_link_ids_length;
uint tmp_tgt_ports_length; uint tmp_tgt_ports_length;
uint tmp_tgt_ssl_vscs_length; uint tmp_tgt_ssl_vscs_length;
...@@ -495,6 +499,7 @@ typedef struct st_spider_conn ...@@ -495,6 +499,7 @@ typedef struct st_spider_conn
char *tgt_default_file; char *tgt_default_file;
char *tgt_default_group; char *tgt_default_group;
char *tgt_dsn; char *tgt_dsn;
char *tgt_filedsn;
long tgt_port; long tgt_port;
long tgt_ssl_vsc; long tgt_ssl_vsc;
#if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET)
...@@ -516,6 +521,7 @@ typedef struct st_spider_conn ...@@ -516,6 +521,7 @@ typedef struct st_spider_conn
uint tgt_default_file_length; uint tgt_default_file_length;
uint tgt_default_group_length; uint tgt_default_group_length;
uint tgt_dsn_length; uint tgt_dsn_length;
uint tgt_filedsn_length;
#if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET)
uint hs_sock_length; uint hs_sock_length;
#endif #endif
...@@ -1123,6 +1129,7 @@ typedef struct st_spider_share ...@@ -1123,6 +1129,7 @@ typedef struct st_spider_share
char **tgt_default_files; char **tgt_default_files;
char **tgt_default_groups; char **tgt_default_groups;
char **tgt_dsns; char **tgt_dsns;
char **tgt_filedsns;
char **static_link_ids; char **static_link_ids;
char **tgt_pk_names; char **tgt_pk_names;
char **tgt_sequence_names; char **tgt_sequence_names;
...@@ -1179,6 +1186,7 @@ typedef struct st_spider_share ...@@ -1179,6 +1186,7 @@ typedef struct st_spider_share
uint *tgt_default_files_lengths; uint *tgt_default_files_lengths;
uint *tgt_default_groups_lengths; uint *tgt_default_groups_lengths;
uint *tgt_dsns_lengths; uint *tgt_dsns_lengths;
uint *tgt_filedsns_lengths;
uint *static_link_ids_lengths; uint *static_link_ids_lengths;
uint *tgt_pk_names_lengths; uint *tgt_pk_names_lengths;
uint *tgt_sequence_names_lengths; uint *tgt_sequence_names_lengths;
...@@ -1210,6 +1218,7 @@ typedef struct st_spider_share ...@@ -1210,6 +1218,7 @@ typedef struct st_spider_share
uint tgt_default_files_charlen; uint tgt_default_files_charlen;
uint tgt_default_groups_charlen; uint tgt_default_groups_charlen;
uint tgt_dsns_charlen; uint tgt_dsns_charlen;
uint tgt_filedsns_charlen;
uint static_link_ids_charlen; uint static_link_ids_charlen;
uint tgt_pk_names_charlen; uint tgt_pk_names_charlen;
uint tgt_sequence_names_charlen; uint tgt_sequence_names_charlen;
...@@ -1237,6 +1246,7 @@ typedef struct st_spider_share ...@@ -1237,6 +1246,7 @@ typedef struct st_spider_share
uint tgt_default_files_length; uint tgt_default_files_length;
uint tgt_default_groups_length; uint tgt_default_groups_length;
uint tgt_dsns_length; uint tgt_dsns_length;
uint tgt_filedsns_length;
uint static_link_ids_length; uint static_link_ids_length;
uint tgt_pk_names_length; uint tgt_pk_names_length;
uint tgt_sequence_names_length; uint tgt_sequence_names_length;
...@@ -1373,6 +1383,7 @@ typedef struct st_spider_direct_sql ...@@ -1373,6 +1383,7 @@ typedef struct st_spider_direct_sql
char *tgt_default_file; char *tgt_default_file;
char *tgt_default_group; char *tgt_default_group;
char *tgt_dsn; char *tgt_dsn;
char *tgt_filedsn;
char *conn_key; char *conn_key;
long tgt_port; long tgt_port;
long tgt_ssl_vsc; long tgt_ssl_vsc;
...@@ -1392,6 +1403,7 @@ typedef struct st_spider_direct_sql ...@@ -1392,6 +1403,7 @@ typedef struct st_spider_direct_sql
uint tgt_default_file_length; uint tgt_default_file_length;
uint tgt_default_group_length; uint tgt_default_group_length;
uint tgt_dsn_length; uint tgt_dsn_length;
uint tgt_filedsn_length;
uint conn_key_length; uint conn_key_length;
uint dbton_id; uint dbton_id;
#ifdef SPIDER_HAS_HASH_VALUE_TYPE #ifdef SPIDER_HAS_HASH_VALUE_TYPE
......
...@@ -52,6 +52,7 @@ static LEX_STRING spider_init_queries[] = { ...@@ -52,6 +52,7 @@ static LEX_STRING spider_init_queries[] = {
" default_file text," " default_file text,"
" default_group char(64) default null," " default_group char(64) default null,"
" dsn char(64) default null," " dsn char(64) default null,"
" filedsn text default null,"
" key idx1 (data, format_id, gtrid_length, host)" " key idx1 (data, format_id, gtrid_length, host)"
") engine=MyISAM default charset=utf8 collate=utf8_bin" ") engine=MyISAM default charset=utf8 collate=utf8_bin"
)}, )},
...@@ -76,6 +77,7 @@ static LEX_STRING spider_init_queries[] = { ...@@ -76,6 +77,7 @@ static LEX_STRING spider_init_queries[] = {
" default_file text," " default_file text,"
" default_group char(64) default null," " default_group char(64) default null,"
" dsn char(64) default null," " dsn char(64) default null,"
" filedsn text default null,"
" thread_id int default null," " thread_id int default null,"
" status char(8) not null default ''," " status char(8) not null default '',"
" failed_time timestamp not null default current_timestamp," " failed_time timestamp not null default current_timestamp,"
...@@ -105,6 +107,7 @@ static LEX_STRING spider_init_queries[] = { ...@@ -105,6 +107,7 @@ static LEX_STRING spider_init_queries[] = {
" default_file text," " default_file text,"
" default_group char(64) default null," " default_group char(64) default null,"
" dsn char(64) default null," " dsn char(64) default null,"
" filedsn text default null,"
" tgt_db_name char(64) default null," " tgt_db_name char(64) default null,"
" tgt_table_name char(64) default null," " tgt_table_name char(64) default null,"
" link_status tinyint not null default 1," " link_status tinyint not null default 1,"
...@@ -137,6 +140,7 @@ static LEX_STRING spider_init_queries[] = { ...@@ -137,6 +140,7 @@ static LEX_STRING spider_init_queries[] = {
" default_file text," " default_file text,"
" default_group char(64) default null," " default_group char(64) default null,"
" dsn char(64) default null," " dsn char(64) default null,"
" filedsn text default null,"
" primary key (db_name, table_name, link_id, sid)" " primary key (db_name, table_name, link_id, sid)"
") engine=MyISAM default charset=utf8 collate=utf8_bin" ") engine=MyISAM default charset=utf8 collate=utf8_bin"
)}, )},
...@@ -614,6 +618,18 @@ static LEX_STRING spider_init_queries[] = { ...@@ -614,6 +618,18 @@ static LEX_STRING spider_init_queries[] = {
" call mysql.spider_fix_one_table('spider_xa_member', 'dsn'," " call mysql.spider_fix_one_table('spider_xa_member', 'dsn',"
" 'alter table mysql.spider_xa_member" " 'alter table mysql.spider_xa_member"
" add column dsn char(64) default null after default_group');" " 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');"
"end;" "end;"
)}, )},
{C_STRING_WITH_LEN( {C_STRING_WITH_LEN(
......
...@@ -64,9 +64,10 @@ extern Time_zone *spd_tz_system; ...@@ -64,9 +64,10 @@ extern Time_zone *spd_tz_system;
#define SPIDER_XA_MEMBER_DEFAULT_FILE_POS 16 #define SPIDER_XA_MEMBER_DEFAULT_FILE_POS 16
#define SPIDER_XA_MEMBER_DEFAULT_GROUP_POS 17 #define SPIDER_XA_MEMBER_DEFAULT_GROUP_POS 17
#define SPIDER_XA_MEMBER_DSN_POS 18 #define SPIDER_XA_MEMBER_DSN_POS 18
#define SPIDER_XA_FAILED_LOG_THREAD_ID_POS 19 #define SPIDER_XA_MEMBER_FILEDSN_POS 19
#define SPIDER_XA_FAILED_LOG_STATUS_POS 20 #define SPIDER_XA_FAILED_LOG_THREAD_ID_POS 20
#define SPIDER_XA_FAILED_LOG_FAILED_TIME_POS 21 #define SPIDER_XA_FAILED_LOG_STATUS_POS 21
#define SPIDER_XA_FAILED_LOG_FAILED_TIME_POS 22
#define SPIDER_TABLES_DB_NAME_POS 0 #define SPIDER_TABLES_DB_NAME_POS 0
#define SPIDER_TABLES_TABLE_NAME_POS 1 #define SPIDER_TABLES_TABLE_NAME_POS 1
...@@ -89,11 +90,12 @@ extern Time_zone *spd_tz_system; ...@@ -89,11 +90,12 @@ extern Time_zone *spd_tz_system;
#define SPIDER_TABLES_DEFAULT_FILE_POS 18 #define SPIDER_TABLES_DEFAULT_FILE_POS 18
#define SPIDER_TABLES_DEFAULT_GROUP_POS 19 #define SPIDER_TABLES_DEFAULT_GROUP_POS 19
#define SPIDER_TABLES_DSN_POS 20 #define SPIDER_TABLES_DSN_POS 20
#define SPIDER_TABLES_TGT_DB_NAME_POS 21 #define SPIDER_TABLES_FILEDSN_POS 21
#define SPIDER_TABLES_TGT_TABLE_NAME_POS 22 #define SPIDER_TABLES_TGT_DB_NAME_POS 22
#define SPIDER_TABLES_LINK_STATUS_POS 23 #define SPIDER_TABLES_TGT_TABLE_NAME_POS 23
#define SPIDER_TABLES_BLOCK_STATUS_POS 24 #define SPIDER_TABLES_LINK_STATUS_POS 24
#define SPIDER_TABLES_STATIC_LINK_ID_POS 25 #define SPIDER_TABLES_BLOCK_STATUS_POS 25
#define SPIDER_TABLES_STATIC_LINK_ID_POS 26
#define SPIDER_LINK_MON_SERVERS_DB_NAME_POS 0 #define SPIDER_LINK_MON_SERVERS_DB_NAME_POS 0
#define SPIDER_LINK_MON_SERVERS_TABLE_NAME_POS 1 #define SPIDER_LINK_MON_SERVERS_TABLE_NAME_POS 1
...@@ -115,6 +117,7 @@ extern Time_zone *spd_tz_system; ...@@ -115,6 +117,7 @@ extern Time_zone *spd_tz_system;
#define SPIDER_LINK_MON_SERVERS_DEFAULT_FILE_POS 17 #define SPIDER_LINK_MON_SERVERS_DEFAULT_FILE_POS 17
#define SPIDER_LINK_MON_SERVERS_DEFAULT_GROUP_POS 18 #define SPIDER_LINK_MON_SERVERS_DEFAULT_GROUP_POS 18
#define SPIDER_LINK_MON_SERVERS_DSN_POS 19 #define SPIDER_LINK_MON_SERVERS_DSN_POS 19
#define SPIDER_LINK_MON_SERVERS_FILEDSN_POS 20
#define SPIDER_LINK_FAILED_LOG_DB_NAME_POS 0 #define SPIDER_LINK_FAILED_LOG_DB_NAME_POS 0
#define SPIDER_LINK_FAILED_LOG_TABLE_NAME_POS 1 #define SPIDER_LINK_FAILED_LOG_TABLE_NAME_POS 1
...@@ -1106,6 +1109,17 @@ void spider_store_xa_member_info( ...@@ -1106,6 +1109,17 @@ void spider_store_xa_member_info(
table->field[SPIDER_XA_MEMBER_DSN_POS]->set_null(); table->field[SPIDER_XA_MEMBER_DSN_POS]->set_null();
table->field[SPIDER_XA_MEMBER_DSN_POS]->reset(); table->field[SPIDER_XA_MEMBER_DSN_POS]->reset();
} }
if (conn->tgt_filedsn)
{
table->field[SPIDER_XA_MEMBER_FILEDSN_POS]->set_notnull();
table->field[SPIDER_XA_MEMBER_FILEDSN_POS]->store(
conn->tgt_filedsn,
(uint) conn->tgt_filedsn_length,
system_charset_info);
} else {
table->field[SPIDER_XA_MEMBER_FILEDSN_POS]->set_null();
table->field[SPIDER_XA_MEMBER_FILEDSN_POS]->reset();
}
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
...@@ -1420,6 +1434,17 @@ void spider_store_tables_connect_info( ...@@ -1420,6 +1434,17 @@ void spider_store_tables_connect_info(
table->field[SPIDER_TABLES_DSN_POS]->set_null(); table->field[SPIDER_TABLES_DSN_POS]->set_null();
table->field[SPIDER_TABLES_DSN_POS]->reset(); table->field[SPIDER_TABLES_DSN_POS]->reset();
} }
if (alter_table->tmp_tgt_filedsns[link_idx])
{
table->field[SPIDER_TABLES_FILEDSN_POS]->set_notnull();
table->field[SPIDER_TABLES_FILEDSN_POS]->store(
alter_table->tmp_tgt_filedsns[link_idx],
(uint) alter_table->tmp_tgt_filedsns_lengths[link_idx],
system_charset_info);
} else {
table->field[SPIDER_TABLES_FILEDSN_POS]->set_null();
table->field[SPIDER_TABLES_FILEDSN_POS]->reset();
}
if (alter_table->tmp_tgt_dbs[link_idx]) if (alter_table->tmp_tgt_dbs[link_idx])
{ {
table->field[SPIDER_TABLES_TGT_DB_NAME_POS]->set_notnull(); table->field[SPIDER_TABLES_TGT_DB_NAME_POS]->set_notnull();
...@@ -2405,6 +2430,17 @@ int spider_get_sys_server_info( ...@@ -2405,6 +2430,17 @@ int spider_get_sys_server_info(
share->tgt_dsns_lengths[link_idx] = 0; share->tgt_dsns_lengths[link_idx] = 0;
share->tgt_dsns[link_idx] = NULL; share->tgt_dsns[link_idx] = NULL;
} }
if (
!table->field[SPIDER_XA_MEMBER_FILEDSN_POS]->is_null() &&
(ptr = get_field(mem_root, table->field[SPIDER_XA_MEMBER_FILEDSN_POS]))
) {
share->tgt_filedsns_lengths[link_idx] = strlen(ptr);
share->tgt_filedsns[link_idx] =
spider_create_string(ptr, share->tgt_filedsns_lengths[link_idx]);
} else {
share->tgt_filedsns_lengths[link_idx] = 0;
share->tgt_filedsns[link_idx] = NULL;
}
DBUG_RETURN(0); DBUG_RETURN(0);
} }
...@@ -2663,6 +2699,17 @@ int spider_get_sys_tables_connect_info( ...@@ -2663,6 +2699,17 @@ int spider_get_sys_tables_connect_info(
share->tgt_dsns_lengths[link_idx] = 0; share->tgt_dsns_lengths[link_idx] = 0;
share->tgt_dsns[link_idx] = NULL; share->tgt_dsns[link_idx] = NULL;
} }
if (
!table->field[SPIDER_TABLES_FILEDSN_POS]->is_null() &&
(ptr = get_field(mem_root, table->field[SPIDER_TABLES_FILEDSN_POS]))
) {
share->tgt_filedsns_lengths[link_idx] = strlen(ptr);
share->tgt_filedsns[link_idx] =
spider_create_string(ptr, share->tgt_filedsns_lengths[link_idx]);
} else {
share->tgt_filedsns_lengths[link_idx] = 0;
share->tgt_filedsns[link_idx] = NULL;
}
if ( if (
!table->field[SPIDER_TABLES_TGT_DB_NAME_POS]->is_null() && !table->field[SPIDER_TABLES_TGT_DB_NAME_POS]->is_null() &&
(ptr = get_field(mem_root, table->field[SPIDER_TABLES_TGT_DB_NAME_POS])) (ptr = get_field(mem_root, table->field[SPIDER_TABLES_TGT_DB_NAME_POS]))
...@@ -3259,6 +3306,17 @@ int spider_get_sys_link_mon_connect_info( ...@@ -3259,6 +3306,17 @@ int spider_get_sys_link_mon_connect_info(
share->tgt_dsns_lengths[link_idx] = 0; share->tgt_dsns_lengths[link_idx] = 0;
share->tgt_dsns[link_idx] = NULL; share->tgt_dsns[link_idx] = NULL;
} }
if (
!table->field[SPIDER_LINK_MON_SERVERS_FILEDSN_POS]->is_null() &&
(ptr = get_field(mem_root, table->field[SPIDER_LINK_MON_SERVERS_FILEDSN_POS]))
) {
share->tgt_filedsns_lengths[link_idx] = strlen(ptr);
share->tgt_filedsns[link_idx] =
spider_create_string(ptr, share->tgt_filedsns_lengths[link_idx]);
} else {
share->tgt_filedsns_lengths[link_idx] = 0;
share->tgt_filedsns[link_idx] = NULL;
}
DBUG_RETURN(error_num); DBUG_RETURN(error_num);
} }
......
...@@ -51,15 +51,15 @@ ...@@ -51,15 +51,15 @@
#define SPIDER_SYS_XA_COL_CNT 5 #define SPIDER_SYS_XA_COL_CNT 5
#define SPIDER_SYS_XA_PK_COL_CNT 3 #define SPIDER_SYS_XA_PK_COL_CNT 3
#define SPIDER_SYS_XA_IDX1_COL_CNT 1 #define SPIDER_SYS_XA_IDX1_COL_CNT 1
#define SPIDER_SYS_XA_MEMBER_COL_CNT 19 #define SPIDER_SYS_XA_MEMBER_COL_CNT 20
#define SPIDER_SYS_XA_MEMBER_PK_COL_CNT 6 #define SPIDER_SYS_XA_MEMBER_PK_COL_CNT 6
#define SPIDER_SYS_TABLES_COL_CNT 26 #define SPIDER_SYS_TABLES_COL_CNT 27
#define SPIDER_SYS_TABLES_PK_COL_CNT 3 #define SPIDER_SYS_TABLES_PK_COL_CNT 3
#define SPIDER_SYS_TABLES_IDX1_COL_CNT 1 #define SPIDER_SYS_TABLES_IDX1_COL_CNT 1
#define SPIDER_SYS_TABLES_UIDX1_COL_CNT 3 #define SPIDER_SYS_TABLES_UIDX1_COL_CNT 3
#define SPIDER_SYS_LINK_MON_TABLE_COL_CNT 20 #define SPIDER_SYS_LINK_MON_TABLE_COL_CNT 21
#define SPIDER_SYS_LINK_FAILED_TABLE_COL_CNT 4 #define SPIDER_SYS_LINK_FAILED_TABLE_COL_CNT 4
#define SPIDER_SYS_XA_FAILED_TABLE_COL_CNT 22 #define SPIDER_SYS_XA_FAILED_TABLE_COL_CNT 23
#define SPIDER_SYS_POS_FOR_RECOVERY_TABLE_COL_CNT 7 #define SPIDER_SYS_POS_FOR_RECOVERY_TABLE_COL_CNT 7
#define SPIDER_SYS_TABLE_STS_COL_CNT 11 #define SPIDER_SYS_TABLE_STS_COL_CNT 11
#define SPIDER_SYS_TABLE_STS_PK_COL_CNT 2 #define SPIDER_SYS_TABLE_STS_PK_COL_CNT 2
......
...@@ -810,6 +810,17 @@ int spider_free_share_alloc( ...@@ -810,6 +810,17 @@ int spider_free_share_alloc(
} }
spider_free(spider_current_trx, share->tgt_dsns, MYF(0)); spider_free(spider_current_trx, share->tgt_dsns, MYF(0));
} }
if (share->tgt_filedsns)
{
for (roop_count = 0; roop_count < (int) share->tgt_filedsns_length;
roop_count++)
{
if (share->tgt_filedsns[roop_count])
spider_free(spider_current_trx, share->tgt_filedsns[roop_count],
MYF(0));
}
spider_free(spider_current_trx, share->tgt_filedsns, MYF(0));
}
if (share->tgt_pk_names) if (share->tgt_pk_names)
{ {
for (roop_count = 0; roop_count < (int) share->tgt_pk_names_length; for (roop_count = 0; roop_count < (int) share->tgt_pk_names_length;
...@@ -1020,6 +1031,11 @@ void spider_free_tmp_share_alloc( ...@@ -1020,6 +1031,11 @@ void spider_free_tmp_share_alloc(
spider_free(spider_current_trx, share->tgt_dsns[0], MYF(0)); spider_free(spider_current_trx, share->tgt_dsns[0], MYF(0));
share->tgt_dsns[0] = NULL; share->tgt_dsns[0] = NULL;
} }
if (share->tgt_filedsns && share->tgt_filedsns[0])
{
spider_free(spider_current_trx, share->tgt_filedsns[0], MYF(0));
share->tgt_filedsns[0] = NULL;
}
if (share->tgt_pk_names && share->tgt_pk_names[0]) if (share->tgt_pk_names && share->tgt_pk_names[0])
{ {
spider_free(spider_current_trx, share->tgt_pk_names[0], MYF(0)); spider_free(spider_current_trx, share->tgt_pk_names[0], MYF(0));
...@@ -2332,6 +2348,7 @@ int spider_parse_connect_info( ...@@ -2332,6 +2348,7 @@ int spider_parse_connect_info(
#ifdef HA_CAN_FORCE_BULK_UPDATE #ifdef HA_CAN_FORCE_BULK_UPDATE
SPIDER_PARAM_INT_WITH_MAX("fbu", force_bulk_update, 0, 1); SPIDER_PARAM_INT_WITH_MAX("fbu", force_bulk_update, 0, 1);
#endif #endif
SPIDER_PARAM_STR_LIST("fds", tgt_filedsns);
SPIDER_PARAM_LONGLONG("frd", first_read, 0); SPIDER_PARAM_LONGLONG("frd", first_read, 0);
#if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET)
SPIDER_PARAM_LONGLONG("hrf", hs_result_free_size, 0); SPIDER_PARAM_LONGLONG("hrf", hs_result_free_size, 0);
...@@ -2450,6 +2467,7 @@ int spider_parse_connect_info( ...@@ -2450,6 +2467,7 @@ int spider_parse_connect_info(
error_num = connect_string_parse.print_param_error(); error_num = connect_string_parse.print_param_error();
goto error; goto error;
case 7: case 7:
SPIDER_PARAM_STR_LIST("filedsn", tgt_filedsns);
SPIDER_PARAM_STR_LIST("wrapper", tgt_wrappers); SPIDER_PARAM_STR_LIST("wrapper", tgt_wrappers);
SPIDER_PARAM_STR_LIST("ssl_key", tgt_ssl_keys); SPIDER_PARAM_STR_LIST("ssl_key", tgt_ssl_keys);
SPIDER_PARAM_STR_LIST("pk_name", tgt_pk_names); SPIDER_PARAM_STR_LIST("pk_name", tgt_pk_names);
...@@ -2743,6 +2761,8 @@ int spider_parse_connect_info( ...@@ -2743,6 +2761,8 @@ int spider_parse_connect_info(
share->all_link_count = share->tgt_default_groups_length; share->all_link_count = share->tgt_default_groups_length;
if (share->all_link_count < share->tgt_dsns_length) if (share->all_link_count < share->tgt_dsns_length)
share->all_link_count = share->tgt_dsns_length; share->all_link_count = share->tgt_dsns_length;
if (share->all_link_count < share->tgt_filedsns_length)
share->all_link_count = share->tgt_filedsns_length;
if (share->all_link_count < share->tgt_pk_names_length) if (share->all_link_count < share->tgt_pk_names_length)
share->all_link_count = share->tgt_pk_names_length; share->all_link_count = share->tgt_pk_names_length;
if (share->all_link_count < share->tgt_sequence_names_length) if (share->all_link_count < share->tgt_sequence_names_length)
...@@ -2915,6 +2935,13 @@ int spider_parse_connect_info( ...@@ -2915,6 +2935,13 @@ int spider_parse_connect_info(
&share->tgt_dsns_charlen, &share->tgt_dsns_charlen,
share->all_link_count))) share->all_link_count)))
goto error; goto error;
if ((error_num = spider_increase_string_list(
&share->tgt_filedsns,
&share->tgt_filedsns_lengths,
&share->tgt_filedsns_length,
&share->tgt_filedsns_charlen,
share->all_link_count)))
goto error;
if ((error_num = spider_increase_string_list( if ((error_num = spider_increase_string_list(
&share->tgt_pk_names, &share->tgt_pk_names,
&share->tgt_pk_names_lengths, &share->tgt_pk_names_lengths,
...@@ -3109,6 +3136,8 @@ int spider_parse_connect_info( ...@@ -3109,6 +3136,8 @@ int spider_parse_connect_info(
(uint) (sizeof(char *) * share->all_link_count), (uint) (sizeof(char *) * share->all_link_count),
&share_alter->tmp_tgt_dsns, &share_alter->tmp_tgt_dsns,
(uint) (sizeof(char *) * share->all_link_count), (uint) (sizeof(char *) * share->all_link_count),
&share_alter->tmp_tgt_filedsns,
(uint) (sizeof(char *) * share->all_link_count),
&share_alter->tmp_static_link_ids, &share_alter->tmp_static_link_ids,
(uint) (sizeof(char *) * share->all_link_count), (uint) (sizeof(char *) * share->all_link_count),
&share_alter->tmp_server_names_lengths, &share_alter->tmp_server_names_lengths,
...@@ -3143,6 +3172,8 @@ int spider_parse_connect_info( ...@@ -3143,6 +3172,8 @@ int spider_parse_connect_info(
(uint) (sizeof(uint *) * share->all_link_count), (uint) (sizeof(uint *) * share->all_link_count),
&share_alter->tmp_tgt_dsns_lengths, &share_alter->tmp_tgt_dsns_lengths,
(uint) (sizeof(uint *) * share->all_link_count), (uint) (sizeof(uint *) * share->all_link_count),
&share_alter->tmp_tgt_filedsns_lengths,
(uint) (sizeof(uint *) * share->all_link_count),
&share_alter->tmp_static_link_ids_lengths, &share_alter->tmp_static_link_ids_lengths,
(uint) (sizeof(uint *) * share->all_link_count), (uint) (sizeof(uint *) * share->all_link_count),
&share_alter->tmp_tgt_ports, &share_alter->tmp_tgt_ports,
...@@ -3192,6 +3223,8 @@ int spider_parse_connect_info( ...@@ -3192,6 +3223,8 @@ int spider_parse_connect_info(
sizeof(char *) * share->all_link_count); sizeof(char *) * share->all_link_count);
memcpy(share_alter->tmp_tgt_dsns, share->tgt_dsns, memcpy(share_alter->tmp_tgt_dsns, share->tgt_dsns,
sizeof(char *) * share->all_link_count); sizeof(char *) * share->all_link_count);
memcpy(share_alter->tmp_tgt_filedsns, share->tgt_filedsns,
sizeof(char *) * share->all_link_count);
memcpy(share_alter->tmp_static_link_ids, share->static_link_ids, memcpy(share_alter->tmp_static_link_ids, share->static_link_ids,
sizeof(char *) * share->all_link_count); sizeof(char *) * share->all_link_count);
...@@ -3250,6 +3283,9 @@ int spider_parse_connect_info( ...@@ -3250,6 +3283,9 @@ int spider_parse_connect_info(
memcpy(share_alter->tmp_tgt_dsns_lengths, memcpy(share_alter->tmp_tgt_dsns_lengths,
share->tgt_dsns_lengths, share->tgt_dsns_lengths,
sizeof(uint) * share->all_link_count); sizeof(uint) * share->all_link_count);
memcpy(share_alter->tmp_tgt_filedsns_lengths,
share->tgt_filedsns_lengths,
sizeof(uint) * share->all_link_count);
memcpy(share_alter->tmp_static_link_ids_lengths, memcpy(share_alter->tmp_static_link_ids_lengths,
share->static_link_ids_lengths, share->static_link_ids_lengths,
sizeof(uint) * share->all_link_count); sizeof(uint) * share->all_link_count);
...@@ -3273,6 +3309,8 @@ int spider_parse_connect_info( ...@@ -3273,6 +3309,8 @@ int spider_parse_connect_info(
share->tgt_default_groups_charlen; share->tgt_default_groups_charlen;
share_alter->tmp_tgt_dsns_charlen = share_alter->tmp_tgt_dsns_charlen =
share->tgt_dsns_charlen; share->tgt_dsns_charlen;
share_alter->tmp_tgt_filedsns_charlen =
share->tgt_filedsns_charlen;
share_alter->tmp_static_link_ids_charlen = share_alter->tmp_static_link_ids_charlen =
share->static_link_ids_charlen; share->static_link_ids_charlen;
...@@ -3294,6 +3332,8 @@ int spider_parse_connect_info( ...@@ -3294,6 +3332,8 @@ int spider_parse_connect_info(
share->tgt_default_groups_length; share->tgt_default_groups_length;
share_alter->tmp_tgt_dsns_length = share_alter->tmp_tgt_dsns_length =
share->tgt_dsns_length; share->tgt_dsns_length;
share_alter->tmp_tgt_filedsns_length =
share->tgt_filedsns_length;
share_alter->tmp_static_link_ids_length = share_alter->tmp_static_link_ids_length =
share->static_link_ids_length; share->static_link_ids_length;
share_alter->tmp_tgt_ports_length = share->tgt_ports_length; share_alter->tmp_tgt_ports_length = share->tgt_ports_length;
...@@ -3524,7 +3564,19 @@ int spider_parse_connect_info( ...@@ -3524,7 +3564,19 @@ int spider_parse_connect_info(
{ {
error_num = ER_SPIDER_INVALID_CONNECT_INFO_TOO_LONG_NUM; error_num = ER_SPIDER_INVALID_CONNECT_INFO_TOO_LONG_NUM;
my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_TOO_LONG_STR, my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_TOO_LONG_STR,
MYF(0), share->tgt_dsns[roop_count], "default_group"); MYF(0), share->tgt_dsns[roop_count], "dsn");
goto error;
}
DBUG_PRINT("info",
("spider tgt_filedsns_lengths[%d] = %u", roop_count,
share->tgt_filedsns_lengths[roop_count]));
if (share->tgt_filedsns_lengths[roop_count] >
SPIDER_CONNECT_INFO_PATH_MAX_LEN)
{
error_num = ER_SPIDER_INVALID_CONNECT_INFO_TOO_LONG_NUM;
my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_TOO_LONG_STR,
MYF(0), share->tgt_filedsns[roop_count], "filedsn");
goto error; goto error;
} }
...@@ -4367,7 +4419,8 @@ int spider_create_conn_keys( ...@@ -4367,7 +4419,8 @@ int spider_create_conn_keys(
+ 1 + 1 + 1 + 1
+ share->tgt_default_files_lengths[roop_count] + 1 + share->tgt_default_files_lengths[roop_count] + 1
+ share->tgt_default_groups_lengths[roop_count] + 1 + share->tgt_default_groups_lengths[roop_count] + 1
+ share->tgt_dsns_lengths[roop_count]; + share->tgt_dsns_lengths[roop_count] + 1
+ share->tgt_filedsns_lengths[roop_count];
share->conn_keys_charlen += conn_keys_lengths[roop_count] + 2; share->conn_keys_charlen += conn_keys_lengths[roop_count] + 2;
#if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET)
hs_r_conn_keys_lengths[roop_count] hs_r_conn_keys_lengths[roop_count]
...@@ -4551,6 +4604,13 @@ int spider_create_conn_keys( ...@@ -4551,6 +4604,13 @@ int spider_create_conn_keys(
tmp_name = strmov(tmp_name + 1, share->tgt_dsns[roop_count]); tmp_name = strmov(tmp_name + 1, share->tgt_dsns[roop_count]);
} else } else
tmp_name++; tmp_name++;
if (share->tgt_filedsns[roop_count])
{
DBUG_PRINT("info",("spider tgt_filedsns[%d]=%s", roop_count,
share->tgt_filedsns[roop_count]));
tmp_name = strmov(tmp_name + 1, share->tgt_filedsns[roop_count]);
} else
tmp_name++;
tmp_name++; tmp_name++;
tmp_name++; tmp_name++;
#ifdef SPIDER_HAS_HASH_VALUE_TYPE #ifdef SPIDER_HAS_HASH_VALUE_TYPE
...@@ -8538,12 +8598,13 @@ void spider_set_tmp_share_pointer( ...@@ -8538,12 +8598,13 @@ void spider_set_tmp_share_pointer(
tmp_share->tgt_default_files = &tmp_connect_info[13]; tmp_share->tgt_default_files = &tmp_connect_info[13];
tmp_share->tgt_default_groups = &tmp_connect_info[14]; tmp_share->tgt_default_groups = &tmp_connect_info[14];
tmp_share->tgt_dsns = &tmp_connect_info[15]; tmp_share->tgt_dsns = &tmp_connect_info[15];
tmp_share->tgt_pk_names = &tmp_connect_info[16]; tmp_share->tgt_filedsns = &tmp_connect_info[16];
tmp_share->tgt_sequence_names = &tmp_connect_info[17]; tmp_share->tgt_pk_names = &tmp_connect_info[17];
tmp_share->static_link_ids = &tmp_connect_info[18]; tmp_share->tgt_sequence_names = &tmp_connect_info[18];
tmp_share->static_link_ids = &tmp_connect_info[19];
#if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET)
tmp_share->hs_read_socks = &tmp_connect_info[19]; tmp_share->hs_read_socks = &tmp_connect_info[20];
tmp_share->hs_write_socks = &tmp_connect_info[20]; tmp_share->hs_write_socks = &tmp_connect_info[21];
#endif #endif
tmp_share->tgt_ports = &tmp_long[0]; tmp_share->tgt_ports = &tmp_long[0];
tmp_share->tgt_ssl_vscs = &tmp_long[1]; tmp_share->tgt_ssl_vscs = &tmp_long[1];
...@@ -8593,12 +8654,13 @@ void spider_set_tmp_share_pointer( ...@@ -8593,12 +8654,13 @@ void spider_set_tmp_share_pointer(
tmp_share->tgt_default_files_lengths = &tmp_connect_info_length[13]; tmp_share->tgt_default_files_lengths = &tmp_connect_info_length[13];
tmp_share->tgt_default_groups_lengths = &tmp_connect_info_length[14]; tmp_share->tgt_default_groups_lengths = &tmp_connect_info_length[14];
tmp_share->tgt_dsns_lengths = &tmp_connect_info_length[15]; tmp_share->tgt_dsns_lengths = &tmp_connect_info_length[15];
tmp_share->tgt_pk_names_lengths = &tmp_connect_info_length[16]; tmp_share->tgt_filedsns_lengths = &tmp_connect_info_length[16];
tmp_share->tgt_sequence_names_lengths = &tmp_connect_info_length[17]; tmp_share->tgt_pk_names_lengths = &tmp_connect_info_length[17];
tmp_share->static_link_ids_lengths = &tmp_connect_info_length[18]; tmp_share->tgt_sequence_names_lengths = &tmp_connect_info_length[18];
tmp_share->static_link_ids_lengths = &tmp_connect_info_length[19];
#if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET)
tmp_share->hs_read_socks_lengths = &tmp_connect_info_length[19]; tmp_share->hs_read_socks_lengths = &tmp_connect_info_length[20];
tmp_share->hs_write_socks_lengths = &tmp_connect_info_length[20]; tmp_share->hs_write_socks_lengths = &tmp_connect_info_length[21];
#endif #endif
tmp_share->server_names_length = 1; tmp_share->server_names_length = 1;
tmp_share->tgt_table_names_length = 1; tmp_share->tgt_table_names_length = 1;
...@@ -8616,6 +8678,7 @@ void spider_set_tmp_share_pointer( ...@@ -8616,6 +8678,7 @@ void spider_set_tmp_share_pointer(
tmp_share->tgt_default_files_length = 1; tmp_share->tgt_default_files_length = 1;
tmp_share->tgt_default_groups_length = 1; tmp_share->tgt_default_groups_length = 1;
tmp_share->tgt_dsns_length = 1; tmp_share->tgt_dsns_length = 1;
tmp_share->tgt_filedsns_length = 1;
tmp_share->tgt_pk_names_length = 1; tmp_share->tgt_pk_names_length = 1;
tmp_share->tgt_sequence_names_length = 1; tmp_share->tgt_sequence_names_length = 1;
tmp_share->static_link_ids_length = 1; tmp_share->static_link_ids_length = 1;
......
...@@ -506,6 +506,7 @@ int spider_create_trx_alter_table( ...@@ -506,6 +506,7 @@ int spider_create_trx_alter_table(
char **tmp_tgt_default_files; char **tmp_tgt_default_files;
char **tmp_tgt_default_groups; char **tmp_tgt_default_groups;
char **tmp_tgt_dsns; char **tmp_tgt_dsns;
char **tmp_tgt_filedsns;
char **tmp_static_link_ids; char **tmp_static_link_ids;
uint *tmp_server_names_lengths; uint *tmp_server_names_lengths;
uint *tmp_tgt_table_names_lengths; uint *tmp_tgt_table_names_lengths;
...@@ -523,6 +524,7 @@ int spider_create_trx_alter_table( ...@@ -523,6 +524,7 @@ int spider_create_trx_alter_table(
uint *tmp_tgt_default_files_lengths; uint *tmp_tgt_default_files_lengths;
uint *tmp_tgt_default_groups_lengths; uint *tmp_tgt_default_groups_lengths;
uint *tmp_tgt_dsns_lengths; uint *tmp_tgt_dsns_lengths;
uint *tmp_tgt_filedsns_lengths;
uint *tmp_static_link_ids_lengths; uint *tmp_static_link_ids_lengths;
long *tmp_tgt_ports; long *tmp_tgt_ports;
long *tmp_tgt_ssl_vscs; long *tmp_tgt_ssl_vscs;
...@@ -544,6 +546,7 @@ int spider_create_trx_alter_table( ...@@ -544,6 +546,7 @@ int spider_create_trx_alter_table(
char *tmp_tgt_default_files_char; char *tmp_tgt_default_files_char;
char *tmp_tgt_default_groups_char; char *tmp_tgt_default_groups_char;
char *tmp_tgt_dsns_char; char *tmp_tgt_dsns_char;
char *tmp_tgt_filedsns_char;
char *tmp_static_link_ids_char; char *tmp_static_link_ids_char;
uint old_elements; uint old_elements;
...@@ -571,6 +574,7 @@ int spider_create_trx_alter_table( ...@@ -571,6 +574,7 @@ int spider_create_trx_alter_table(
&tmp_tgt_default_files, (uint) (sizeof(char *) * share->all_link_count), &tmp_tgt_default_files, (uint) (sizeof(char *) * share->all_link_count),
&tmp_tgt_default_groups, (uint) (sizeof(char *) * share->all_link_count), &tmp_tgt_default_groups, (uint) (sizeof(char *) * share->all_link_count),
&tmp_tgt_dsns, (uint) (sizeof(char *) * share->all_link_count), &tmp_tgt_dsns, (uint) (sizeof(char *) * share->all_link_count),
&tmp_tgt_filedsns, (uint) (sizeof(char *) * share->all_link_count),
&tmp_static_link_ids, (uint) (sizeof(char *) * share->all_link_count), &tmp_static_link_ids, (uint) (sizeof(char *) * share->all_link_count),
&tmp_server_names_lengths, (uint) (sizeof(uint) * share->all_link_count), &tmp_server_names_lengths, (uint) (sizeof(uint) * share->all_link_count),
...@@ -597,6 +601,7 @@ int spider_create_trx_alter_table( ...@@ -597,6 +601,7 @@ int spider_create_trx_alter_table(
&tmp_tgt_default_groups_lengths, &tmp_tgt_default_groups_lengths,
(uint) (sizeof(uint) * share->all_link_count), (uint) (sizeof(uint) * share->all_link_count),
&tmp_tgt_dsns_lengths, (uint) (sizeof(uint) * share->all_link_count), &tmp_tgt_dsns_lengths, (uint) (sizeof(uint) * share->all_link_count),
&tmp_tgt_filedsns_lengths, (uint) (sizeof(uint) * share->all_link_count),
&tmp_static_link_ids_lengths, &tmp_static_link_ids_lengths,
(uint) (sizeof(uint) * share->all_link_count), (uint) (sizeof(uint) * share->all_link_count),
...@@ -638,6 +643,8 @@ int spider_create_trx_alter_table( ...@@ -638,6 +643,8 @@ int spider_create_trx_alter_table(
(share_alter->tmp_tgt_default_groups_charlen + 1)), (share_alter->tmp_tgt_default_groups_charlen + 1)),
&tmp_tgt_dsns_char, (uint) (sizeof(char) * &tmp_tgt_dsns_char, (uint) (sizeof(char) *
(share_alter->tmp_tgt_dsns_charlen + 1)), (share_alter->tmp_tgt_dsns_charlen + 1)),
&tmp_tgt_filedsns_char, (uint) (sizeof(char) *
(share_alter->tmp_tgt_filedsns_charlen + 1)),
&tmp_static_link_ids_char, (uint) (sizeof(char) * &tmp_static_link_ids_char, (uint) (sizeof(char) *
(share_alter->tmp_static_link_ids_charlen + 1)), (share_alter->tmp_static_link_ids_charlen + 1)),
NullS)) NullS))
...@@ -674,6 +681,7 @@ int spider_create_trx_alter_table( ...@@ -674,6 +681,7 @@ int spider_create_trx_alter_table(
alter_table->tmp_tgt_default_files = tmp_tgt_default_files; alter_table->tmp_tgt_default_files = tmp_tgt_default_files;
alter_table->tmp_tgt_default_groups = tmp_tgt_default_groups; alter_table->tmp_tgt_default_groups = tmp_tgt_default_groups;
alter_table->tmp_tgt_dsns = tmp_tgt_dsns; alter_table->tmp_tgt_dsns = tmp_tgt_dsns;
alter_table->tmp_tgt_filedsns = tmp_tgt_filedsns;
alter_table->tmp_static_link_ids = tmp_static_link_ids; alter_table->tmp_static_link_ids = tmp_static_link_ids;
alter_table->tmp_tgt_ports = tmp_tgt_ports; alter_table->tmp_tgt_ports = tmp_tgt_ports;
...@@ -698,6 +706,7 @@ int spider_create_trx_alter_table( ...@@ -698,6 +706,7 @@ int spider_create_trx_alter_table(
alter_table->tmp_tgt_default_files_lengths = tmp_tgt_default_files_lengths; alter_table->tmp_tgt_default_files_lengths = tmp_tgt_default_files_lengths;
alter_table->tmp_tgt_default_groups_lengths = tmp_tgt_default_groups_lengths; alter_table->tmp_tgt_default_groups_lengths = tmp_tgt_default_groups_lengths;
alter_table->tmp_tgt_dsns_lengths = tmp_tgt_dsns_lengths; alter_table->tmp_tgt_dsns_lengths = tmp_tgt_dsns_lengths;
alter_table->tmp_tgt_filedsns_lengths = tmp_tgt_filedsns_lengths;
alter_table->tmp_static_link_ids_lengths = tmp_static_link_ids_lengths; alter_table->tmp_static_link_ids_lengths = tmp_static_link_ids_lengths;
for(roop_count = 0; roop_count < (int) share->all_link_count; roop_count++) for(roop_count = 0; roop_count < (int) share->all_link_count; roop_count++)
...@@ -804,6 +813,12 @@ int spider_create_trx_alter_table( ...@@ -804,6 +813,12 @@ int spider_create_trx_alter_table(
tmp_tgt_dsns_char += tmp_tgt_dsns_char +=
share_alter->tmp_tgt_dsns_lengths[roop_count] + 1; share_alter->tmp_tgt_dsns_lengths[roop_count] + 1;
tmp_tgt_filedsns[roop_count] = tmp_tgt_filedsns_char;
memcpy(tmp_tgt_filedsns_char, share_alter->tmp_tgt_filedsns[roop_count],
sizeof(char) * share_alter->tmp_tgt_filedsns_lengths[roop_count]);
tmp_tgt_filedsns_char +=
share_alter->tmp_tgt_filedsns_lengths[roop_count] + 1;
if (share_alter->tmp_static_link_ids[roop_count]) if (share_alter->tmp_static_link_ids[roop_count])
{ {
tmp_static_link_ids[roop_count] = tmp_static_link_ids_char; tmp_static_link_ids[roop_count] = tmp_static_link_ids_char;
...@@ -859,6 +874,8 @@ int spider_create_trx_alter_table( ...@@ -859,6 +874,8 @@ int spider_create_trx_alter_table(
sizeof(uint) * share->all_link_count); sizeof(uint) * share->all_link_count);
memcpy(tmp_tgt_dsns_lengths, share_alter->tmp_tgt_dsns_lengths, memcpy(tmp_tgt_dsns_lengths, share_alter->tmp_tgt_dsns_lengths,
sizeof(uint) * share->all_link_count); sizeof(uint) * share->all_link_count);
memcpy(tmp_tgt_filedsns_lengths, share_alter->tmp_tgt_filedsns_lengths,
sizeof(uint) * share->all_link_count);
memcpy(tmp_static_link_ids_lengths, memcpy(tmp_static_link_ids_lengths,
share_alter->tmp_static_link_ids_lengths, share_alter->tmp_static_link_ids_lengths,
sizeof(uint) * share->all_link_count); sizeof(uint) * share->all_link_count);
...@@ -895,6 +912,8 @@ int spider_create_trx_alter_table( ...@@ -895,6 +912,8 @@ int spider_create_trx_alter_table(
share_alter->tmp_tgt_default_groups_length; share_alter->tmp_tgt_default_groups_length;
alter_table->tmp_tgt_dsns_length = alter_table->tmp_tgt_dsns_length =
share_alter->tmp_tgt_dsns_length; share_alter->tmp_tgt_dsns_length;
alter_table->tmp_tgt_filedsns_length =
share_alter->tmp_tgt_filedsns_length;
alter_table->tmp_static_link_ids_length = alter_table->tmp_static_link_ids_length =
share_alter->tmp_static_link_ids_length; share_alter->tmp_static_link_ids_length;
alter_table->tmp_tgt_ports_length = alter_table->tmp_tgt_ports_length =
...@@ -1108,6 +1127,16 @@ bool spider_cmp_trx_alter_table( ...@@ -1108,6 +1127,16 @@ bool spider_cmp_trx_alter_table(
cmp2->tmp_tgt_dsns[roop_count]) cmp2->tmp_tgt_dsns[roop_count])
) )
) || ) ||
(
cmp1->tmp_tgt_filedsns[roop_count] !=
cmp2->tmp_tgt_filedsns[roop_count] &&
(
!cmp1->tmp_tgt_filedsns[roop_count] ||
!cmp2->tmp_tgt_filedsns[roop_count] ||
strcmp(cmp1->tmp_tgt_filedsns[roop_count],
cmp2->tmp_tgt_filedsns[roop_count])
)
) ||
( (
cmp1->tmp_static_link_ids[roop_count] != cmp1->tmp_static_link_ids[roop_count] !=
cmp2->tmp_static_link_ids[roop_count] && cmp2->tmp_static_link_ids[roop_count] &&
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment