Skip to content

Commit

Permalink
add a table parameter "driver" to Spider
Browse files Browse the repository at this point in the history
  • Loading branch information
Kentoku committed Aug 6, 2020
1 parent 0dffe33 commit 5585c9f
Show file tree
Hide file tree
Showing 8 changed files with 240 additions and 27 deletions.
13 changes: 12 additions & 1 deletion storage/spider/spd_conn.cc
Original file line number Diff line number Diff line change
Expand Up @@ -566,7 +566,7 @@ SPIDER_CONN *spider_create_conn(
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_ssl_cipher, *tmp_ssl_key, *tmp_default_file, *tmp_default_group;
char *tmp_dsn, *tmp_filedsn;
char *tmp_dsn, *tmp_filedsn, *tmp_driver;
DBUG_ENTER("spider_create_conn");

if (unlikely(!UTC))
Expand Down Expand Up @@ -620,6 +620,8 @@ SPIDER_CONN *spider_create_conn(
(uint) (share->tgt_dsns_lengths[link_idx] + 1),
&tmp_filedsn,
(uint) (share->tgt_filedsns_lengths[link_idx] + 1),
&tmp_driver,
(uint) (share->tgt_drivers_lengths[link_idx] + 1),
&need_mon, (uint) (sizeof(int)),
NullS))
) {
Expand Down Expand Up @@ -737,6 +739,15 @@ SPIDER_CONN *spider_create_conn(
share->tgt_filedsns_lengths[link_idx]);
} else
conn->tgt_filedsn = NULL;
conn->tgt_driver_length =
share->tgt_drivers_lengths[link_idx];
if (conn->tgt_driver_length)
{
conn->tgt_driver = tmp_driver;
memcpy(conn->tgt_driver, share->tgt_drivers[link_idx],
share->tgt_drivers_lengths[link_idx]);
} else
conn->tgt_driver = NULL;
conn->tgt_port = share->tgt_ports[link_idx];
conn->tgt_ssl_vsc = share->tgt_ssl_vscs[link_idx];
conn->dbton_id = share->sql_dbton_ids[link_idx];
Expand Down
28 changes: 26 additions & 2 deletions storage/spider/spd_direct_sql.cc
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,8 @@ int spider_udf_direct_sql_create_conn_key(
+ direct_sql->tgt_default_file_length + 1
+ direct_sql->tgt_default_group_length + 1
+ direct_sql->tgt_dsn_length + 1
+ direct_sql->tgt_filedsn_length;
+ direct_sql->tgt_filedsn_length + 1
+ direct_sql->tgt_driver_length;
#if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET)
} else {
direct_sql->conn_key_length
Expand Down Expand Up @@ -411,6 +412,13 @@ int spider_udf_direct_sql_create_conn_key(
tmp_name = strmov(tmp_name + 1, direct_sql->tgt_filedsn);
} else
tmp_name++;
if (direct_sql->tgt_driver)
{
DBUG_PRINT("info",("spider tgt_driver=%s",
direct_sql->tgt_driver));
tmp_name = strmov(tmp_name + 1, direct_sql->tgt_driver);
} else
tmp_name++;
#if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET)
}
#endif
Expand All @@ -430,7 +438,7 @@ SPIDER_CONN *spider_udf_direct_sql_create_conn(
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_ssl_cipher, *tmp_ssl_key, *tmp_default_file, *tmp_default_group;
char *tmp_dsn, *tmp_filedsn;
char *tmp_dsn, *tmp_filedsn, *tmp_driver;
int *need_mon;
bool tables_on_different_db_are_joinable = TRUE;
DBUG_ENTER("spider_udf_direct_sql_create_conn");
Expand Down Expand Up @@ -473,6 +481,8 @@ SPIDER_CONN *spider_udf_direct_sql_create_conn(
(uint) (direct_sql->tgt_dsn_length + 1),
&tmp_filedsn,
(uint) (direct_sql->tgt_filedsn_length + 1),
&tmp_driver,
(uint) (direct_sql->tgt_driver_length + 1),
&need_mon, (uint) (sizeof(int)),
NullS))
) {
Expand Down Expand Up @@ -605,6 +615,14 @@ SPIDER_CONN *spider_udf_direct_sql_create_conn(
direct_sql->tgt_filedsn_length);
} else
conn->tgt_filedsn = NULL;
conn->tgt_driver_length = direct_sql->tgt_driver_length;
if (conn->tgt_driver_length)
{
conn->tgt_driver = tmp_driver;
memcpy(conn->tgt_driver, direct_sql->tgt_driver,
direct_sql->tgt_driver_length);
} else
conn->tgt_driver = NULL;
conn->tgt_ssl_vsc = direct_sql->tgt_ssl_vsc;
#if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET)
} else {
Expand Down Expand Up @@ -1275,6 +1293,7 @@ int spider_udf_parse_direct_sql_param(
SPIDER_PARAM_INT("cto", connect_timeout, 0);
SPIDER_PARAM_STR("dff", tgt_default_file);
SPIDER_PARAM_STR("dfg", tgt_default_group);
SPIDER_PARAM_STR("drv", tgt_driver);
SPIDER_PARAM_STR("dsn", tgt_dsn);
SPIDER_PARAM_STR("fds", tgt_filedsn);
SPIDER_PARAM_LONGLONG("prt", priority, 0);
Expand Down Expand Up @@ -1302,6 +1321,7 @@ int spider_udf_parse_direct_sql_param(
error_num = param_string_parse.print_param_error();
goto error;
case 6:
SPIDER_PARAM_STR("driver", tgt_driver);
SPIDER_PARAM_STR("server", server_name);
SPIDER_PARAM_STR("socket", tgt_socket);
SPIDER_PARAM_HINT_WITH_MAX("iop", iop, 3, direct_sql->table_count, 0, 2);
Expand Down Expand Up @@ -1709,6 +1729,10 @@ void spider_udf_free_direct_sql_alloc(
{
spider_free(spider_current_trx, direct_sql->tgt_filedsn, MYF(0));
}
if (direct_sql->tgt_driver)
{
spider_free(spider_current_trx, direct_sql->tgt_driver, MYF(0));
}
if (direct_sql->conn_key)
{
spider_free(spider_current_trx, direct_sql->conn_key, MYF(0));
Expand Down
14 changes: 13 additions & 1 deletion storage/spider/spd_include.h
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ const char SPIDER_empty_string = "";
#define SPIDER_LINK_MON_DRAW_FEW_MON 1
#define SPIDER_LINK_MON_DRAW 2

#define SPIDER_TMP_SHARE_CHAR_PTR_COUNT 22
#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
Expand Down Expand Up @@ -353,6 +353,7 @@ typedef struct st_spider_alter_table
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;
Expand All @@ -376,6 +377,7 @@ typedef struct st_spider_alter_table
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;
Expand All @@ -395,6 +397,7 @@ typedef struct st_spider_alter_table
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;
Expand All @@ -414,6 +417,7 @@ typedef struct st_spider_alter_table
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;
Expand Down Expand Up @@ -500,6 +504,7 @@ typedef struct st_spider_conn
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)
Expand All @@ -522,6 +527,7 @@ typedef struct st_spider_conn
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;
#endif
Expand Down Expand Up @@ -1130,6 +1136,7 @@ typedef struct st_spider_share
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;
Expand Down Expand Up @@ -1187,6 +1194,7 @@ typedef struct st_spider_share
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;
Expand Down Expand Up @@ -1219,6 +1227,7 @@ typedef struct st_spider_share
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;
Expand Down Expand Up @@ -1247,6 +1256,7 @@ typedef struct st_spider_share
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;
Expand Down Expand Up @@ -1384,6 +1394,7 @@ typedef struct st_spider_direct_sql
char *tgt_default_group;
char *tgt_dsn;
char *tgt_filedsn;
char *tgt_driver;
char *conn_key;
long tgt_port;
long tgt_ssl_vsc;
Expand All @@ -1404,6 +1415,7 @@ typedef struct st_spider_direct_sql
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
Expand Down
16 changes: 16 additions & 0 deletions storage/spider/spd_init_query.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ static LEX_STRING spider_init_queries[] = {
" 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"
)},
Expand All @@ -78,6 +79,7 @@ static LEX_STRING spider_init_queries[] = {
" 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,"
Expand Down Expand Up @@ -108,6 +110,7 @@ static LEX_STRING spider_init_queries[] = {
" 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,"
Expand Down Expand Up @@ -141,6 +144,7 @@ static LEX_STRING spider_init_queries[] = {
" 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"
)},
Expand Down Expand Up @@ -630,6 +634,18 @@ static LEX_STRING spider_init_queries[] = {
" 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(
Expand Down
Loading

0 comments on commit 5585c9f

Please sign in to comment.