summaryrefslogtreecommitdiff
path: root/storage/spider/spd_table.cc
diff options
context:
space:
mode:
authorJacob Mathew <jacob.mathew@mariadb.com>2018-05-01 18:47:04 -0700
committerJacob Mathew <jacob.mathew@mariadb.com>2018-05-01 18:47:04 -0700
commitda3c5c3c9ad53eda04293e5f5ee6795197c70652 (patch)
treebc74e5f8e3af5d114c8b7cb044b0e34c338cc54a /storage/spider/spd_table.cc
parent8fdeb079b92871f1274d5f8d9c6463fd09c9161f (diff)
downloadmariadb-git-da3c5c3c9ad53eda04293e5f5ee6795197c70652.tar.gz
MDEV-15698: Spider ignores syntax errors in connection string in COMMENT field
When a comma separator is missing between COMMENT fields, Spider ignores the parameter values that are beyond the last expected parameter value. There are also some error messages that Spider does generate on COMMENT fields that are incorrectly formed. I have introduced additional infrastructure in Spider to fix these problems. Author: Jacob Mathew. Reviewer: Kentoku Shiba. Cherry-Picked: Commit c10da98 on branch bb-10.3-MDEV-15698
Diffstat (limited to 'storage/spider/spd_table.cc')
-rw-r--r--storage/spider/spd_table.cc241
1 files changed, 124 insertions, 117 deletions
diff --git a/storage/spider/spd_table.cc b/storage/spider/spd_table.cc
index 4b677b3b2fe..b05ea1a2229 100644
--- a/storage/spider/spd_table.cc
+++ b/storage/spider/spd_table.cc
@@ -925,7 +925,8 @@ void spider_free_tmp_share_alloc(
char *spider_get_string_between_quote(
char *ptr,
- bool alloc
+ bool alloc,
+ SPIDER_PARAM_STRING_PARSE *param_string_parse
) {
char *start_ptr, *end_ptr, *tmp_ptr, *esc_ptr;
bool find_flg = FALSE, esc_flg = FALSE;
@@ -1016,6 +1017,10 @@ char *spider_get_string_between_quote(
strcpy(esc_ptr, esc_ptr + 1);
}
}
+
+ if (param_string_parse)
+ param_string_parse->set_param_value(start_ptr, start_ptr + strlen(start_ptr) + 1);
+
if (alloc)
{
DBUG_RETURN(
@@ -1033,7 +1038,8 @@ int spider_create_string_list(
uint **string_length_list,
uint *list_length,
char *str,
- uint length
+ uint length,
+ SPIDER_PARAM_STRING_PARSE *param_string_parse
) {
int roop_count;
char *tmp_ptr, *tmp_ptr2, *tmp_ptr3, *esc_ptr;
@@ -1041,6 +1047,7 @@ int spider_create_string_list(
DBUG_ENTER("spider_create_string_list");
*list_length = 0;
+ param_string_parse->init_param_value();
if (!str)
{
*string_list = NULL;
@@ -1151,6 +1158,10 @@ int spider_create_string_list(
my_error(ER_OUT_OF_RESOURCES, MYF(0), HA_ERR_OUT_OF_MEM);
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
}
+
+ param_string_parse->set_param_value(tmp_ptr3,
+ tmp_ptr3 + strlen(tmp_ptr3) + 1);
+
DBUG_PRINT("info",("spider string_list[%d]=%s", roop_count,
(*string_list)[roop_count]));
@@ -1163,13 +1174,15 @@ int spider_create_long_list(
char *str,
uint length,
long min_val,
- long max_val
+ long max_val,
+ SPIDER_PARAM_STRING_PARSE *param_string_parse
) {
int roop_count;
char *tmp_ptr;
DBUG_ENTER("spider_create_long_list");
*list_length = 0;
+ param_string_parse->init_param_value();
if (!str)
{
*long_list = NULL;
@@ -1225,6 +1238,9 @@ int spider_create_long_list(
(*long_list)[roop_count] = max_val;
}
+ param_string_parse->set_param_value(tmp_ptr,
+ tmp_ptr + strlen(tmp_ptr) + 1);
+
#ifndef DBUG_OFF
for (roop_count = 0; roop_count < (int) *list_length; roop_count++)
{
@@ -1242,13 +1258,15 @@ int spider_create_longlong_list(
char *str,
uint length,
longlong min_val,
- longlong max_val
+ longlong max_val,
+ SPIDER_PARAM_STRING_PARSE *param_string_parse
) {
int error_num, roop_count;
char *tmp_ptr;
DBUG_ENTER("spider_create_longlong_list");
*list_length = 0;
+ param_string_parse->init_param_value();
if (!str)
{
*longlong_list = NULL;
@@ -1305,6 +1323,9 @@ int spider_create_longlong_list(
(*longlong_list)[roop_count] = max_val;
}
+ param_string_parse->set_param_value(tmp_ptr,
+ tmp_ptr + strlen(tmp_ptr) + 1);
+
#ifndef DBUG_OFF
for (roop_count = 0; roop_count < (int) *list_length; roop_count++)
{
@@ -1494,6 +1515,38 @@ static int spider_set_ll_value(
DBUG_RETURN(error_num);
}
+/**
+ Print a parameter string error message.
+
+ @return Error code.
+*/
+
+int st_spider_param_string_parse::print_param_error()
+{
+ if (start_title_ptr)
+ {
+ /* Restore the input delimiter characters */
+ restore_delims();
+
+ /* Print the error message */
+ switch (error_num)
+ {
+ case ER_SPIDER_INVALID_UDF_PARAM_NUM:
+ my_printf_error(error_num, ER_SPIDER_INVALID_UDF_PARAM_STR,
+ MYF(0), start_title_ptr);
+ break;
+ case ER_SPIDER_INVALID_CONNECT_INFO_NUM:
+ default:
+ my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR,
+ MYF(0), start_title_ptr);
+ }
+
+ return error_num;
+ }
+ else
+ return 0;
+}
+
#define SPIDER_PARAM_STR_LEN(name) name ## _length
#define SPIDER_PARAM_STR(title_name, param_name) \
if (!strncasecmp(tmp_ptr, title_name, title_length)) \
@@ -1502,12 +1555,11 @@ static int spider_set_ll_value(
if (!share->param_name) \
{ \
if ((share->param_name = spider_get_string_between_quote( \
- start_ptr, TRUE))) \
+ start_ptr, TRUE, &connect_string_parse))) \
share->SPIDER_PARAM_STR_LEN(param_name) = strlen(share->param_name); \
- else { \
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM; \
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR, \
- MYF(0), tmp_ptr); \
+ else \
+ { \
+ error_num = connect_string_parse.print_param_error(); \
goto error; \
} \
DBUG_PRINT("info",("spider " title_name "=%s", share->param_name)); \
@@ -1531,12 +1583,11 @@ static int spider_set_ll_value(
&share->SPIDER_PARAM_STR_LENS(param_name), \
&share->SPIDER_PARAM_STR_LEN(param_name), \
tmp_ptr2, \
- share->SPIDER_PARAM_STR_CHARLEN(param_name)))) \
+ share->SPIDER_PARAM_STR_CHARLEN(param_name), \
+ &connect_string_parse))) \
goto error; \
} else { \
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM; \
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR, \
- MYF(0), tmp_ptr); \
+ error_num = connect_string_parse.print_param_error(); \
goto error; \
} \
} \
@@ -1554,9 +1605,7 @@ static int spider_set_ll_value(
{ \
if (hint_num < 0 || hint_num >= max_size) \
{ \
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM; \
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR, \
- MYF(0), tmp_ptr); \
+ error_num = connect_string_parse.print_param_error(); \
goto error; \
} else if (share->param_name[hint_num].length() > 0) \
break; \
@@ -1567,9 +1616,7 @@ static int spider_set_ll_value(
DBUG_PRINT("info",("spider " title_name "[%d]=%s", hint_num, \
share->param_name[hint_num].ptr())); \
} else { \
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM; \
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR, \
- MYF(0), tmp_ptr); \
+ error_num = connect_string_parse.print_param_error(); \
goto error; \
} \
break; \
@@ -1586,9 +1633,7 @@ static int spider_set_ll_value(
{ \
if (hint_num < 0 || hint_num >= max_size) \
{ \
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM; \
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR, \
- MYF(0), tmp_ptr); \
+ error_num = connect_string_parse.print_param_error(); \
goto error; \
} else if (share->param_name[hint_num] != -1) \
break; \
@@ -1599,9 +1644,7 @@ static int spider_set_ll_value(
DBUG_PRINT("info",("spider " title_name "[%d]=%lld", hint_num, \
share->param_name[hint_num])); \
} else { \
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM; \
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR, \
- MYF(0), tmp_ptr); \
+ error_num = connect_string_parse.print_param_error(); \
goto error; \
} \
break; \
@@ -1622,12 +1665,11 @@ static int spider_set_ll_value(
&share->SPIDER_PARAM_LONG_LEN(param_name), \
tmp_ptr2, \
strlen(tmp_ptr2), \
- min_val, max_val))) \
+ min_val, max_val, \
+ &connect_string_parse))) \
goto error; \
} else { \
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM; \
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR, \
- MYF(0), tmp_ptr); \
+ error_num = connect_string_parse.print_param_error(); \
goto error; \
} \
} \
@@ -1649,12 +1691,11 @@ static int spider_set_ll_value(
&share->SPIDER_PARAM_LONGLONG_LEN(param_name), \
tmp_ptr2, \
strlen(tmp_ptr2), \
- min_val, max_val))) \
+ min_val, max_val, \
+ &connect_string_parse))) \
goto error; \
} else { \
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM; \
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR, \
- MYF(0), tmp_ptr); \
+ error_num = connect_string_parse.print_param_error(); \
goto error; \
} \
} \
@@ -1674,10 +1715,11 @@ static int spider_set_ll_value(
share->param_name = min_val; \
else if (share->param_name > max_val) \
share->param_name = max_val; \
+ connect_string_parse.set_param_value(tmp_ptr2, \
+ tmp_ptr2 + \
+ strlen(tmp_ptr2) + 1); \
} else { \
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM; \
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR, \
- MYF(0), tmp_ptr); \
+ error_num = connect_string_parse.print_param_error(); \
goto error; \
} \
DBUG_PRINT("info",("spider " title_name "=%d", share->param_name)); \
@@ -1696,10 +1738,11 @@ static int spider_set_ll_value(
share->param_name = atoi(tmp_ptr2); \
if (share->param_name < min_val) \
share->param_name = min_val; \
+ connect_string_parse.set_param_value(tmp_ptr2, \
+ tmp_ptr2 + \
+ strlen(tmp_ptr2) + 1); \
} else { \
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM; \
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR, \
- MYF(0), tmp_ptr); \
+ error_num = connect_string_parse.print_param_error(); \
goto error; \
} \
DBUG_PRINT("info",("spider " title_name "=%d", share->param_name)); \
@@ -1718,10 +1761,11 @@ static int spider_set_ll_value(
share->param_name = my_atof(tmp_ptr2); \
if (share->param_name < min_val) \
share->param_name = min_val; \
+ connect_string_parse.set_param_value(tmp_ptr2, \
+ tmp_ptr2 + \
+ strlen(tmp_ptr2) + 1); \
} else { \
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM; \
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR, \
- MYF(0), tmp_ptr); \
+ error_num = connect_string_parse.print_param_error(); \
goto error; \
} \
DBUG_PRINT("info",("spider " title_name "=%f", share->param_name)); \
@@ -1740,10 +1784,11 @@ static int spider_set_ll_value(
share->param_name = my_strtoll10(tmp_ptr2, (char**) NULL, &error_num); \
if (share->param_name < min_val) \
share->param_name = min_val; \
+ connect_string_parse.set_param_value(tmp_ptr2, \
+ tmp_ptr2 + \
+ strlen(tmp_ptr2) + 1); \
} else { \
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM; \
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR, \
- MYF(0), tmp_ptr); \
+ error_num = connect_string_parse.print_param_error(); \
goto error; \
} \
DBUG_PRINT("info",("spider " title_name "=%lld", share->param_name)); \
@@ -1765,6 +1810,7 @@ int spider_parse_connect_info(
char *tmp_ptr, *tmp_ptr2, *start_ptr;
int roop_count;
int title_length;
+ SPIDER_PARAM_STRING_PARSE connect_string_parse;
SPIDER_ALTER_TABLE *share_alter;
#ifdef WITH_PARTITION_STORAGE_ENGINE
partition_element *part_elem;
@@ -1948,6 +1994,7 @@ int spider_parse_connect_info(
}
sprit_ptr[0] = connect_string;
+ connect_string_parse.init(connect_string, ER_SPIDER_INVALID_CONNECT_INFO_NUM);
while (sprit_ptr[0])
{
if ((sprit_ptr[1] = strchr(sprit_ptr[0], ',')))
@@ -1974,10 +2021,14 @@ int spider_parse_connect_info(
title_length++;
start_ptr++;
}
+ connect_string_parse.set_param_title(tmp_ptr, tmp_ptr + title_length);
switch (title_length)
{
case 0:
+ error_num = connect_string_parse.print_param_error();
+ if (error_num)
+ goto error;
continue;
case 3:
SPIDER_PARAM_LONG_LIST_WITH_MAX("abl", access_balances, 0,
@@ -2111,23 +2162,17 @@ int spider_parse_connect_info(
#endif
SPIDER_PARAM_INT_WITH_MAX("upu", use_pushdown_udf, 0, 1);
SPIDER_PARAM_INT_WITH_MAX("utc", use_table_charset, 0, 1);
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM;
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR,
- MYF(0), tmp_ptr);
+ error_num = connect_string_parse.print_param_error();
goto error;
case 4:
SPIDER_PARAM_STR_LIST("host", tgt_hosts);
SPIDER_PARAM_STR_LIST("user", tgt_usernames);
SPIDER_PARAM_LONG_LIST_WITH_MAX("port", tgt_ports, 0, 65535);
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM;
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR,
- MYF(0), tmp_ptr);
+ error_num = connect_string_parse.print_param_error();
goto error;
case 5:
SPIDER_PARAM_STR_LIST("table", tgt_table_names);
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM;
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR,
- MYF(0), tmp_ptr);
+ error_num = connect_string_parse.print_param_error();
goto error;
case 6:
SPIDER_PARAM_STR_LIST("server", server_names);
@@ -2137,17 +2182,13 @@ int spider_parse_connect_info(
SPIDER_PARAM_STR_LIST("ssl_ca", tgt_ssl_cas);
SPIDER_PARAM_NUMHINT("skc", static_key_cardinality, 3,
(int) table_share->keys, spider_set_ll_value);
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM;
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR,
- MYF(0), tmp_ptr);
+ error_num = connect_string_parse.print_param_error();
goto error;
case 7:
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);
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM;
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR,
- MYF(0), tmp_ptr);
+ error_num = connect_string_parse.print_param_error();
goto error;
case 8:
SPIDER_PARAM_STR_LIST("database", tgt_dbs);
@@ -2167,18 +2208,14 @@ int spider_parse_connect_info(
#endif
SPIDER_PARAM_STR_LIST("ssl_cert", tgt_ssl_certs);
SPIDER_PARAM_INT_WITH_MAX("bka_mode", bka_mode, 0, 2);
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM;
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR,
- MYF(0), tmp_ptr);
+ error_num = connect_string_parse.print_param_error();
goto error;
case 9:
SPIDER_PARAM_INT("max_order", max_order, 0);
SPIDER_PARAM_INT("bulk_size", bulk_size, 0);
SPIDER_PARAM_DOUBLE("scan_rate", scan_rate, 0);
SPIDER_PARAM_DOUBLE("read_rate", read_rate, 0);
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM;
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR,
- MYF(0), tmp_ptr);
+ error_num = connect_string_parse.print_param_error();
goto error;
case 10:
SPIDER_PARAM_DOUBLE("crd_weight", crd_weight, 1);
@@ -2188,9 +2225,7 @@ int spider_parse_connect_info(
SPIDER_PARAM_STR_LIST("ssl_capath", tgt_ssl_capaths);
SPIDER_PARAM_STR("bka_engine", bka_engine);
SPIDER_PARAM_LONGLONG("first_read", first_read, 0);
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM;
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR,
- MYF(0), tmp_ptr);
+ error_num = connect_string_parse.print_param_error();
goto error;
case 11:
SPIDER_PARAM_INT_WITH_MAX("query_cache", query_cache, 0, 2);
@@ -2204,9 +2239,7 @@ int spider_parse_connect_info(
SPIDER_PARAM_LONG_LIST_WITH_MAX("use_hs_read", use_hs_reads, 0, 1);
#endif
SPIDER_PARAM_INT_WITH_MAX("casual_read", casual_read, 0, 63);
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM;
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR,
- MYF(0), tmp_ptr);
+ error_num = connect_string_parse.print_param_error();
goto error;
case 12:
SPIDER_PARAM_DOUBLE("sts_interval", sts_interval, 0);
@@ -2219,9 +2252,7 @@ int spider_parse_connect_info(
SPIDER_PARAM_LONG_LIST_WITH_MAX(
"hs_read_port", hs_read_ports, 0, 65535);
#endif
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM;
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR,
- MYF(0), tmp_ptr);
+ error_num = connect_string_parse.print_param_error();
goto error;
case 13:
SPIDER_PARAM_STR_LIST("default_group", tgt_default_groups);
@@ -2230,9 +2261,7 @@ int spider_parse_connect_info(
"hs_write_port", hs_write_ports, 0, 65535);
#endif
SPIDER_PARAM_STR_LIST("sequence_name", tgt_sequence_names);
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM;
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR,
- MYF(0), tmp_ptr);
+ error_num = connect_string_parse.print_param_error();
goto error;
case 14:
SPIDER_PARAM_LONGLONG("internal_limit", internal_limit, 0);
@@ -2246,9 +2275,7 @@ int spider_parse_connect_info(
SPIDER_PARAM_INT_WITH_MAX("read_only_mode", read_only_mode, 0, 1);
SPIDER_PARAM_LONG_LIST_WITH_MAX("access_balance", access_balances, 0,
2147483647);
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM;
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR,
- MYF(0), tmp_ptr);
+ error_num = connect_string_parse.print_param_error();
goto error;
case 15:
SPIDER_PARAM_LONGLONG("internal_offset", internal_offset, 0);
@@ -2268,9 +2295,7 @@ int spider_parse_connect_info(
SPIDER_PARAM_LONG_LIST_WITH_MAX("connect_timeout", connect_timeouts,
0, 2147483647);
SPIDER_PARAM_INT_WITH_MAX("error_read_mode", error_read_mode, 0, 1);
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM;
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR,
- MYF(0), tmp_ptr);
+ error_num = connect_string_parse.print_param_error();
goto error;
case 16:
SPIDER_PARAM_INT_WITH_MAX(
@@ -2302,9 +2327,7 @@ int spider_parse_connect_info(
#endif
SPIDER_PARAM_INT_WITH_MAX(
"query_cache_sync", query_cache_sync, 0, 3);
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM;
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR,
- MYF(0), tmp_ptr);
+ error_num = connect_string_parse.print_param_error();
goto error;
case 17:
SPIDER_PARAM_INT_WITH_MAX(
@@ -2324,9 +2347,7 @@ int spider_parse_connect_info(
SPIDER_PARAM_INT_WITH_MAX(
"force_bulk_update", force_bulk_update, 0, 1);
#endif
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM;
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR,
- MYF(0), tmp_ptr);
+ error_num = connect_string_parse.print_param_error();
goto error;
case 18:
SPIDER_PARAM_INT_WITH_MAX(
@@ -2339,9 +2360,7 @@ int spider_parse_connect_info(
#endif
SPIDER_PARAM_LONGLONG(
"direct_order_limit", direct_order_limit, 0);
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM;
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR,
- MYF(0), tmp_ptr);
+ error_num = connect_string_parse.print_param_error();
goto error;
case 19:
SPIDER_PARAM_INT("init_sql_alloc_size", init_sql_alloc_size, 0);
@@ -2352,25 +2371,19 @@ int spider_parse_connect_info(
#endif
SPIDER_PARAM_LONG_LIST_WITH_MAX("bka_table_name_type",
bka_table_name_types, 0, 1);
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM;
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR,
- MYF(0), tmp_ptr);
+ error_num = connect_string_parse.print_param_error();
goto error;
case 20:
SPIDER_PARAM_LONGLONG_LIST_WITH_MAX(
"monitoring_server_id", monitoring_sid, 0, 4294967295LL);
SPIDER_PARAM_INT_WITH_MAX(
"delete_all_rows_type", delete_all_rows_type, 0, 1);
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM;
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR,
- MYF(0), tmp_ptr);
+ error_num = connect_string_parse.print_param_error();
goto error;
case 21:
SPIDER_PARAM_LONGLONG(
"semi_split_read_limit", semi_split_read_limit, 0);
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM;
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR,
- MYF(0), tmp_ptr);
+ error_num = connect_string_parse.print_param_error();
goto error;
case 22:
SPIDER_PARAM_LONG_LIST_WITH_MAX(
@@ -2383,39 +2396,33 @@ int spider_parse_connect_info(
"skip_default_condition", skip_default_condition, 0, 1);
SPIDER_PARAM_LONGLONG(
"static_mean_rec_length", static_mean_rec_length, 0);
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM;
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR,
- MYF(0), tmp_ptr);
+ error_num = connect_string_parse.print_param_error();
goto error;
case 23:
SPIDER_PARAM_INT_WITH_MAX(
"internal_optimize_local", internal_optimize_local, 0, 1);
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM;
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR,
- MYF(0), tmp_ptr);
+ error_num = connect_string_parse.print_param_error();
goto error;
case 25:
SPIDER_PARAM_LONGLONG("static_records_for_status",
static_records_for_status, 0);
SPIDER_PARAM_NUMHINT("static_key_cardinality", static_key_cardinality,
3, (int) table_share->keys, spider_set_ll_value);
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM;
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR,
- MYF(0), tmp_ptr);
+ error_num = connect_string_parse.print_param_error();
goto error;
case 26:
SPIDER_PARAM_INT_WITH_MAX(
"semi_table_lock_connection", semi_table_lock_conn, 0, 1);
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM;
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR,
- MYF(0), tmp_ptr);
+ error_num = connect_string_parse.print_param_error();
goto error;
default:
- error_num = ER_SPIDER_INVALID_CONNECT_INFO_NUM;
- my_printf_error(error_num, ER_SPIDER_INVALID_CONNECT_INFO_STR,
- MYF(0), tmp_ptr);
+ error_num = connect_string_parse.print_param_error();
goto error;
}
+
+ /* Verify that the remainder of the parameter value is whitespace */
+ if ((error_num = connect_string_parse.has_extra_parameter_values()))
+ goto error;
}
}