summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKentoku SHIBA <kentokushiba@gmail.com>2013-09-17 03:19:55 +0900
committerKentoku SHIBA <kentokushiba@gmail.com>2013-09-17 03:19:55 +0900
commite9d53a384cdfd4174bc1c69100cf04006d217ec7 (patch)
treed9282302380ecab5b36e1cbe55544ef1c9b5f507
parent74bea98ea50ff82a9b6c7b39da26bfc4a4aa79d6 (diff)
downloadmariadb-git-e9d53a384cdfd4174bc1c69100cf04006d217ec7.tar.gz
fix a case of different linked table name for mrr.
-rw-r--r--storage/spider/ha_spider.cc64
-rw-r--r--storage/spider/ha_spider.h2
-rw-r--r--storage/spider/spd_db_handlersocket.cc27
-rw-r--r--storage/spider/spd_db_handlersocket.h7
-rw-r--r--storage/spider/spd_db_include.h7
-rw-r--r--storage/spider/spd_db_mysql.cc95
-rw-r--r--storage/spider/spd_db_mysql.h9
-rw-r--r--storage/spider/spd_db_oracle.cc95
-rw-r--r--storage/spider/spd_db_oracle.h9
-rw-r--r--storage/spider/spd_include.h10
10 files changed, 308 insertions, 17 deletions
diff --git a/storage/spider/ha_spider.cc b/storage/spider/ha_spider.cc
index 74ebcfb6190..c069ddfb770 100644
--- a/storage/spider/ha_spider.cc
+++ b/storage/spider/ha_spider.cc
@@ -5023,8 +5023,11 @@ int ha_spider::read_multi_range_first_internal(
}
} else {
result_list.limit_num = result_list.internal_limit;
- if ((error_num = append_union_all_start_sql_part(
- SPIDER_SQL_TYPE_SELECT_SQL)))
+ if (
+ (error_num = init_union_table_name_pos_sql()) ||
+ (error_num = append_union_all_start_sql_part(
+ SPIDER_SQL_TYPE_SELECT_SQL))
+ )
DBUG_RETURN(error_num);
#ifdef HA_MRR_USE_DEFAULT_IMPL
@@ -5050,7 +5053,10 @@ int ha_spider::read_multi_range_first_internal(
if ((error_num = append_multi_range_cnt_sql_part(
SPIDER_SQL_TYPE_SELECT_SQL, multi_range_cnt, TRUE)))
DBUG_RETURN(error_num);
- if ((error_num = spider_db_append_select_columns(this)))
+ if (
+ (error_num = spider_db_append_select_columns(this)) ||
+ (error_num = set_union_table_name_pos_sql())
+ )
DBUG_RETURN(error_num);
high_priority = FALSE;
if (
@@ -6371,8 +6377,11 @@ int ha_spider::read_multi_range_next(
} else {
result_list.limit_num =
result_list.internal_limit - result_list.record_num;
- if ((error_num =
- append_union_all_start_sql_part(SPIDER_SQL_TYPE_SELECT_SQL)))
+ if (
+ (error_num = init_union_table_name_pos_sql()) ||
+ (error_num =
+ append_union_all_start_sql_part(SPIDER_SQL_TYPE_SELECT_SQL))
+ )
DBUG_RETURN(error_num);
#ifdef HA_MRR_USE_DEFAULT_IMPL
do
@@ -6396,7 +6405,10 @@ int ha_spider::read_multi_range_next(
if ((error_num = append_multi_range_cnt_sql_part(
SPIDER_SQL_TYPE_SELECT_SQL, multi_range_cnt, TRUE)))
DBUG_RETURN(error_num);
- if ((error_num = spider_db_append_select_columns(this)))
+ if (
+ (error_num = spider_db_append_select_columns(this)) ||
+ (error_num = set_union_table_name_pos_sql())
+ )
DBUG_RETURN(error_num);
high_priority = FALSE;
if (
@@ -13958,3 +13970,43 @@ bool ha_spider::support_bulk_access_hs() const
DBUG_RETURN(TRUE);
}
#endif
+
+int ha_spider::init_union_table_name_pos_sql()
+{
+ int error_num;
+ uint roop_count, dbton_id;
+ spider_db_handler *dbton_hdl;
+ DBUG_ENTER("ha_spider::init_union_table_name_pos_sql");
+ for (roop_count = 0; roop_count < share->use_sql_dbton_count; roop_count++)
+ {
+ dbton_id = share->use_sql_dbton_ids[roop_count];
+ dbton_hdl = dbton_handler[dbton_id];
+ if (
+ dbton_hdl->first_link_idx >= 0 &&
+ (error_num = dbton_hdl->init_union_table_name_pos())
+ ) {
+ DBUG_RETURN(error_num);
+ }
+ }
+ DBUG_RETURN(0);
+}
+
+int ha_spider::set_union_table_name_pos_sql()
+{
+ int error_num;
+ uint roop_count, dbton_id;
+ spider_db_handler *dbton_hdl;
+ DBUG_ENTER("ha_spider::set_union_table_name_pos_sql");
+ for (roop_count = 0; roop_count < share->use_sql_dbton_count; roop_count++)
+ {
+ dbton_id = share->use_sql_dbton_ids[roop_count];
+ dbton_hdl = dbton_handler[dbton_id];
+ if (
+ dbton_hdl->first_link_idx >= 0 &&
+ (error_num = dbton_hdl->set_union_table_name_pos())
+ ) {
+ DBUG_RETURN(error_num);
+ }
+ }
+ DBUG_RETURN(0);
+}
diff --git a/storage/spider/ha_spider.h b/storage/spider/ha_spider.h
index de34e085359..50ddeb1c050 100644
--- a/storage/spider/ha_spider.h
+++ b/storage/spider/ha_spider.h
@@ -1043,4 +1043,6 @@ public:
#if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET)
bool support_bulk_access_hs() const;
#endif
+ int init_union_table_name_pos_sql();
+ int set_union_table_name_pos_sql();
};
diff --git a/storage/spider/spd_db_handlersocket.cc b/storage/spider/spd_db_handlersocket.cc
index a828a98c597..876eeeb656c 100644
--- a/storage/spider/spd_db_handlersocket.cc
+++ b/storage/spider/spd_db_handlersocket.cc
@@ -5415,4 +5415,31 @@ void spider_handlersocket_handler::copy_minimum_select_bitmap(
}
DBUG_VOID_RETURN;
}
+
+int spider_handlersocket_handler::init_union_table_name_pos()
+{
+ DBUG_ENTER("spider_handlersocket_handler::init_union_table_name_pos");
+ DBUG_PRINT("info",("spider this=%p", this));
+ DBUG_ASSERT(0);
+ DBUG_RETURN(0);
+}
+
+int spider_handlersocket_handler::set_union_table_name_pos()
+{
+ DBUG_ENTER("spider_handlersocket_handler::set_union_table_name_pos");
+ DBUG_PRINT("info",("spider this=%p", this));
+ DBUG_ASSERT(0);
+ DBUG_RETURN(0);
+}
+
+int spider_handlersocket_handler::reset_union_table_name(
+ spider_string *str,
+ int link_idx,
+ ulong sql_type
+) {
+ DBUG_ENTER("spider_handlersocket_handler::reset_union_table_name");
+ DBUG_PRINT("info",("spider this=%p", this));
+ DBUG_ASSERT(0);
+ DBUG_RETURN(0);
+}
#endif
diff --git a/storage/spider/spd_db_handlersocket.h b/storage/spider/spd_db_handlersocket.h
index 51cbc7e6c79..ed3d55752bc 100644
--- a/storage/spider/spd_db_handlersocket.h
+++ b/storage/spider/spd_db_handlersocket.h
@@ -914,4 +914,11 @@ public:
void copy_minimum_select_bitmap(
uchar *bitmap
);
+ int init_union_table_name_pos();
+ int set_union_table_name_pos();
+ int reset_union_table_name(
+ spider_string *str,
+ int link_idx,
+ ulong sql_type
+ );
};
diff --git a/storage/spider/spd_db_include.h b/storage/spider/spd_db_include.h
index f35652646ea..c51bca146cd 100644
--- a/storage/spider/spd_db_include.h
+++ b/storage/spider/spd_db_include.h
@@ -1371,6 +1371,13 @@ public:
virtual void copy_minimum_select_bitmap(
uchar *bitmap
) = 0;
+ virtual int init_union_table_name_pos() = 0;
+ virtual int set_union_table_name_pos() = 0;
+ virtual int reset_union_table_name(
+ spider_string *str,
+ int link_idx,
+ ulong sql_type
+ ) = 0;
};
class spider_db_copy_table
diff --git a/storage/spider/spd_db_mysql.cc b/storage/spider/spd_db_mysql.cc
index cea61083d29..f6ef1ff947e 100644
--- a/storage/spider/spd_db_mysql.cc
+++ b/storage/spider/spd_db_mysql.cc
@@ -4552,6 +4552,8 @@ spider_mysql_handler::spider_mysql_handler(
tmp_sql_pos4(0),
tmp_sql_pos5(0),
reading_from_bulk_tmp_table(FALSE),
+ union_table_name_pos_first(NULL),
+ union_table_name_pos_current(NULL),
mysql_share(db_share),
link_for_hash(NULL)
{
@@ -4566,6 +4568,12 @@ spider_mysql_handler::~spider_mysql_handler()
{
DBUG_ENTER("spider_mysql_handler::~spider_mysql_handler");
DBUG_PRINT("info",("spider this=%p", this));
+ while (union_table_name_pos_first)
+ {
+ SPIDER_INT_HLD *tmp_pos = union_table_name_pos_first;
+ union_table_name_pos_first = tmp_pos->next;
+ spider_free(spider_current_trx, tmp_pos, MYF(0));
+ }
if (link_for_hash)
{
spider_free(spider_current_trx, link_for_hash, MYF(0));
@@ -9114,14 +9122,14 @@ int spider_mysql_handler::set_sql_for_exec(
uint table_name_lengths[2], table_alias_lengths[2];
tgt_table_name_str.init_calc_mem(104);
tgt_table_name_str.length(0);
- if (result_list->tmp_table_join)
+ if (result_list->tmp_table_join && spider->bka_mode != 2)
{
create_tmp_bka_table_name(tmp_table_name, &tmp_table_name_length,
link_idx);
append_table_name_with_adjusting(&tgt_table_name_str, link_idx,
SPIDER_SQL_TYPE_TMP_SQL);
table_names[0] = tmp_table_name;
- table_names[1] = tgt_table_name_str.c_ptr();
+ table_names[1] = tgt_table_name_str.ptr();
table_name_lengths[0] = tmp_table_name_length;
table_name_lengths[1] = tgt_table_name_str.length();
table_aliases[0] = SPIDER_SQL_A_STR;
@@ -9134,10 +9142,15 @@ int spider_mysql_handler::set_sql_for_exec(
exec_sql = &result_list->sqls[link_idx];
if (exec_sql->copy(sql))
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- else {
+ else if (result_list->use_union)
+ {
+ if ((error_num = reset_union_table_name(exec_sql, link_idx,
+ SPIDER_SQL_TYPE_SELECT_SQL)))
+ DBUG_RETURN(error_num);
+ } else {
tmp_pos = exec_sql->length();
exec_sql->length(table_name_pos);
- if (result_list->tmp_table_join)
+ if (result_list->tmp_table_join && spider->bka_mode != 2)
{
if ((error_num = spider_db_mysql_utility.append_from_with_alias(
exec_sql, table_names, table_name_lengths,
@@ -9145,6 +9158,7 @@ int spider_mysql_handler::set_sql_for_exec(
&table_name_pos, TRUE))
)
DBUG_RETURN(error_num);
+ exec_sql->q_append(SPIDER_SQL_SPACE_STR, SPIDER_SQL_SPACE_LEN);
} else {
append_table_name_with_adjusting(exec_sql, link_idx,
SPIDER_SQL_TYPE_SELECT_SQL);
@@ -9155,7 +9169,7 @@ int spider_mysql_handler::set_sql_for_exec(
if (sql_type & SPIDER_SQL_TYPE_TMP_SQL)
{
exec_tmp_sql = &result_list->tmp_sqls[link_idx];
- if (result_list->tmp_table_join)
+ if (result_list->tmp_table_join && spider->bka_mode != 2)
{
if (exec_tmp_sql->copy(tmp_sql))
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
@@ -10743,6 +10757,77 @@ void spider_mysql_handler::copy_minimum_select_bitmap(
DBUG_VOID_RETURN;
}
+int spider_mysql_handler::init_union_table_name_pos()
+{
+ DBUG_ENTER("spider_mysql_handler::init_union_table_name_pos");
+ DBUG_PRINT("info",("spider this=%p", this));
+ if (!union_table_name_pos_first)
+ {
+ if (!spider_bulk_malloc(spider_current_trx, 236, MYF(MY_WME),
+ &union_table_name_pos_first, sizeof(SPIDER_INT_HLD),
+ NullS)
+ ) {
+ DBUG_RETURN(HA_ERR_OUT_OF_MEM);
+ }
+ union_table_name_pos_first->next = NULL;
+ }
+ union_table_name_pos_current = union_table_name_pos_first;
+ union_table_name_pos_current->tgt_num = 0;
+ DBUG_RETURN(0);
+}
+
+int spider_mysql_handler::set_union_table_name_pos()
+{
+ DBUG_ENTER("spider_mysql_handler::set_union_table_name_pos");
+ DBUG_PRINT("info",("spider this=%p", this));
+ if (union_table_name_pos_current->tgt_num >= SPIDER_INT_HLD_TGT_SIZE)
+ {
+ if (!union_table_name_pos_current->next)
+ {
+ if (!spider_bulk_malloc(spider_current_trx, 237, MYF(MY_WME),
+ &union_table_name_pos_current->next, sizeof(SPIDER_INT_HLD),
+ NullS)
+ ) {
+ DBUG_RETURN(HA_ERR_OUT_OF_MEM);
+ }
+ union_table_name_pos_current->next->next = NULL;
+ }
+ union_table_name_pos_current = union_table_name_pos_current->next;
+ union_table_name_pos_current->tgt_num = 0;
+ }
+ union_table_name_pos_current->tgt[union_table_name_pos_current->tgt_num] =
+ table_name_pos;
+ ++union_table_name_pos_current->tgt_num;
+ DBUG_RETURN(0);
+}
+
+int spider_mysql_handler::reset_union_table_name(
+ spider_string *str,
+ int link_idx,
+ ulong sql_type
+) {
+ DBUG_ENTER("spider_mysql_handler::reset_union_table_name");
+ DBUG_PRINT("info",("spider this=%p", this));
+ if (!union_table_name_pos_current)
+ DBUG_RETURN(0);
+
+ SPIDER_INT_HLD *tmp_pos = union_table_name_pos_first;
+ uint cur_num, pos_backup = str->length();
+ while(TRUE)
+ {
+ for (cur_num = 0; cur_num < tmp_pos->tgt_num; ++cur_num)
+ {
+ str->length(tmp_pos->tgt[cur_num]);
+ append_table_name_with_adjusting(str, link_idx, sql_type);
+ }
+ if (tmp_pos == union_table_name_pos_current)
+ break;
+ tmp_pos = tmp_pos->next;
+ }
+ str->length(pos_backup);
+ DBUG_RETURN(0);
+}
+
spider_mysql_copy_table::spider_mysql_copy_table(
spider_mysql_share *db_share
) : spider_db_copy_table(
diff --git a/storage/spider/spd_db_mysql.h b/storage/spider/spd_db_mysql.h
index 96436a90b7b..71d6a262cf8 100644
--- a/storage/spider/spd_db_mysql.h
+++ b/storage/spider/spd_db_mysql.h
@@ -521,6 +521,8 @@ class spider_mysql_handler: public spider_db_handler
#if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET)
SPIDER_DB_HS_STRING_REF_BUFFER hs_upds;
#endif
+ SPIDER_INT_HLD *union_table_name_pos_first;
+ SPIDER_INT_HLD *union_table_name_pos_current;
public:
spider_mysql_share *mysql_share;
SPIDER_LINK_FOR_HASH *link_for_hash;
@@ -1249,6 +1251,13 @@ public:
void copy_minimum_select_bitmap(
uchar *bitmap
);
+ int init_union_table_name_pos();
+ int set_union_table_name_pos();
+ int reset_union_table_name(
+ spider_string *str,
+ int link_idx,
+ ulong sql_type
+ );
};
class spider_mysql_copy_table: public spider_db_copy_table
diff --git a/storage/spider/spd_db_oracle.cc b/storage/spider/spd_db_oracle.cc
index 7446156c1d5..1254dd8332e 100644
--- a/storage/spider/spd_db_oracle.cc
+++ b/storage/spider/spd_db_oracle.cc
@@ -4638,6 +4638,8 @@ spider_oracle_handler::spider_oracle_handler(
filled_up(FALSE),
select_rownum_appended(FALSE),
update_rownum_appended(FALSE),
+ union_table_name_pos_first(NULL),
+ union_table_name_pos_current(NULL),
oracle_share(db_share),
link_for_hash(NULL)
{
@@ -4652,6 +4654,12 @@ spider_oracle_handler::~spider_oracle_handler()
{
DBUG_ENTER("spider_oracle_handler::~spider_oracle_handler");
DBUG_PRINT("info",("spider this=%p", this));
+ while (union_table_name_pos_first)
+ {
+ SPIDER_INT_HLD *tmp_pos = union_table_name_pos_first;
+ union_table_name_pos_first = tmp_pos->next;
+ spider_free(spider_current_trx, tmp_pos, MYF(0));
+ }
if (link_for_hash)
{
spider_free(spider_current_trx, link_for_hash, MYF(0));
@@ -9622,14 +9630,14 @@ int spider_oracle_handler::set_sql_for_exec(
uint table_name_lengths[2], table_alias_lengths[2];
tgt_table_name_str.init_calc_mem(212);
tgt_table_name_str.length(0);
- if (result_list->tmp_table_join)
+ if (result_list->tmp_table_join && spider->bka_mode != 2)
{
create_tmp_bka_table_name(tmp_table_name, &tmp_table_name_length,
link_idx);
append_table_name_with_adjusting(&tgt_table_name_str, link_idx,
SPIDER_SQL_TYPE_TMP_SQL);
table_names[0] = tmp_table_name;
- table_names[1] = tgt_table_name_str.c_ptr();
+ table_names[1] = tgt_table_name_str.ptr();
table_name_lengths[0] = tmp_table_name_length;
table_name_lengths[1] = tgt_table_name_str.length();
table_aliases[0] = SPIDER_SQL_A_STR;
@@ -9642,10 +9650,15 @@ int spider_oracle_handler::set_sql_for_exec(
exec_sql = &result_list->sqls[link_idx];
if (exec_sql->copy(sql))
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- else {
+ else if (result_list->use_union)
+ {
+ if ((error_num = reset_union_table_name(exec_sql, link_idx,
+ SPIDER_SQL_TYPE_SELECT_SQL)))
+ DBUG_RETURN(error_num);
+ } else {
tmp_pos = exec_sql->length();
exec_sql->length(table_name_pos);
- if (result_list->tmp_table_join)
+ if (result_list->tmp_table_join && spider->bka_mode != 2)
{
if ((error_num = spider_db_oracle_utility.append_from_with_alias(
exec_sql, table_names, table_name_lengths,
@@ -9653,6 +9666,7 @@ int spider_oracle_handler::set_sql_for_exec(
&table_name_pos, TRUE))
)
DBUG_RETURN(error_num);
+ exec_sql->q_append(SPIDER_SQL_SPACE_STR, SPIDER_SQL_SPACE_LEN);
} else {
append_table_name_with_adjusting(exec_sql, link_idx,
SPIDER_SQL_TYPE_SELECT_SQL);
@@ -9663,7 +9677,7 @@ int spider_oracle_handler::set_sql_for_exec(
if (sql_type & SPIDER_SQL_TYPE_TMP_SQL)
{
exec_tmp_sql = &result_list->tmp_sqls[link_idx];
- if (result_list->tmp_table_join)
+ if (result_list->tmp_table_join && spider->bka_mode != 2)
{
if (exec_tmp_sql->copy(tmp_sql))
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
@@ -11352,6 +11366,77 @@ void spider_oracle_handler::copy_minimum_select_bitmap(
DBUG_VOID_RETURN;
}
+int spider_oracle_handler::init_union_table_name_pos()
+{
+ DBUG_ENTER("spider_oracle_handler::init_union_table_name_pos");
+ DBUG_PRINT("info",("spider this=%p", this));
+ if (!union_table_name_pos_first)
+ {
+ if (!spider_bulk_malloc(spider_current_trx, 238, MYF(MY_WME),
+ &union_table_name_pos_first, sizeof(SPIDER_INT_HLD),
+ NullS)
+ ) {
+ DBUG_RETURN(HA_ERR_OUT_OF_MEM);
+ }
+ union_table_name_pos_first->next = NULL;
+ }
+ union_table_name_pos_current = union_table_name_pos_first;
+ union_table_name_pos_current->tgt_num = 0;
+ DBUG_RETURN(0);
+}
+
+int spider_oracle_handler::set_union_table_name_pos()
+{
+ DBUG_ENTER("spider_oracle_handler::set_union_table_name_pos");
+ DBUG_PRINT("info",("spider this=%p", this));
+ if (union_table_name_pos_current->tgt_num >= SPIDER_INT_HLD_TGT_SIZE)
+ {
+ if (!union_table_name_pos_current->next)
+ {
+ if (!spider_bulk_malloc(spider_current_trx, 239, MYF(MY_WME),
+ &union_table_name_pos_current->next, sizeof(SPIDER_INT_HLD),
+ NullS)
+ ) {
+ DBUG_RETURN(HA_ERR_OUT_OF_MEM);
+ }
+ union_table_name_pos_current->next->next = NULL;
+ }
+ union_table_name_pos_current = union_table_name_pos_current->next;
+ union_table_name_pos_current->tgt_num = 0;
+ }
+ union_table_name_pos_current->tgt[union_table_name_pos_current->tgt_num] =
+ table_name_pos;
+ ++union_table_name_pos_current->tgt_num;
+ DBUG_RETURN(0);
+}
+
+int spider_oracle_handler::reset_union_table_name(
+ spider_string *str,
+ int link_idx,
+ ulong sql_type
+) {
+ DBUG_ENTER("spider_oracle_handler::reset_union_table_name");
+ DBUG_PRINT("info",("spider this=%p", this));
+ if (!union_table_name_pos_current)
+ DBUG_RETURN(0);
+
+ SPIDER_INT_HLD *tmp_pos = union_table_name_pos_first;
+ uint cur_num, pos_backup = str->length();
+ while(TRUE)
+ {
+ for (cur_num = 0; cur_num < tmp_pos->tgt_num; ++cur_num)
+ {
+ str->length(tmp_pos->tgt[cur_num]);
+ append_table_name_with_adjusting(str, link_idx, sql_type);
+ }
+ if (tmp_pos == union_table_name_pos_current)
+ break;
+ tmp_pos = tmp_pos->next;
+ }
+ str->length(pos_backup);
+ DBUG_RETURN(0);
+}
+
spider_oracle_copy_table::spider_oracle_copy_table(
spider_oracle_share *db_share
) : spider_db_copy_table(
diff --git a/storage/spider/spd_db_oracle.h b/storage/spider/spd_db_oracle.h
index 79dfe56d27d..db5eac88ca9 100644
--- a/storage/spider/spd_db_oracle.h
+++ b/storage/spider/spd_db_oracle.h
@@ -604,6 +604,8 @@ class spider_oracle_handler: public spider_db_handler
#if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET)
SPIDER_DB_HS_STRING_REF_BUFFER hs_upds;
#endif
+ SPIDER_INT_HLD *union_table_name_pos_first;
+ SPIDER_INT_HLD *union_table_name_pos_current;
public:
spider_oracle_share *oracle_share;
SPIDER_LINK_FOR_HASH *link_for_hash;
@@ -1335,6 +1337,13 @@ public:
void copy_minimum_select_bitmap(
uchar *bitmap
);
+ int init_union_table_name_pos();
+ int set_union_table_name_pos();
+ int reset_union_table_name(
+ spider_string *str,
+ int link_idx,
+ ulong sql_type
+ );
};
class spider_oracle_copy_table: public spider_db_copy_table
diff --git a/storage/spider/spd_include.h b/storage/spider/spd_include.h
index 4dc97cef505..6db537462ef 100644
--- a/storage/spider/spd_include.h
+++ b/storage/spider/spd_include.h
@@ -118,7 +118,7 @@
#define SPIDER_TMP_SHARE_LONG_COUNT 15
#define SPIDER_TMP_SHARE_LONGLONG_COUNT 3
-#define SPIDER_MEM_CALC_LIST_NUM 236
+#define SPIDER_MEM_CALC_LIST_NUM 240
#define SPIDER_BACKUP_DASTATUS \
bool da_status; if (thd) da_status = thd->is_error(); else da_status = FALSE;
@@ -1150,6 +1150,14 @@ typedef struct st_spider_bulk_access_link
} SPIDER_BULK_ACCESS_LINK;
#endif
+#define SPIDER_INT_HLD_TGT_SIZE 100
+typedef struct st_spider_int_hld
+{
+ uint tgt_num;
+ int tgt[SPIDER_INT_HLD_TGT_SIZE];
+ st_spider_int_hld *next;
+} SPIDER_INT_HLD;
+
char *spider_create_string(
const char *str,
uint length