summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Vojtovich <svoj@mariadb.org>2013-09-23 16:22:31 +0400
committerSergey Vojtovich <svoj@mariadb.org>2013-09-23 16:22:31 +0400
commit9cbd53bfb2e72376080a3951185e4780b0519718 (patch)
tree24aab1c8944475b5b43e1fe2c2a4db9c4fa6765c
parent815c607dcfa4a43be73e42c325956eda16e24c91 (diff)
parent240e62b8906bd07515104e976e86c09987a9a73d (diff)
downloadmariadb-git-9cbd53bfb2e72376080a3951185e4780b0519718.tar.gz
Merge Spider updates. Fixes
MDEV-4735 - Assertion `! is_set()' fails in Diagnostics_area::set_ok_status on attempt to create a temporary SPIDER table connecting to non-existing source MDEV-4737 - Server crashes in spider_mysql_handler::append_match_against on SELECT .. MATCH .. AGAINST .. BOOLEAN MODE MDEV-4738 - INSERT DELAYED on a SPIDER table doesn't produce ER_DELAYED_NOT_SUPPORTED, doesn't work like delayed, and doesn't honor lock_wait_timeout like normal INSERT
-rw-r--r--storage/spider/ha_spider.cc9
-rw-r--r--storage/spider/spd_table.cc28
2 files changed, 28 insertions, 9 deletions
diff --git a/storage/spider/ha_spider.cc b/storage/spider/ha_spider.cc
index 726362872aa..841b48000f1 100644
--- a/storage/spider/ha_spider.cc
+++ b/storage/spider/ha_spider.cc
@@ -1191,6 +1191,7 @@ THR_LOCK_DATA **ha_spider::store_lock(
lock_type = TL_READ;
if (
lock_type >= TL_WRITE_CONCURRENT_INSERT && lock_type <= TL_WRITE &&
+ lock_type != TL_WRITE_DELAYED &&
!thd->in_lock_tables && !thd_tablespace_op(thd)
)
lock_type = TL_WRITE_ALLOW_WRITE;
@@ -7597,6 +7598,12 @@ FT_INFO *ha_spider::ft_init_ext(
DBUG_PRINT("info",("spider flags=%u", flags));
DBUG_PRINT("info",("spider inx=%u", inx));
DBUG_PRINT("info",("spider key=%s", key->c_ptr_safe()));
+ if (inx == NO_SUCH_KEY)
+ {
+ my_error(ER_FT_MATCHING_KEY_NOT_FOUND, MYF(0));
+ DBUG_RETURN(NULL);
+ }
+
tmp_ft_info = ft_current;
if (ft_current)
ft_current = ft_current->next;
@@ -7611,7 +7618,7 @@ FT_INFO *ha_spider::ft_init_ext(
spider_malloc(spider_current_trx, 2, sizeof(st_spider_ft_info),
MYF(MY_WME | MY_ZEROFILL))))
{
- store_error_num = HA_ERR_OUT_OF_MEM;
+ my_error(HA_ERR_OUT_OF_MEM, MYF(0));
DBUG_RETURN(NULL);
}
if (tmp_ft_info)
diff --git a/storage/spider/spd_table.cc b/storage/spider/spd_table.cc
index 3f67d1f5edf..0e66bf275c9 100644
--- a/storage/spider/spd_table.cc
+++ b/storage/spider/spd_table.cc
@@ -4512,18 +4512,24 @@ SPIDER_SHARE *spider_get_share(
}
}
- spider_get_sts(share, spider->search_link_idx, tmp_time,
+ if (spider_get_sts(share, spider->search_link_idx, tmp_time,
spider, sts_interval, sts_mode,
#ifdef WITH_PARTITION_STORAGE_ENGINE
sts_sync,
#endif
- 1, HA_STATUS_VARIABLE | HA_STATUS_CONST | HA_STATUS_AUTO);
- spider_get_crd(share, spider->search_link_idx, tmp_time,
+ 1, HA_STATUS_VARIABLE | HA_STATUS_CONST | HA_STATUS_AUTO))
+ {
+ thd->clear_error();
+ }
+ if (spider_get_crd(share, spider->search_link_idx, tmp_time,
spider, table, crd_interval, crd_mode,
#ifdef WITH_PARTITION_STORAGE_ENGINE
crd_sync,
#endif
- 1);
+ 1))
+ {
+ thd->clear_error();
+ }
/*
if (
(*error_num = spider_get_sts(share, spider->search_link_idx, tmp_time,
@@ -4935,18 +4941,24 @@ SPIDER_SHARE *spider_get_share(
}
}
- spider_get_sts(share, spider->search_link_idx,
+ if (spider_get_sts(share, spider->search_link_idx,
tmp_time, spider, sts_interval, sts_mode,
#ifdef WITH_PARTITION_STORAGE_ENGINE
sts_sync,
#endif
- 1, HA_STATUS_VARIABLE | HA_STATUS_CONST | HA_STATUS_AUTO);
- spider_get_crd(share, spider->search_link_idx,
+ 1, HA_STATUS_VARIABLE | HA_STATUS_CONST | HA_STATUS_AUTO))
+ {
+ thd->clear_error();
+ }
+ if (spider_get_crd(share, spider->search_link_idx,
tmp_time, spider, table, crd_interval, crd_mode,
#ifdef WITH_PARTITION_STORAGE_ENGINE
crd_sync,
#endif
- 1);
+ 1))
+ {
+ thd->clear_error();
+ }
/*
if (
(*error_num = spider_get_sts(share, spider->search_link_idx,