summaryrefslogtreecommitdiff
path: root/storage/spider
diff options
context:
space:
mode:
authorKentoku SHIBA <kentokushiba@gmail.com>2014-03-25 05:38:08 +0900
committerKentoku SHIBA <kentokushiba@gmail.com>2014-03-25 05:38:08 +0900
commit89441877e74c83c625e55b412d799ca1e987beaa (patch)
tree93a2574a48c14abe7b324b933c10d66313aaa6d2 /storage/spider
parent487a064783e2b4c1d1a8205411335b672f4edf58 (diff)
downloadmariadb-git-89441877e74c83c625e55b412d799ca1e987beaa.tar.gz
fix for MariaDB 10.0.9
Diffstat (limited to 'storage/spider')
-rw-r--r--storage/spider/ha_spider.cc32
-rw-r--r--storage/spider/spd_conn.cc24
-rw-r--r--storage/spider/spd_db_conn.cc9
-rw-r--r--storage/spider/spd_db_handlersocket.cc9
-rw-r--r--storage/spider/spd_db_include.h4
-rw-r--r--storage/spider/spd_db_mysql.cc9
-rw-r--r--storage/spider/spd_db_oracle.cc9
-rw-r--r--storage/spider/spd_include.h6
-rw-r--r--storage/spider/spd_table.cc15
9 files changed, 90 insertions, 27 deletions
diff --git a/storage/spider/ha_spider.cc b/storage/spider/ha_spider.cc
index d4d597e276f..664df62e586 100644
--- a/storage/spider/ha_spider.cc
+++ b/storage/spider/ha_spider.cc
@@ -4403,12 +4403,12 @@ int ha_spider::read_multi_range_first_internal(
#ifdef HA_MRR_USE_DEFAULT_IMPL
(error_num = spider_db_append_key_where(
&mrr_cur_range.start_key,
- test(mrr_cur_range.range_flag & EQ_RANGE) ?
+ SPIDER_TEST(mrr_cur_range.range_flag & EQ_RANGE) ?
NULL : &mrr_cur_range.end_key, this))
#else
(error_num = spider_db_append_key_where(
&multi_range_curr->start_key,
- test(multi_range_curr->range_flag & EQ_RANGE) ?
+ SPIDER_TEST(multi_range_curr->range_flag & EQ_RANGE) ?
NULL : &multi_range_curr->end_key, this))
#endif
)
@@ -4849,9 +4849,9 @@ int ha_spider::read_multi_range_first_internal(
!(sql_kinds & SPIDER_SQL_KIND_HS) &&
#endif
#ifdef HA_MRR_USE_DEFAULT_IMPL
- test(mrr_cur_range.range_flag & EQ_RANGE)
+ SPIDER_TEST(mrr_cur_range.range_flag & EQ_RANGE)
#else
- test(multi_range_curr->range_flag & EQ_RANGE)
+ SPIDER_TEST(multi_range_curr->range_flag & EQ_RANGE)
#endif
) {
if (
@@ -4966,11 +4966,11 @@ int ha_spider::read_multi_range_first_internal(
{
if (
#ifdef HA_MRR_USE_DEFAULT_IMPL
- !test(mrr_cur_range.range_flag & EQ_RANGE) ||
+ !SPIDER_TEST(mrr_cur_range.range_flag & EQ_RANGE) ||
result_list.tmp_table_join_key_part_map !=
mrr_cur_range.start_key.keypart_map
#else
- !test(multi_range_curr->range_flag & EQ_RANGE) ||
+ !SPIDER_TEST(multi_range_curr->range_flag & EQ_RANGE) ||
result_list.tmp_table_join_key_part_map !=
multi_range_curr->start_key.keypart_map
#endif
@@ -5138,12 +5138,12 @@ int ha_spider::read_multi_range_first_internal(
#ifdef HA_MRR_USE_DEFAULT_IMPL
(error_num = spider_db_append_key_where(
&mrr_cur_range.start_key,
- test(mrr_cur_range.range_flag & EQ_RANGE) ?
+ SPIDER_TEST(mrr_cur_range.range_flag & EQ_RANGE) ?
NULL : &mrr_cur_range.end_key, this))
#else
(error_num = spider_db_append_key_where(
&multi_range_curr->start_key,
- test(multi_range_curr->range_flag & EQ_RANGE) ?
+ SPIDER_TEST(multi_range_curr->range_flag & EQ_RANGE) ?
NULL : &multi_range_curr->end_key, this))
#endif
)
@@ -5813,12 +5813,12 @@ int ha_spider::read_multi_range_next(
#ifdef HA_MRR_USE_DEFAULT_IMPL
(error_num = spider_db_append_key_where(
&mrr_cur_range.start_key,
- test(mrr_cur_range.range_flag & EQ_RANGE) ?
+ SPIDER_TEST(mrr_cur_range.range_flag & EQ_RANGE) ?
NULL : &mrr_cur_range.end_key, this))
#else
(error_num = spider_db_append_key_where(
&multi_range_curr->start_key,
- test(multi_range_curr->range_flag & EQ_RANGE) ?
+ SPIDER_TEST(multi_range_curr->range_flag & EQ_RANGE) ?
NULL : &multi_range_curr->end_key, this))
#endif
)
@@ -6270,9 +6270,9 @@ int ha_spider::read_multi_range_next(
!(sql_kinds & SPIDER_SQL_KIND_HS) &&
#endif
#ifdef HA_MRR_USE_DEFAULT_IMPL
- test(mrr_cur_range.range_flag & EQ_RANGE)
+ SPIDER_TEST(mrr_cur_range.range_flag & EQ_RANGE)
#else
- test(multi_range_curr->range_flag & EQ_RANGE)
+ SPIDER_TEST(multi_range_curr->range_flag & EQ_RANGE)
#endif
) {
if (
@@ -6388,11 +6388,11 @@ int ha_spider::read_multi_range_next(
{
if (
#ifdef HA_MRR_USE_DEFAULT_IMPL
- !test(mrr_cur_range.range_flag & EQ_RANGE) ||
+ !SPIDER_TEST(mrr_cur_range.range_flag & EQ_RANGE) ||
result_list.tmp_table_join_key_part_map !=
mrr_cur_range.start_key.keypart_map
#else
- !test(multi_range_curr->range_flag & EQ_RANGE) ||
+ !SPIDER_TEST(multi_range_curr->range_flag & EQ_RANGE) ||
result_list.tmp_table_join_key_part_map !=
multi_range_curr->start_key.keypart_map
#endif
@@ -6555,12 +6555,12 @@ int ha_spider::read_multi_range_next(
#ifdef HA_MRR_USE_DEFAULT_IMPL
(error_num = spider_db_append_key_where(
&mrr_cur_range.start_key,
- test(mrr_cur_range.range_flag & EQ_RANGE) ?
+ SPIDER_TEST(mrr_cur_range.range_flag & EQ_RANGE) ?
NULL : &mrr_cur_range.end_key, this))
#else
(error_num = spider_db_append_key_where(
&multi_range_curr->start_key,
- test(multi_range_curr->range_flag & EQ_RANGE) ?
+ SPIDER_TEST(multi_range_curr->range_flag & EQ_RANGE) ?
NULL : &multi_range_curr->end_key, this))
#endif
)
diff --git a/storage/spider/spd_conn.cc b/storage/spider/spd_conn.cc
index 16a4da85789..5360946d482 100644
--- a/storage/spider/spd_conn.cc
+++ b/storage/spider/spd_conn.cc
@@ -2874,10 +2874,15 @@ void *spider_bg_sts_action(
if (spider.search_link_idx == -1)
{
spider_trx_set_link_idx_for_all(&spider);
+/*
spider.search_link_idx = spider_conn_next_link_idx(
thd, share->link_statuses, share->access_balances,
spider.conn_link_idx, spider.search_link_idx, share->link_count,
SPIDER_LINK_STATUS_OK);
+*/
+ spider.search_link_idx = spider_conn_first_link_idx(thd,
+ share->link_statuses, share->access_balances, spider.conn_link_idx,
+ share->link_count, SPIDER_LINK_STATUS_OK);
}
if (spider.search_link_idx >= 0)
{
@@ -2893,6 +2898,7 @@ void *spider_bg_sts_action(
&error_num);
conns[spider.search_link_idx]->error_mode = 0;
pthread_mutex_unlock(&spider_global_trx_mutex);
+/*
if (
error_num &&
share->monitoring_kind[spider.search_link_idx] &&
@@ -2915,8 +2921,10 @@ void *spider_bg_sts_action(
);
lex_end(thd->lex);
}
+*/
+ spider.search_link_idx = -1;
}
- if (conns[spider.search_link_idx])
+ if (spider.search_link_idx != -1 && conns[spider.search_link_idx])
{
#ifdef WITH_PARTITION_STORAGE_ENGINE
if (spider_get_sts(share, spider.search_link_idx,
@@ -2931,6 +2939,7 @@ void *spider_bg_sts_action(
2, HA_STATUS_CONST | HA_STATUS_VARIABLE))
#endif
{
+/*
if (
share->monitoring_kind[spider.search_link_idx] &&
need_mons[spider.search_link_idx]
@@ -2952,6 +2961,7 @@ void *spider_bg_sts_action(
);
lex_end(thd->lex);
}
+*/
spider.search_link_idx = -1;
}
}
@@ -3256,10 +3266,15 @@ void *spider_bg_crd_action(
if (spider.search_link_idx == -1)
{
spider_trx_set_link_idx_for_all(&spider);
+/*
spider.search_link_idx = spider_conn_next_link_idx(
thd, share->link_statuses, share->access_balances,
spider.conn_link_idx, spider.search_link_idx, share->link_count,
SPIDER_LINK_STATUS_OK);
+*/
+ spider.search_link_idx = spider_conn_first_link_idx(thd,
+ share->link_statuses, share->access_balances, spider.conn_link_idx,
+ share->link_count, SPIDER_LINK_STATUS_OK);
}
if (spider.search_link_idx >= 0)
{
@@ -3275,6 +3290,7 @@ void *spider_bg_crd_action(
&error_num);
conns[spider.search_link_idx]->error_mode = 0;
pthread_mutex_unlock(&spider_global_trx_mutex);
+/*
if (
error_num &&
share->monitoring_kind[spider.search_link_idx] &&
@@ -3297,8 +3313,10 @@ void *spider_bg_crd_action(
);
lex_end(thd->lex);
}
+*/
+ spider.search_link_idx = -1;
}
- if (conns[spider.search_link_idx])
+ if (spider.search_link_idx != -1 && conns[spider.search_link_idx])
{
#ifdef WITH_PARTITION_STORAGE_ENGINE
if (spider_get_crd(share, spider.search_link_idx,
@@ -3313,6 +3331,7 @@ void *spider_bg_crd_action(
2))
#endif
{
+/*
if (
share->monitoring_kind[spider.search_link_idx] &&
need_mons[spider.search_link_idx]
@@ -3334,6 +3353,7 @@ void *spider_bg_crd_action(
);
lex_end(thd->lex);
}
+*/
spider.search_link_idx = -1;
}
}
diff --git a/storage/spider/spd_db_conn.cc b/storage/spider/spd_db_conn.cc
index 2ad525668f9..48c617042d3 100644
--- a/storage/spider/spd_db_conn.cc
+++ b/storage/spider/spd_db_conn.cc
@@ -9025,16 +9025,19 @@ int spider_db_udf_ping_table(
bool use_where,
longlong limit
) {
- int error_num, need_mon = 0;
- uint tmp_conn_link_idx = 0;
- ha_spider spider;
+ int error_num;
DBUG_ENTER("spider_db_udf_ping_table");
if (!pthread_mutex_trylock(&table_mon_list->monitor_mutex))
{
+ int need_mon = 0;
+ uint tmp_conn_link_idx = 0;
+ ha_spider spider;
+ uchar db_request_phase = 0;
spider.share = share;
spider.trx = trx;
spider.need_mons = &need_mon;
spider.conn_link_idx = &tmp_conn_link_idx;
+ spider.db_request_phase = &db_request_phase;
pthread_mutex_lock(&conn->mta_conn_mutex);
SPIDER_SET_FILE_POS(&conn->mta_conn_mutex_file_pos);
conn->need_mon = &need_mon;
diff --git a/storage/spider/spd_db_handlersocket.cc b/storage/spider/spd_db_handlersocket.cc
index 7ab8feda9b9..bf2a0bae419 100644
--- a/storage/spider/spd_db_handlersocket.cc
+++ b/storage/spider/spd_db_handlersocket.cc
@@ -3262,10 +3262,15 @@ int spider_db_handlersocket_util::open_item_func(
func_name_length = strlen(func_name);
DBUG_PRINT("info",("spider func_name = %s", func_name));
DBUG_PRINT("info",("spider func_name_length = %d", func_name_length));
- if (str->reserve(SPIDER_SQL_MBR_LEN + func_name_length +
- SPIDER_SQL_OPEN_PAREN_LEN))
+ if (str->reserve(
+#ifndef SPIDER_ITEM_GEOFUNC_NAME_HAS_MBR
+ SPIDER_SQL_MBR_LEN +
+#endif
+ func_name_length + SPIDER_SQL_OPEN_PAREN_LEN))
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
+#ifndef SPIDER_ITEM_GEOFUNC_NAME_HAS_MBR
str->q_append(SPIDER_SQL_MBR_STR, SPIDER_SQL_MBR_LEN);
+#endif
str->q_append(func_name, func_name_length);
str->q_append(SPIDER_SQL_OPEN_PAREN_STR, SPIDER_SQL_OPEN_PAREN_LEN);
}
diff --git a/storage/spider/spd_db_include.h b/storage/spider/spd_db_include.h
index 5c27e0bd0ad..40f547df35e 100644
--- a/storage/spider/spd_db_include.h
+++ b/storage/spider/spd_db_include.h
@@ -36,6 +36,10 @@
#define SPIDER_HAS_DECIMAL_OPERATION_RESULTS_VALUE_TYPE
#endif
+#if defined(MARIADB_BASE_VERSION)
+#define SPIDER_ITEM_GEOFUNC_NAME_HAS_MBR
+#endif
+
class spider_db_conn;
typedef spider_db_conn SPIDER_DB_CONN;
class spider_db_result;
diff --git a/storage/spider/spd_db_mysql.cc b/storage/spider/spd_db_mysql.cc
index e3a146aa0ee..fb1e2b64578 100644
--- a/storage/spider/spd_db_mysql.cc
+++ b/storage/spider/spd_db_mysql.cc
@@ -3649,10 +3649,15 @@ int spider_db_mysql_util::open_item_func(
func_name_length = strlen(func_name);
DBUG_PRINT("info",("spider func_name = %s", func_name));
DBUG_PRINT("info",("spider func_name_length = %d", func_name_length));
- if (str->reserve(SPIDER_SQL_MBR_LEN + func_name_length +
- SPIDER_SQL_OPEN_PAREN_LEN))
+ if (str->reserve(
+#ifndef SPIDER_ITEM_GEOFUNC_NAME_HAS_MBR
+ SPIDER_SQL_MBR_LEN +
+#endif
+ func_name_length + SPIDER_SQL_OPEN_PAREN_LEN))
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
+#ifndef SPIDER_ITEM_GEOFUNC_NAME_HAS_MBR
str->q_append(SPIDER_SQL_MBR_STR, SPIDER_SQL_MBR_LEN);
+#endif
str->q_append(func_name, func_name_length);
str->q_append(SPIDER_SQL_OPEN_PAREN_STR, SPIDER_SQL_OPEN_PAREN_LEN);
}
diff --git a/storage/spider/spd_db_oracle.cc b/storage/spider/spd_db_oracle.cc
index c5e995af38c..9ebf42859a7 100644
--- a/storage/spider/spd_db_oracle.cc
+++ b/storage/spider/spd_db_oracle.cc
@@ -3550,10 +3550,15 @@ int spider_db_oracle_util::open_item_func(
func_name_length = strlen(func_name);
DBUG_PRINT("info",("spider func_name = %s", func_name));
DBUG_PRINT("info",("spider func_name_length = %d", func_name_length));
- if (str->reserve(SPIDER_SQL_MBR_LEN + func_name_length +
- SPIDER_SQL_OPEN_PAREN_LEN))
+ if (str->reserve(
+#ifndef SPIDER_ITEM_GEOFUNC_NAME_HAS_MBR
+ SPIDER_SQL_MBR_LEN +
+#endif
+ func_name_length + SPIDER_SQL_OPEN_PAREN_LEN))
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
+#ifndef SPIDER_ITEM_GEOFUNC_NAME_HAS_MBR
str->q_append(SPIDER_SQL_MBR_STR, SPIDER_SQL_MBR_LEN);
+#endif
str->q_append(func_name, func_name_length);
str->q_append(SPIDER_SQL_OPEN_PAREN_STR, SPIDER_SQL_OPEN_PAREN_LEN);
}
diff --git a/storage/spider/spd_include.h b/storage/spider/spd_include.h
index 9f3d7f8ab89..424cbd40905 100644
--- a/storage/spider/spd_include.h
+++ b/storage/spider/spd_include.h
@@ -99,6 +99,12 @@
#define SPIDER_WARN_LEVEL_NOTE MYSQL_ERROR::WARN_LEVEL_NOTE
#endif
+#if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID >= 100009
+#define SPIDER_TEST(A) MY_TEST(A)
+#else
+#define SPIDER_TEST(A) test(A)
+#endif
+
#if MYSQL_VERSION_ID >= 50500
#define SPIDER_HAS_HASH_VALUE_TYPE
#endif
diff --git a/storage/spider/spd_table.cc b/storage/spider/spd_table.cc
index e868bae19ce..65c8bebbdcb 100644
--- a/storage/spider/spd_table.cc
+++ b/storage/spider/spd_table.cc
@@ -7713,8 +7713,23 @@ bool spider_check_direct_order_limit(
longlong direct_order_limit = spider_param_direct_order_limit(thd,
share->direct_order_limit);
+ DBUG_PRINT("info",("spider direct_order_limit=%lld", direct_order_limit));
if (direct_order_limit)
{
+ DBUG_PRINT("info",("spider first_check=%s",
+ first_check ? "TRUE" : "FALSE"));
+ DBUG_PRINT("info",("spider (select_lex->options & OPTION_FOUND_ROWS)=%s",
+ (select_lex->options & OPTION_FOUND_ROWS) ? "TRUE" : "FALSE"));
+ DBUG_PRINT("info",("spider direct_aggregate=%s",
+ spider->result_list.direct_aggregate ? "TRUE" : "FALSE"));
+ DBUG_PRINT("info",("spider select_lex->group_list.elements=%u",
+ select_lex->group_list.elements));
+ DBUG_PRINT("info",("spider select_lex->with_sum_func=%s",
+ select_lex->with_sum_func ? "TRUE" : "FALSE"));
+ DBUG_PRINT("info",("spider select_lex->having=%s",
+ select_lex->having ? "TRUE" : "FALSE"));
+ DBUG_PRINT("info",("spider select_lex->order_list.elements=%u",
+ select_lex->order_list.elements));
if (
!first_check ||
!select_lex->explicit_limit ||