summaryrefslogtreecommitdiff
path: root/storage/spider
diff options
context:
space:
mode:
authorKentoku SHIBA <kentokushiba@gmail.com>2013-08-24 14:51:19 +0900
committerKentoku SHIBA <kentokushiba@gmail.com>2013-08-24 14:51:19 +0900
commitf12e92db86877488ceb605f101e0a4a1253aea89 (patch)
treeb8eaada142f8a90bd48316d1b3a7f675938e06a9 /storage/spider
parent49a4bbe1e7e4e3a1abbc26740d45482de4b4b609 (diff)
downloadmariadb-git-f12e92db86877488ceb605f101e0a4a1253aea89.tar.gz
Fix for parallel search. #1129074
Diffstat (limited to 'storage/spider')
-rw-r--r--storage/spider/ha_spider.cc8
-rw-r--r--storage/spider/spd_conn.cc20
2 files changed, 20 insertions, 8 deletions
diff --git a/storage/spider/ha_spider.cc b/storage/spider/ha_spider.cc
index 8c0a9d16d8e..5f12d119149 100644
--- a/storage/spider/ha_spider.cc
+++ b/storage/spider/ha_spider.cc
@@ -6748,10 +6748,6 @@ int ha_spider::rnd_init(
memset(searched_bitmap, 0xFF, no_bytes_in_map(table->read_set));
}
-#ifndef WITHOUT_SPIDER_BG_SEARCH
- if ((error_num = spider_set_conn_bg_param(this)))
- DBUG_RETURN(error_num);
-#endif
set_select_column_mode();
result_list.keyread = FALSE;
@@ -6831,6 +6827,10 @@ int ha_spider::rnd_next_internal(
if (sql_kinds & SPIDER_SQL_KIND_HS)
DBUG_RETURN(HA_ERR_WRONG_COMMAND);
#endif
+#ifndef WITHOUT_SPIDER_BG_SEARCH
+ if ((error_num = spider_set_conn_bg_param(this)))
+ DBUG_RETURN(error_num);
+#endif
if ((error_num = rnd_handler_init()))
DBUG_RETURN(check_error_mode_eof(error_num));
check_direct_order_limit();
diff --git a/storage/spider/spd_conn.cc b/storage/spider/spd_conn.cc
index 13003207f9b..177f1221721 100644
--- a/storage/spider/spd_conn.cc
+++ b/storage/spider/spd_conn.cc
@@ -1467,11 +1467,23 @@ int spider_set_conn_bg_param(
else {
result_list->bgs_phase = 1;
- result_list->bgs_first_read =
- spider_param_bgs_first_read(thd, share->bgs_first_read);
- result_list->bgs_second_read =
- spider_param_bgs_second_read(thd, share->bgs_second_read);
result_list->bgs_split_read = spider_bg_split_read_param(spider);
+ if (spider->use_pre_call)
+ {
+ DBUG_PRINT("info",("spider use_pre_call=TRUE"));
+ result_list->bgs_first_read = result_list->bgs_split_read;
+ result_list->bgs_second_read = result_list->bgs_split_read;
+ } else {
+ DBUG_PRINT("info",("spider use_pre_call=FALSE"));
+ result_list->bgs_first_read =
+ spider_param_bgs_first_read(thd, share->bgs_first_read);
+ result_list->bgs_second_read =
+ spider_param_bgs_second_read(thd, share->bgs_second_read);
+ }
+ DBUG_PRINT("info",("spider bgs_split_read=%lld",
+ result_list->bgs_split_read));
+ DBUG_PRINT("info",("spider bgs_first_read=%lld", share->bgs_first_read));
+ DBUG_PRINT("info",("spider bgs_second_read=%lld", share->bgs_second_read));
result_list->split_read =
result_list->bgs_first_read > 0 ?