mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
fix a case of different linked table name for mrr.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
@@ -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();
|
||||
};
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
);
|
||||
};
|
||||
|
@@ -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
|
||||
|
@@ -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(
|
||||
|
@@ -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
|
||||
|
@@ -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(
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user