summaryrefslogtreecommitdiffstats
path: root/storage/spider/ha_spider.cc
diff options
context:
space:
mode:
Diffstat (limited to 'storage/spider/ha_spider.cc')
-rw-r--r--storage/spider/ha_spider.cc58
1 files changed, 32 insertions, 26 deletions
diff --git a/storage/spider/ha_spider.cc b/storage/spider/ha_spider.cc
index 312f94a8..5b85b3a2 100644
--- a/storage/spider/ha_spider.cc
+++ b/storage/spider/ha_spider.cc
@@ -58,7 +58,7 @@ ha_spider::ha_spider(
{
DBUG_ENTER("ha_spider::ha_spider");
DBUG_PRINT("info",("spider this=%p", this));
- spider_alloc_calc_mem_init(mem_calc, 139);
+ spider_alloc_calc_mem_init(mem_calc, SPD_MID_HA_SPIDER_HA_SPIDER_1);
spider_alloc_calc_mem(spider_current_trx, mem_calc, sizeof(*this));
share = NULL;
conns = NULL;
@@ -118,7 +118,7 @@ ha_spider::ha_spider(
{
DBUG_ENTER("ha_spider::ha_spider");
DBUG_PRINT("info",("spider this=%p", this));
- spider_alloc_calc_mem_init(mem_calc, 0);
+ spider_alloc_calc_mem_init(mem_calc, SPD_MID_HA_SPIDER_HA_SPIDER_2);
spider_alloc_calc_mem(spider_current_trx, mem_calc, sizeof(*this));
share = NULL;
conns = NULL;
@@ -358,10 +358,10 @@ int ha_spider::open(
}
for (roop_count = 0; roop_count < (int) share->link_count; roop_count++)
{
- result_list.sqls[roop_count].init_calc_mem(80);
- result_list.insert_sqls[roop_count].init_calc_mem(81);
- result_list.update_sqls[roop_count].init_calc_mem(82);
- result_list.tmp_sqls[roop_count].init_calc_mem(83);
+ result_list.sqls[roop_count].init_calc_mem(SPD_MID_HA_SPIDER_OPEN_3);
+ result_list.insert_sqls[roop_count].init_calc_mem(SPD_MID_HA_SPIDER_OPEN_4);
+ result_list.update_sqls[roop_count].init_calc_mem(SPD_MID_HA_SPIDER_OPEN_5);
+ result_list.tmp_sqls[roop_count].init_calc_mem(SPD_MID_HA_SPIDER_OPEN_6);
uint all_link_idx = conn_link_idx[roop_count];
uint dbton_id = share->sql_dbton_ids[all_link_idx];
if (share->dbton_share[dbton_id]->need_change_db_table_name())
@@ -392,7 +392,7 @@ int ha_spider::open(
}
for (roop_count = 0; roop_count < (int) table_share->fields; roop_count++)
{
- blob_buff[roop_count].init_calc_mem(84);
+ blob_buff[roop_count].init_calc_mem(SPD_MID_HA_SPIDER_OPEN_7);
blob_buff[roop_count].set_charset(table->field[roop_count]->charset());
}
}
@@ -860,6 +860,14 @@ int ha_spider::external_lock(
wide_handler->trx= trx;
/* End of wide_handler setup */
+ if (lock_type == F_UNLCK)
+ {
+ if (!trx->locked_connections)
+ {
+ DBUG_RETURN(0); /* No remote table actually locked by Spider */
+ }
+ }
+
if (store_error_num)
{
DBUG_RETURN(store_error_num);
@@ -888,10 +896,7 @@ int ha_spider::external_lock(
if (lock_type == F_UNLCK)
{
- if (sql_command != SQLCOM_UNLOCK_TABLES)
- {
- DBUG_RETURN(0); /* Unlock remote tables only by UNLOCK TABLES. */
- }
+ wide_handler->sql_command = SQLCOM_UNLOCK_TABLES;
if (!trx->locked_connections)
{
DBUG_RETURN(0); /* No remote table actually locked by Spider */
@@ -3592,7 +3597,7 @@ int ha_spider::multi_range_read_next_first(
spider_free(spider_current_trx, multi_range_keys, MYF(0));
}
if (!(multi_range_keys = (range_id_t *)
- spider_malloc(spider_current_trx, 1, sizeof(range_id_t) *
+ spider_malloc(spider_current_trx, SPD_MID_HA_SPIDER_MULTI_RANGE_READ_NEXT_FIRST_1, sizeof(range_id_t) *
(multi_range_num < result_list.multi_split_read ?
multi_range_num : result_list.multi_split_read), MYF(MY_WME)))
)
@@ -3605,7 +3610,7 @@ int ha_spider::multi_range_read_next_first(
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
}
for (roop_count = 0; roop_count < 2; roop_count++)
- mrr_key_buff[roop_count].init_calc_mem(235);
+ mrr_key_buff[roop_count].init_calc_mem(SPD_MID_HA_SPIDER_MULTI_RANGE_READ_NEXT_FIRST_3);
}
error_num = 0;
if ((range_res = mrr_funcs.next(mrr_iter, &mrr_cur_range)))
@@ -6068,7 +6073,7 @@ FT_INFO *ha_spider::ft_init_ext(
if (!ft_current)
{
if (!(ft_current = (st_spider_ft_info *)
- spider_malloc(spider_current_trx, 2, sizeof(st_spider_ft_info),
+ spider_malloc(spider_current_trx, SPD_MID_HA_SPIDER_FT_INIT_EXT_1, sizeof(st_spider_ft_info),
MYF(MY_WME | MY_ZEROFILL))))
{
my_error(HA_ERR_OUT_OF_MEM, MYF(0));
@@ -6234,7 +6239,7 @@ int ha_spider::ft_read_internal(
DBUG_RETURN(check_error_mode_eof(error_num));
}
} else {
- uint dbton_id = share->use_sql_dbton_ids[roop_count];
+ uint dbton_id = share->sql_dbton_ids[roop_count];
spider_db_handler *dbton_hdl = dbton_handler[dbton_id];
SPIDER_CONN *conn = conns[roop_count];
pthread_mutex_assert_not_owner(&conn->mta_conn_mutex);
@@ -8484,7 +8489,7 @@ int ha_spider::create(
if (form->s->keys > 0)
{
if (!(tmp_share.static_key_cardinality = (longlong *)
- spider_bulk_malloc(spider_current_trx, 246, MYF(MY_WME),
+ spider_bulk_malloc(spider_current_trx, SPD_MID_HA_SPIDER_CREATE_1, MYF(MY_WME),
&tmp_share.static_key_cardinality,
(uint) (sizeof(*tmp_share.static_key_cardinality) * form->s->keys),
NullS))
@@ -8499,7 +8504,7 @@ int ha_spider::create(
}
}
for (roop_count = 0; roop_count < form->s->keys; roop_count++)
- tmp_share.key_hint[roop_count].init_calc_mem(85);
+ tmp_share.key_hint[roop_count].init_calc_mem(SPD_MID_HA_SPIDER_CREATE_2);
DBUG_PRINT("info",("spider tmp_share.key_hint=%p", tmp_share.key_hint));
if ((error_num = spider_parse_connect_info(&tmp_share, form->s,
form->part_info,
@@ -8521,7 +8526,10 @@ int ha_spider::create(
if (
thd->lex->create_info.or_replace() &&
(error_num = spider_delete_tables(
- table_tables, tmp_share.table_name, &dummy))
+ table_tables, tmp_share.table_name, &dummy)) &&
+ /* In this context, no key found in mysql.spider_tables means
+ the Spider table does not exist */
+ error_num != HA_ERR_KEY_NOT_FOUND
) {
goto error;
}
@@ -8948,12 +8956,6 @@ int ha_spider::delete_table(
)
need_lock = TRUE;
- if ((error_num = spider_sys_delete_table_sts(
- current_thd, name, name_len, need_lock)))
- goto error;
- if ((error_num = spider_sys_delete_table_crd(
- current_thd, name, name_len, need_lock)))
- goto error;
if (
!(table_tables = spider_open_sys_table(
current_thd, SPIDER_SYS_TABLES_TABLE_NAME_STR,
@@ -8966,6 +8968,10 @@ int ha_spider::delete_table(
(error_num = spider_delete_tables(
table_tables, name, &old_link_count))
) {
+ /* In this context, no key found in mysql.spider_tables means
+ the Spider table does not exist */
+ if (error_num == HA_ERR_KEY_NOT_FOUND)
+ error_num= HA_ERR_NO_SUCH_TABLE;
goto error;
}
spider_close_sys_table(current_thd, table_tables,
@@ -9157,7 +9163,7 @@ const COND *ha_spider::cond_push(
{
SPIDER_CONDITION *tmp_cond;
if (!(tmp_cond = (SPIDER_CONDITION *)
- spider_malloc(spider_current_trx, 3, sizeof(*tmp_cond), MYF(MY_WME)))
+ spider_malloc(spider_current_trx, SPD_MID_HA_SPIDER_COND_PUSH_1, sizeof(*tmp_cond), MYF(MY_WME)))
)
DBUG_RETURN(cond);
tmp_cond->cond = (COND *) cond;
@@ -9786,7 +9792,7 @@ int ha_spider::drop_tmp_tables()
) {
if (spider_bit_is_set(result_list.tmp_table_created, roop_count))
{
- uint dbton_id = share->use_sql_dbton_ids[roop_count];
+ uint dbton_id = share->sql_dbton_ids[roop_count];
spider_db_handler *dbton_hdl = dbton_handler[dbton_id];
SPIDER_CONN *conn = conns[roop_count];
pthread_mutex_assert_not_owner(&conn->mta_conn_mutex);