Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
0dffe33c
Commit
0dffe33c
authored
Jul 01, 2020
by
Kentoku SHIBA
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add a table parameter "filedsn" to Spider
parent
e685809a
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
241 additions
and
28 deletions
+241
-28
storage/spider/spd_conn.cc
storage/spider/spd_conn.cc
+12
-1
storage/spider/spd_direct_sql.cc
storage/spider/spd_direct_sql.cc
+26
-2
storage/spider/spd_include.h
storage/spider/spd_include.h
+13
-1
storage/spider/spd_init_query.h
storage/spider/spd_init_query.h
+16
-0
storage/spider/spd_sys_table.cc
storage/spider/spd_sys_table.cc
+66
-8
storage/spider/spd_sys_table.h
storage/spider/spd_sys_table.h
+4
-4
storage/spider/spd_table.cc
storage/spider/spd_table.cc
+75
-12
storage/spider/spd_trx.cc
storage/spider/spd_trx.cc
+29
-0
No files found.
storage/spider/spd_conn.cc
View file @
0dffe33c
...
...
@@ -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
;
char
*
tmp_dsn
,
*
tmp_filedsn
;
DBUG_ENTER
(
"spider_create_conn"
);
if
(
unlikely
(
!
UTC
))
...
...
@@ -618,6 +618,8 @@ SPIDER_CONN *spider_create_conn(
(
uint
)
(
share
->
tgt_default_groups_lengths
[
link_idx
]
+
1
),
&
tmp_dsn
,
(
uint
)
(
share
->
tgt_dsns_lengths
[
link_idx
]
+
1
),
&
tmp_filedsn
,
(
uint
)
(
share
->
tgt_filedsns_lengths
[
link_idx
]
+
1
),
&
need_mon
,
(
uint
)
(
sizeof
(
int
)),
NullS
))
)
{
...
...
@@ -726,6 +728,15 @@ SPIDER_CONN *spider_create_conn(
share
->
tgt_dsns_lengths
[
link_idx
]);
}
else
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_ssl_vsc
=
share
->
tgt_ssl_vscs
[
link_idx
];
conn
->
dbton_id
=
share
->
sql_dbton_ids
[
link_idx
];
...
...
storage/spider/spd_direct_sql.cc
View file @
0dffe33c
...
...
@@ -289,7 +289,8 @@ int spider_udf_direct_sql_create_conn_key(
+
1
+
1
+
direct_sql
->
tgt_default_file_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)
}
else
{
direct_sql
->
conn_key_length
...
...
@@ -403,6 +404,13 @@ int spider_udf_direct_sql_create_conn_key(
tmp_name
=
strmov
(
tmp_name
+
1
,
direct_sql
->
tgt_dsn
);
}
else
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)
}
#endif
...
...
@@ -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_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
;
char
*
tmp_dsn
,
*
tmp_filedsn
;
int
*
need_mon
;
bool
tables_on_different_db_are_joinable
=
TRUE
;
DBUG_ENTER
(
"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
),
&
tmp_dsn
,
(
uint
)
(
direct_sql
->
tgt_dsn_length
+
1
),
&
tmp_filedsn
,
(
uint
)
(
direct_sql
->
tgt_filedsn_length
+
1
),
&
need_mon
,
(
uint
)
(
sizeof
(
int
)),
NullS
))
)
{
...
...
@@ -587,6 +597,14 @@ SPIDER_CONN *spider_udf_direct_sql_create_conn(
direct_sql
->
tgt_dsn_length
);
}
else
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
;
#if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET)
}
else
{
...
...
@@ -1258,6 +1276,7 @@ int spider_udf_parse_direct_sql_param(
SPIDER_PARAM_STR
(
"dff"
,
tgt_default_file
);
SPIDER_PARAM_STR
(
"dfg"
,
tgt_default_group
);
SPIDER_PARAM_STR
(
"dsn"
,
tgt_dsn
);
SPIDER_PARAM_STR
(
"fds"
,
tgt_filedsn
);
SPIDER_PARAM_LONGLONG
(
"prt"
,
priority
,
0
);
SPIDER_PARAM_INT
(
"rto"
,
net_read_timeout
,
0
);
SPIDER_PARAM_STR
(
"sca"
,
tgt_ssl_ca
);
...
...
@@ -1290,6 +1309,7 @@ int spider_udf_parse_direct_sql_param(
error_num
=
param_string_parse
.
print_param_error
();
goto
error
;
case
7
:
SPIDER_PARAM_STR
(
"filedsn"
,
tgt_filedsn
);
SPIDER_PARAM_STR
(
"wrapper"
,
tgt_wrapper
);
SPIDER_PARAM_STR
(
"ssl_key"
,
tgt_ssl_key
);
error_num
=
param_string_parse
.
print_param_error
();
...
...
@@ -1685,6 +1705,10 @@ void spider_udf_free_direct_sql_alloc(
{
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
)
{
spider_free
(
spider_current_trx
,
direct_sql
->
conn_key
,
MYF
(
0
));
...
...
storage/spider/spd_include.h
View file @
0dffe33c
...
...
@@ -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 2
1
#define SPIDER_TMP_SHARE_CHAR_PTR_COUNT 2
2
#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
...
...
@@ -352,6 +352,7 @@ typedef struct st_spider_alter_table
char
**
tmp_tgt_default_files
;
char
**
tmp_tgt_default_groups
;
char
**
tmp_tgt_dsns
;
char
**
tmp_tgt_filedsns
;
char
**
tmp_static_link_ids
;
long
*
tmp_tgt_ports
;
long
*
tmp_tgt_ssl_vscs
;
...
...
@@ -374,6 +375,7 @@ typedef struct st_spider_alter_table
uint
*
tmp_tgt_default_files_lengths
;
uint
*
tmp_tgt_default_groups_lengths
;
uint
*
tmp_tgt_dsns_lengths
;
uint
*
tmp_tgt_filedsns_lengths
;
uint
*
tmp_static_link_ids_lengths
;
uint
tmp_server_names_charlen
;
...
...
@@ -392,6 +394,7 @@ typedef struct st_spider_alter_table
uint
tmp_tgt_default_files_charlen
;
uint
tmp_tgt_default_groups_charlen
;
uint
tmp_tgt_dsns_charlen
;
uint
tmp_tgt_filedsns_charlen
;
uint
tmp_static_link_ids_charlen
;
uint
tmp_server_names_length
;
...
...
@@ -410,6 +413,7 @@ typedef struct st_spider_alter_table
uint
tmp_tgt_default_files_length
;
uint
tmp_tgt_default_groups_length
;
uint
tmp_tgt_dsns_length
;
uint
tmp_tgt_filedsns_length
;
uint
tmp_static_link_ids_length
;
uint
tmp_tgt_ports_length
;
uint
tmp_tgt_ssl_vscs_length
;
...
...
@@ -495,6 +499,7 @@ typedef struct st_spider_conn
char
*
tgt_default_file
;
char
*
tgt_default_group
;
char
*
tgt_dsn
;
char
*
tgt_filedsn
;
long
tgt_port
;
long
tgt_ssl_vsc
;
#if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET)
...
...
@@ -516,6 +521,7 @@ typedef struct st_spider_conn
uint
tgt_default_file_length
;
uint
tgt_default_group_length
;
uint
tgt_dsn_length
;
uint
tgt_filedsn_length
;
#if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET)
uint
hs_sock_length
;
#endif
...
...
@@ -1123,6 +1129,7 @@ typedef struct st_spider_share
char
**
tgt_default_files
;
char
**
tgt_default_groups
;
char
**
tgt_dsns
;
char
**
tgt_filedsns
;
char
**
static_link_ids
;
char
**
tgt_pk_names
;
char
**
tgt_sequence_names
;
...
...
@@ -1179,6 +1186,7 @@ typedef struct st_spider_share
uint
*
tgt_default_files_lengths
;
uint
*
tgt_default_groups_lengths
;
uint
*
tgt_dsns_lengths
;
uint
*
tgt_filedsns_lengths
;
uint
*
static_link_ids_lengths
;
uint
*
tgt_pk_names_lengths
;
uint
*
tgt_sequence_names_lengths
;
...
...
@@ -1210,6 +1218,7 @@ typedef struct st_spider_share
uint
tgt_default_files_charlen
;
uint
tgt_default_groups_charlen
;
uint
tgt_dsns_charlen
;
uint
tgt_filedsns_charlen
;
uint
static_link_ids_charlen
;
uint
tgt_pk_names_charlen
;
uint
tgt_sequence_names_charlen
;
...
...
@@ -1237,6 +1246,7 @@ typedef struct st_spider_share
uint
tgt_default_files_length
;
uint
tgt_default_groups_length
;
uint
tgt_dsns_length
;
uint
tgt_filedsns_length
;
uint
static_link_ids_length
;
uint
tgt_pk_names_length
;
uint
tgt_sequence_names_length
;
...
...
@@ -1373,6 +1383,7 @@ typedef struct st_spider_direct_sql
char
*
tgt_default_file
;
char
*
tgt_default_group
;
char
*
tgt_dsn
;
char
*
tgt_filedsn
;
char
*
conn_key
;
long
tgt_port
;
long
tgt_ssl_vsc
;
...
...
@@ -1392,6 +1403,7 @@ typedef struct st_spider_direct_sql
uint
tgt_default_file_length
;
uint
tgt_default_group_length
;
uint
tgt_dsn_length
;
uint
tgt_filedsn_length
;
uint
conn_key_length
;
uint
dbton_id
;
#ifdef SPIDER_HAS_HASH_VALUE_TYPE
...
...
storage/spider/spd_init_query.h
View file @
0dffe33c
...
...
@@ -52,6 +52,7 @@ static LEX_STRING spider_init_queries[] = {
" default_file text,"
" default_group char(64) default null,"
" dsn char(64) default null,"
" filedsn text default null,"
" key idx1 (data, format_id, gtrid_length, host)"
") engine=MyISAM default charset=utf8 collate=utf8_bin"
)},
...
...
@@ -76,6 +77,7 @@ static LEX_STRING spider_init_queries[] = {
" default_file text,"
" default_group char(64) default null,"
" dsn char(64) default null,"
" filedsn text default null,"
" thread_id int default null,"
" status char(8) not null default '',"
" failed_time timestamp not null default current_timestamp,"
...
...
@@ -105,6 +107,7 @@ static LEX_STRING spider_init_queries[] = {
" default_file text,"
" default_group char(64) default null,"
" dsn char(64) default null,"
" filedsn text default null,"
" tgt_db_name char(64) default null,"
" tgt_table_name char(64) default null,"
" link_status tinyint not null default 1,"
...
...
@@ -137,6 +140,7 @@ static LEX_STRING spider_init_queries[] = {
" default_file text,"
" default_group char(64) default null,"
" dsn char(64) default null,"
" filedsn text default null,"
" primary key (db_name, table_name, link_id, sid)"
") engine=MyISAM default charset=utf8 collate=utf8_bin"
)},
...
...
@@ -614,6 +618,18 @@ static LEX_STRING spider_init_queries[] = {
" 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');"
"end;"
)},
{
C_STRING_WITH_LEN
(
...
...
storage/spider/spd_sys_table.cc
View file @
0dffe33c
...
...
@@ -64,9 +64,10 @@ extern Time_zone *spd_tz_system;
#define SPIDER_XA_MEMBER_DEFAULT_FILE_POS 16
#define SPIDER_XA_MEMBER_DEFAULT_GROUP_POS 17
#define SPIDER_XA_MEMBER_DSN_POS 18
#define SPIDER_XA_FAILED_LOG_THREAD_ID_POS 19
#define SPIDER_XA_FAILED_LOG_STATUS_POS 20
#define SPIDER_XA_FAILED_LOG_FAILED_TIME_POS 21
#define SPIDER_XA_MEMBER_FILEDSN_POS 19
#define SPIDER_XA_FAILED_LOG_THREAD_ID_POS 20
#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_TABLE_NAME_POS 1
...
...
@@ -89,11 +90,12 @@ extern Time_zone *spd_tz_system;
#define SPIDER_TABLES_DEFAULT_FILE_POS 18
#define SPIDER_TABLES_DEFAULT_GROUP_POS 19
#define SPIDER_TABLES_DSN_POS 20
#define SPIDER_TABLES_TGT_DB_NAME_POS 21
#define SPIDER_TABLES_TGT_TABLE_NAME_POS 22
#define SPIDER_TABLES_LINK_STATUS_POS 23
#define SPIDER_TABLES_BLOCK_STATUS_POS 24
#define SPIDER_TABLES_STATIC_LINK_ID_POS 25
#define SPIDER_TABLES_FILEDSN_POS 21
#define SPIDER_TABLES_TGT_DB_NAME_POS 22
#define SPIDER_TABLES_TGT_TABLE_NAME_POS 23
#define SPIDER_TABLES_LINK_STATUS_POS 24
#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_TABLE_NAME_POS 1
...
...
@@ -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_GROUP_POS 18
#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_TABLE_NAME_POS 1
...
...
@@ -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
]
->
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
;
}
...
...
@@ -1420,6 +1434,17 @@ void spider_store_tables_connect_info(
table
->
field
[
SPIDER_TABLES_DSN_POS
]
->
set_null
();
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
])
{
table
->
field
[
SPIDER_TABLES_TGT_DB_NAME_POS
]
->
set_notnull
();
...
...
@@ -2405,6 +2430,17 @@ int spider_get_sys_server_info(
share
->
tgt_dsns_lengths
[
link_idx
]
=
0
;
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
);
}
...
...
@@ -2663,6 +2699,17 @@ int spider_get_sys_tables_connect_info(
share
->
tgt_dsns_lengths
[
link_idx
]
=
0
;
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
(
!
table
->
field
[
SPIDER_TABLES_TGT_DB_NAME_POS
]
->
is_null
()
&&
(
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(
share
->
tgt_dsns_lengths
[
link_idx
]
=
0
;
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
);
}
...
...
storage/spider/spd_sys_table.h
View file @
0dffe33c
...
...
@@ -51,15 +51,15 @@
#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
19
#define SPIDER_SYS_XA_MEMBER_COL_CNT
20
#define SPIDER_SYS_XA_MEMBER_PK_COL_CNT 6
#define SPIDER_SYS_TABLES_COL_CNT 2
6
#define SPIDER_SYS_TABLES_COL_CNT 2
7
#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 2
0
#define SPIDER_SYS_LINK_MON_TABLE_COL_CNT 2
1
#define SPIDER_SYS_LINK_FAILED_TABLE_COL_CNT 4
#define SPIDER_SYS_XA_FAILED_TABLE_COL_CNT 2
2
#define SPIDER_SYS_XA_FAILED_TABLE_COL_CNT 2
3
#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
...
...
storage/spider/spd_table.cc
View file @
0dffe33c
...
...
@@ -810,6 +810,17 @@ int spider_free_share_alloc(
}
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
)
{
for
(
roop_count
=
0
;
roop_count
<
(
int
)
share
->
tgt_pk_names_length
;
...
...
@@ -1020,6 +1031,11 @@ void spider_free_tmp_share_alloc(
spider_free
(
spider_current_trx
,
share
->
tgt_dsns
[
0
],
MYF
(
0
));
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
])
{
spider_free
(
spider_current_trx
,
share
->
tgt_pk_names
[
0
],
MYF
(
0
));
...
...
@@ -2332,6 +2348,7 @@ int spider_parse_connect_info(
#ifdef HA_CAN_FORCE_BULK_UPDATE
SPIDER_PARAM_INT_WITH_MAX
(
"fbu"
,
force_bulk_update
,
0
,
1
);
#endif
SPIDER_PARAM_STR_LIST
(
"fds"
,
tgt_filedsns
);
SPIDER_PARAM_LONGLONG
(
"frd"
,
first_read
,
0
);
#if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET)
SPIDER_PARAM_LONGLONG
(
"hrf"
,
hs_result_free_size
,
0
);
...
...
@@ -2450,6 +2467,7 @@ int spider_parse_connect_info(
error_num
=
connect_string_parse
.
print_param_error
();
goto
error
;
case
7
:
SPIDER_PARAM_STR_LIST
(
"filedsn"
,
tgt_filedsns
);
SPIDER_PARAM_STR_LIST
(
"wrapper"
,
tgt_wrappers
);
SPIDER_PARAM_STR_LIST
(
"ssl_key"
,
tgt_ssl_keys
);
SPIDER_PARAM_STR_LIST
(
"pk_name"
,
tgt_pk_names
);
...
...
@@ -2743,6 +2761,8 @@ int spider_parse_connect_info(
share
->
all_link_count
=
share
->
tgt_default_groups_length
;
if
(
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
)
share
->
all_link_count
=
share
->
tgt_pk_names_length
;
if
(
share
->
all_link_count
<
share
->
tgt_sequence_names_length
)
...
...
@@ -2915,6 +2935,13 @@ int spider_parse_connect_info(
&
share
->
tgt_dsns_charlen
,
share
->
all_link_count
)))
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
(
&
share
->
tgt_pk_names
,
&
share
->
tgt_pk_names_lengths
,
...
...
@@ -3109,6 +3136,8 @@ int spider_parse_connect_info(
(
uint
)
(
sizeof
(
char
*
)
*
share
->
all_link_count
),
&
share_alter
->
tmp_tgt_dsns
,
(
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
,
(
uint
)
(
sizeof
(
char
*
)
*
share
->
all_link_count
),
&
share_alter
->
tmp_server_names_lengths
,
...
...
@@ -3143,6 +3172,8 @@ int spider_parse_connect_info(
(
uint
)
(
sizeof
(
uint
*
)
*
share
->
all_link_count
),
&
share_alter
->
tmp_tgt_dsns_lengths
,
(
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
,
(
uint
)
(
sizeof
(
uint
*
)
*
share
->
all_link_count
),
&
share_alter
->
tmp_tgt_ports
,
...
...
@@ -3192,6 +3223,8 @@ int spider_parse_connect_info(
sizeof
(
char
*
)
*
share
->
all_link_count
);
memcpy
(
share_alter
->
tmp_tgt_dsns
,
share
->
tgt_dsns
,
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
,
sizeof
(
char
*
)
*
share
->
all_link_count
);
...
...
@@ -3250,6 +3283,9 @@ int spider_parse_connect_info(
memcpy
(
share_alter
->
tmp_tgt_dsns_lengths
,
share
->
tgt_dsns_lengths
,
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
,
share
->
static_link_ids_lengths
,
sizeof
(
uint
)
*
share
->
all_link_count
);
...
...
@@ -3273,6 +3309,8 @@ int spider_parse_connect_info(
share
->
tgt_default_groups_charlen
;
share_alter
->
tmp_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
->
static_link_ids_charlen
;
...
...
@@ -3294,6 +3332,8 @@ int spider_parse_connect_info(
share
->
tgt_default_groups_length
;
share_alter
->
tmp_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
->
static_link_ids_length
;
share_alter
->
tmp_tgt_ports_length
=
share
->
tgt_ports_length
;
...
...
@@ -3524,7 +3564,19 @@ int spider_parse_connect_info(
{
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_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
;
}
...
...
@@ -4367,7 +4419,8 @@ int spider_create_conn_keys(
+
1
+
1
+
share
->
tgt_default_files_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
;
#if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET)
hs_r_conn_keys_lengths
[
roop_count
]
...
...
@@ -4551,6 +4604,13 @@ int spider_create_conn_keys(
tmp_name
=
strmov
(
tmp_name
+
1
,
share
->
tgt_dsns
[
roop_count
]);
}
else
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
++
;
#ifdef SPIDER_HAS_HASH_VALUE_TYPE
...
...
@@ -8538,12 +8598,13 @@ void spider_set_tmp_share_pointer(
tmp_share
->
tgt_default_files
=
&
tmp_connect_info
[
13
];
tmp_share
->
tgt_default_groups
=
&
tmp_connect_info
[
14
];
tmp_share
->
tgt_dsns
=
&
tmp_connect_info
[
15
];
tmp_share
->
tgt_pk_names
=
&
tmp_connect_info
[
16
];
tmp_share
->
tgt_sequence_names
=
&
tmp_connect_info
[
17
];
tmp_share
->
static_link_ids
=
&
tmp_connect_info
[
18
];
tmp_share
->
tgt_filedsns
=
&
tmp_connect_info
[
16
];
tmp_share
->
tgt_pk_names
=
&
tmp_connect_info
[
17
];
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)
tmp_share
->
hs_read_socks
=
&
tmp_connect_info
[
19
];
tmp_share
->
hs_write_socks
=
&
tmp_connect_info
[
2
0
];
tmp_share
->
hs_read_socks
=
&
tmp_connect_info
[
20
];
tmp_share
->
hs_write_socks
=
&
tmp_connect_info
[
2
1
];
#endif
tmp_share
->
tgt_ports
=
&
tmp_long
[
0
];
tmp_share
->
tgt_ssl_vscs
=
&
tmp_long
[
1
];
...
...
@@ -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_groups_lengths
=
&
tmp_connect_info_length
[
14
];
tmp_share
->
tgt_dsns_lengths
=
&
tmp_connect_info_length
[
15
];
tmp_share
->
tgt_pk_names_lengths
=
&
tmp_connect_info_length
[
16
];
tmp_share
->
tgt_sequence_names_lengths
=
&
tmp_connect_info_length
[
17
];
tmp_share
->
static_link_ids_lengths
=
&
tmp_connect_info_length
[
18
];
tmp_share
->
tgt_filedsns_lengths
=
&
tmp_connect_info_length
[
16
];
tmp_share
->
tgt_pk_names_lengths
=
&
tmp_connect_info_length
[
17
];
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)
tmp_share
->
hs_read_socks_lengths
=
&
tmp_connect_info_length
[
19
];
tmp_share
->
hs_write_socks_lengths
=
&
tmp_connect_info_length
[
2
0
];
tmp_share
->
hs_read_socks_lengths
=
&
tmp_connect_info_length
[
20
];
tmp_share
->
hs_write_socks_lengths
=
&
tmp_connect_info_length
[
2
1
];
#endif
tmp_share
->
server_names_length
=
1
;
tmp_share
->
tgt_table_names_length
=
1
;
...
...
@@ -8616,6 +8678,7 @@ void spider_set_tmp_share_pointer(
tmp_share
->
tgt_default_files_length
=
1
;
tmp_share
->
tgt_default_groups_length
=
1
;
tmp_share
->
tgt_dsns_length
=
1
;
tmp_share
->
tgt_filedsns_length
=
1
;
tmp_share
->
tgt_pk_names_length
=
1
;
tmp_share
->
tgt_sequence_names_length
=
1
;
tmp_share
->
static_link_ids_length
=
1
;
...
...
storage/spider/spd_trx.cc
View file @
0dffe33c
...
...
@@ -506,6 +506,7 @@ int spider_create_trx_alter_table(
char
**
tmp_tgt_default_files
;
char
**
tmp_tgt_default_groups
;
char
**
tmp_tgt_dsns
;
char
**
tmp_tgt_filedsns
;
char
**
tmp_static_link_ids
;
uint
*
tmp_server_names_lengths
;
uint
*
tmp_tgt_table_names_lengths
;
...
...
@@ -523,6 +524,7 @@ int spider_create_trx_alter_table(
uint
*
tmp_tgt_default_files_lengths
;
uint
*
tmp_tgt_default_groups_lengths
;
uint
*
tmp_tgt_dsns_lengths
;
uint
*
tmp_tgt_filedsns_lengths
;
uint
*
tmp_static_link_ids_lengths
;
long
*
tmp_tgt_ports
;
long
*
tmp_tgt_ssl_vscs
;
...
...
@@ -544,6 +546,7 @@ int spider_create_trx_alter_table(
char
*
tmp_tgt_default_files_char
;
char
*
tmp_tgt_default_groups_char
;
char
*
tmp_tgt_dsns_char
;
char
*
tmp_tgt_filedsns_char
;
char
*
tmp_static_link_ids_char
;
uint
old_elements
;
...
...
@@ -571,6 +574,7 @@ int spider_create_trx_alter_table(
&
tmp_tgt_default_files
,
(
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_filedsns
,
(
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
),
...
...
@@ -597,6 +601,7 @@ int spider_create_trx_alter_table(
&
tmp_tgt_default_groups_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
,
(
uint
)
(
sizeof
(
uint
)
*
share
->
all_link_count
),
...
...
@@ -638,6 +643,8 @@ int spider_create_trx_alter_table(
(
share_alter
->
tmp_tgt_default_groups_charlen
+
1
)),
&
tmp_tgt_dsns_char
,
(
uint
)
(
sizeof
(
char
)
*
(
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
)
*
(
share_alter
->
tmp_static_link_ids_charlen
+
1
)),
NullS
))
...
...
@@ -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_groups
=
tmp_tgt_default_groups
;
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_tgt_ports
=
tmp_tgt_ports
;
...
...
@@ -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_groups_lengths
=
tmp_tgt_default_groups_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
;
for
(
roop_count
=
0
;
roop_count
<
(
int
)
share
->
all_link_count
;
roop_count
++
)
...
...
@@ -804,6 +813,12 @@ int spider_create_trx_alter_table(
tmp_tgt_dsns_char
+=
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
])
{
tmp_static_link_ids
[
roop_count
]
=
tmp_static_link_ids_char
;
...
...
@@ -859,6 +874,8 @@ int spider_create_trx_alter_table(
sizeof
(
uint
)
*
share
->
all_link_count
);
memcpy
(
tmp_tgt_dsns_lengths
,
share_alter
->
tmp_tgt_dsns_lengths
,
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
,
share_alter
->
tmp_static_link_ids_lengths
,
sizeof
(
uint
)
*
share
->
all_link_count
);
...
...
@@ -895,6 +912,8 @@ int spider_create_trx_alter_table(
share_alter
->
tmp_tgt_default_groups_length
;
alter_table
->
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
=
share_alter
->
tmp_static_link_ids_length
;
alter_table
->
tmp_tgt_ports_length
=
...
...
@@ -1108,6 +1127,16 @@ bool spider_cmp_trx_alter_table(
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
]
!=
cmp2
->
tmp_static_link_ids
[
roop_count
]
&&
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment