Skip to content

Commit 0dffe33

Browse files
committed
add a table parameter "filedsn" to Spider
1 parent e685809 commit 0dffe33

File tree

8 files changed

+241
-28
lines changed

8 files changed

+241
-28
lines changed

storage/spider/spd_conn.cc

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -566,7 +566,7 @@ SPIDER_CONN *spider_create_conn(
566566
char *tmp_name, *tmp_host, *tmp_username, *tmp_password, *tmp_socket;
567567
char *tmp_wrapper, *tmp_db, *tmp_ssl_ca, *tmp_ssl_capath, *tmp_ssl_cert;
568568
char *tmp_ssl_cipher, *tmp_ssl_key, *tmp_default_file, *tmp_default_group;
569-
char *tmp_dsn;
569+
char *tmp_dsn, *tmp_filedsn;
570570
DBUG_ENTER("spider_create_conn");
571571

572572
if (unlikely(!UTC))
@@ -618,6 +618,8 @@ SPIDER_CONN *spider_create_conn(
618618
(uint) (share->tgt_default_groups_lengths[link_idx] + 1),
619619
&tmp_dsn,
620620
(uint) (share->tgt_dsns_lengths[link_idx] + 1),
621+
&tmp_filedsn,
622+
(uint) (share->tgt_filedsns_lengths[link_idx] + 1),
621623
&need_mon, (uint) (sizeof(int)),
622624
NullS))
623625
) {
@@ -726,6 +728,15 @@ SPIDER_CONN *spider_create_conn(
726728
share->tgt_dsns_lengths[link_idx]);
727729
} else
728730
conn->tgt_dsn = NULL;
731+
conn->tgt_filedsn_length =
732+
share->tgt_filedsns_lengths[link_idx];
733+
if (conn->tgt_filedsn_length)
734+
{
735+
conn->tgt_filedsn = tmp_filedsn;
736+
memcpy(conn->tgt_filedsn, share->tgt_filedsns[link_idx],
737+
share->tgt_filedsns_lengths[link_idx]);
738+
} else
739+
conn->tgt_filedsn = NULL;
729740
conn->tgt_port = share->tgt_ports[link_idx];
730741
conn->tgt_ssl_vsc = share->tgt_ssl_vscs[link_idx];
731742
conn->dbton_id = share->sql_dbton_ids[link_idx];

storage/spider/spd_direct_sql.cc

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,8 @@ int spider_udf_direct_sql_create_conn_key(
289289
+ 1 + 1
290290
+ direct_sql->tgt_default_file_length + 1
291291
+ direct_sql->tgt_default_group_length + 1
292-
+ direct_sql->tgt_dsn_length;
292+
+ direct_sql->tgt_dsn_length + 1
293+
+ direct_sql->tgt_filedsn_length;
293294
#if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET)
294295
} else {
295296
direct_sql->conn_key_length
@@ -403,6 +404,13 @@ int spider_udf_direct_sql_create_conn_key(
403404
tmp_name = strmov(tmp_name + 1, direct_sql->tgt_dsn);
404405
} else
405406
tmp_name++;
407+
if (direct_sql->tgt_filedsn)
408+
{
409+
DBUG_PRINT("info",("spider tgt_filedsn=%s",
410+
direct_sql->tgt_filedsn));
411+
tmp_name = strmov(tmp_name + 1, direct_sql->tgt_filedsn);
412+
} else
413+
tmp_name++;
406414
#if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET)
407415
}
408416
#endif
@@ -422,7 +430,7 @@ SPIDER_CONN *spider_udf_direct_sql_create_conn(
422430
char *tmp_name, *tmp_host, *tmp_username, *tmp_password, *tmp_socket;
423431
char *tmp_wrapper, *tmp_db, *tmp_ssl_ca, *tmp_ssl_capath, *tmp_ssl_cert;
424432
char *tmp_ssl_cipher, *tmp_ssl_key, *tmp_default_file, *tmp_default_group;
425-
char *tmp_dsn;
433+
char *tmp_dsn, *tmp_filedsn;
426434
int *need_mon;
427435
bool tables_on_different_db_are_joinable = TRUE;
428436
DBUG_ENTER("spider_udf_direct_sql_create_conn");
@@ -463,6 +471,8 @@ SPIDER_CONN *spider_udf_direct_sql_create_conn(
463471
(uint) (direct_sql->tgt_default_group_length + 1),
464472
&tmp_dsn,
465473
(uint) (direct_sql->tgt_dsn_length + 1),
474+
&tmp_filedsn,
475+
(uint) (direct_sql->tgt_filedsn_length + 1),
466476
&need_mon, (uint) (sizeof(int)),
467477
NullS))
468478
) {
@@ -587,6 +597,14 @@ SPIDER_CONN *spider_udf_direct_sql_create_conn(
587597
direct_sql->tgt_dsn_length);
588598
} else
589599
conn->tgt_dsn = NULL;
600+
conn->tgt_filedsn_length = direct_sql->tgt_filedsn_length;
601+
if (conn->tgt_filedsn_length)
602+
{
603+
conn->tgt_filedsn = tmp_filedsn;
604+
memcpy(conn->tgt_filedsn, direct_sql->tgt_filedsn,
605+
direct_sql->tgt_filedsn_length);
606+
} else
607+
conn->tgt_filedsn = NULL;
590608
conn->tgt_ssl_vsc = direct_sql->tgt_ssl_vsc;
591609
#if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET)
592610
} else {
@@ -1258,6 +1276,7 @@ int spider_udf_parse_direct_sql_param(
12581276
SPIDER_PARAM_STR("dff", tgt_default_file);
12591277
SPIDER_PARAM_STR("dfg", tgt_default_group);
12601278
SPIDER_PARAM_STR("dsn", tgt_dsn);
1279+
SPIDER_PARAM_STR("fds", tgt_filedsn);
12611280
SPIDER_PARAM_LONGLONG("prt", priority, 0);
12621281
SPIDER_PARAM_INT("rto", net_read_timeout, 0);
12631282
SPIDER_PARAM_STR("sca", tgt_ssl_ca);
@@ -1290,6 +1309,7 @@ int spider_udf_parse_direct_sql_param(
12901309
error_num = param_string_parse.print_param_error();
12911310
goto error;
12921311
case 7:
1312+
SPIDER_PARAM_STR("filedsn", tgt_filedsn);
12931313
SPIDER_PARAM_STR("wrapper", tgt_wrapper);
12941314
SPIDER_PARAM_STR("ssl_key", tgt_ssl_key);
12951315
error_num = param_string_parse.print_param_error();
@@ -1685,6 +1705,10 @@ void spider_udf_free_direct_sql_alloc(
16851705
{
16861706
spider_free(spider_current_trx, direct_sql->tgt_dsn, MYF(0));
16871707
}
1708+
if (direct_sql->tgt_filedsn)
1709+
{
1710+
spider_free(spider_current_trx, direct_sql->tgt_filedsn, MYF(0));
1711+
}
16881712
if (direct_sql->conn_key)
16891713
{
16901714
spider_free(spider_current_trx, direct_sql->conn_key, MYF(0));

storage/spider/spd_include.h

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ const char SPIDER_empty_string = "";
256256
#define SPIDER_LINK_MON_DRAW_FEW_MON 1
257257
#define SPIDER_LINK_MON_DRAW 2
258258

259-
#define SPIDER_TMP_SHARE_CHAR_PTR_COUNT 21
259+
#define SPIDER_TMP_SHARE_CHAR_PTR_COUNT 22
260260
#define SPIDER_TMP_SHARE_UINT_COUNT SPIDER_TMP_SHARE_CHAR_PTR_COUNT
261261
#define SPIDER_TMP_SHARE_LONG_COUNT 20
262262
#define SPIDER_TMP_SHARE_LONGLONG_COUNT 3
@@ -352,6 +352,7 @@ typedef struct st_spider_alter_table
352352
char **tmp_tgt_default_files;
353353
char **tmp_tgt_default_groups;
354354
char **tmp_tgt_dsns;
355+
char **tmp_tgt_filedsns;
355356
char **tmp_static_link_ids;
356357
long *tmp_tgt_ports;
357358
long *tmp_tgt_ssl_vscs;
@@ -374,6 +375,7 @@ typedef struct st_spider_alter_table
374375
uint *tmp_tgt_default_files_lengths;
375376
uint *tmp_tgt_default_groups_lengths;
376377
uint *tmp_tgt_dsns_lengths;
378+
uint *tmp_tgt_filedsns_lengths;
377379
uint *tmp_static_link_ids_lengths;
378380

379381
uint tmp_server_names_charlen;
@@ -392,6 +394,7 @@ typedef struct st_spider_alter_table
392394
uint tmp_tgt_default_files_charlen;
393395
uint tmp_tgt_default_groups_charlen;
394396
uint tmp_tgt_dsns_charlen;
397+
uint tmp_tgt_filedsns_charlen;
395398
uint tmp_static_link_ids_charlen;
396399

397400
uint tmp_server_names_length;
@@ -410,6 +413,7 @@ typedef struct st_spider_alter_table
410413
uint tmp_tgt_default_files_length;
411414
uint tmp_tgt_default_groups_length;
412415
uint tmp_tgt_dsns_length;
416+
uint tmp_tgt_filedsns_length;
413417
uint tmp_static_link_ids_length;
414418
uint tmp_tgt_ports_length;
415419
uint tmp_tgt_ssl_vscs_length;
@@ -495,6 +499,7 @@ typedef struct st_spider_conn
495499
char *tgt_default_file;
496500
char *tgt_default_group;
497501
char *tgt_dsn;
502+
char *tgt_filedsn;
498503
long tgt_port;
499504
long tgt_ssl_vsc;
500505
#if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET)
@@ -516,6 +521,7 @@ typedef struct st_spider_conn
516521
uint tgt_default_file_length;
517522
uint tgt_default_group_length;
518523
uint tgt_dsn_length;
524+
uint tgt_filedsn_length;
519525
#if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET)
520526
uint hs_sock_length;
521527
#endif
@@ -1123,6 +1129,7 @@ typedef struct st_spider_share
11231129
char **tgt_default_files;
11241130
char **tgt_default_groups;
11251131
char **tgt_dsns;
1132+
char **tgt_filedsns;
11261133
char **static_link_ids;
11271134
char **tgt_pk_names;
11281135
char **tgt_sequence_names;
@@ -1179,6 +1186,7 @@ typedef struct st_spider_share
11791186
uint *tgt_default_files_lengths;
11801187
uint *tgt_default_groups_lengths;
11811188
uint *tgt_dsns_lengths;
1189+
uint *tgt_filedsns_lengths;
11821190
uint *static_link_ids_lengths;
11831191
uint *tgt_pk_names_lengths;
11841192
uint *tgt_sequence_names_lengths;
@@ -1210,6 +1218,7 @@ typedef struct st_spider_share
12101218
uint tgt_default_files_charlen;
12111219
uint tgt_default_groups_charlen;
12121220
uint tgt_dsns_charlen;
1221+
uint tgt_filedsns_charlen;
12131222
uint static_link_ids_charlen;
12141223
uint tgt_pk_names_charlen;
12151224
uint tgt_sequence_names_charlen;
@@ -1237,6 +1246,7 @@ typedef struct st_spider_share
12371246
uint tgt_default_files_length;
12381247
uint tgt_default_groups_length;
12391248
uint tgt_dsns_length;
1249+
uint tgt_filedsns_length;
12401250
uint static_link_ids_length;
12411251
uint tgt_pk_names_length;
12421252
uint tgt_sequence_names_length;
@@ -1373,6 +1383,7 @@ typedef struct st_spider_direct_sql
13731383
char *tgt_default_file;
13741384
char *tgt_default_group;
13751385
char *tgt_dsn;
1386+
char *tgt_filedsn;
13761387
char *conn_key;
13771388
long tgt_port;
13781389
long tgt_ssl_vsc;
@@ -1392,6 +1403,7 @@ typedef struct st_spider_direct_sql
13921403
uint tgt_default_file_length;
13931404
uint tgt_default_group_length;
13941405
uint tgt_dsn_length;
1406+
uint tgt_filedsn_length;
13951407
uint conn_key_length;
13961408
uint dbton_id;
13971409
#ifdef SPIDER_HAS_HASH_VALUE_TYPE

storage/spider/spd_init_query.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ static LEX_STRING spider_init_queries[] = {
5252
" default_file text,"
5353
" default_group char(64) default null,"
5454
" dsn char(64) default null,"
55+
" filedsn text default null,"
5556
" key idx1 (data, format_id, gtrid_length, host)"
5657
") engine=MyISAM default charset=utf8 collate=utf8_bin"
5758
)},
@@ -76,6 +77,7 @@ static LEX_STRING spider_init_queries[] = {
7677
" default_file text,"
7778
" default_group char(64) default null,"
7879
" dsn char(64) default null,"
80+
" filedsn text default null,"
7981
" thread_id int default null,"
8082
" status char(8) not null default '',"
8183
" failed_time timestamp not null default current_timestamp,"
@@ -105,6 +107,7 @@ static LEX_STRING spider_init_queries[] = {
105107
" default_file text,"
106108
" default_group char(64) default null,"
107109
" dsn char(64) default null,"
110+
" filedsn text default null,"
108111
" tgt_db_name char(64) default null,"
109112
" tgt_table_name char(64) default null,"
110113
" link_status tinyint not null default 1,"
@@ -137,6 +140,7 @@ static LEX_STRING spider_init_queries[] = {
137140
" default_file text,"
138141
" default_group char(64) default null,"
139142
" dsn char(64) default null,"
143+
" filedsn text default null,"
140144
" primary key (db_name, table_name, link_id, sid)"
141145
") engine=MyISAM default charset=utf8 collate=utf8_bin"
142146
)},
@@ -614,6 +618,18 @@ static LEX_STRING spider_init_queries[] = {
614618
" call mysql.spider_fix_one_table('spider_xa_member', 'dsn',"
615619
" 'alter table mysql.spider_xa_member"
616620
" add column dsn char(64) default null after default_group');"
621+
" call mysql.spider_fix_one_table('spider_link_mon_servers', 'filedsn',"
622+
" 'alter table mysql.spider_link_mon_servers"
623+
" add column filedsn text default null after dsn');"
624+
" call mysql.spider_fix_one_table('spider_tables', 'filedsn',"
625+
" 'alter table mysql.spider_tables"
626+
" add column filedsn text default null after dsn');"
627+
" call mysql.spider_fix_one_table('spider_xa_failed_log', 'filedsn',"
628+
" 'alter table mysql.spider_xa_failed_log"
629+
" add column filedsn text default null after dsn');"
630+
" call mysql.spider_fix_one_table('spider_xa_member', 'filedsn',"
631+
" 'alter table mysql.spider_xa_member"
632+
" add column filedsn text default null after dsn');"
617633
"end;"
618634
)},
619635
{C_STRING_WITH_LEN(

0 commit comments

Comments
 (0)