Commit 9cbd53bf authored by Sergey Vojtovich's avatar Sergey Vojtovich

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
parents 815c607d 240e62b8
...@@ -1191,6 +1191,7 @@ THR_LOCK_DATA **ha_spider::store_lock( ...@@ -1191,6 +1191,7 @@ THR_LOCK_DATA **ha_spider::store_lock(
lock_type = TL_READ; lock_type = TL_READ;
if ( if (
lock_type >= TL_WRITE_CONCURRENT_INSERT && lock_type <= TL_WRITE && lock_type >= TL_WRITE_CONCURRENT_INSERT && lock_type <= TL_WRITE &&
lock_type != TL_WRITE_DELAYED &&
!thd->in_lock_tables && !thd_tablespace_op(thd) !thd->in_lock_tables && !thd_tablespace_op(thd)
) )
lock_type = TL_WRITE_ALLOW_WRITE; lock_type = TL_WRITE_ALLOW_WRITE;
...@@ -7597,6 +7598,12 @@ FT_INFO *ha_spider::ft_init_ext( ...@@ -7597,6 +7598,12 @@ FT_INFO *ha_spider::ft_init_ext(
DBUG_PRINT("info",("spider flags=%u", flags)); DBUG_PRINT("info",("spider flags=%u", flags));
DBUG_PRINT("info",("spider inx=%u", inx)); DBUG_PRINT("info",("spider inx=%u", inx));
DBUG_PRINT("info",("spider key=%s", key->c_ptr_safe())); 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; tmp_ft_info = ft_current;
if (ft_current) if (ft_current)
ft_current = ft_current->next; ft_current = ft_current->next;
...@@ -7611,7 +7618,7 @@ FT_INFO *ha_spider::ft_init_ext( ...@@ -7611,7 +7618,7 @@ FT_INFO *ha_spider::ft_init_ext(
spider_malloc(spider_current_trx, 2, sizeof(st_spider_ft_info), spider_malloc(spider_current_trx, 2, sizeof(st_spider_ft_info),
MYF(MY_WME | MY_ZEROFILL)))) 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); DBUG_RETURN(NULL);
} }
if (tmp_ft_info) if (tmp_ft_info)
......
...@@ -4512,18 +4512,24 @@ SPIDER_SHARE *spider_get_share( ...@@ -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, spider, sts_interval, sts_mode,
#ifdef WITH_PARTITION_STORAGE_ENGINE #ifdef WITH_PARTITION_STORAGE_ENGINE
sts_sync, sts_sync,
#endif #endif
1, HA_STATUS_VARIABLE | HA_STATUS_CONST | HA_STATUS_AUTO); 1, HA_STATUS_VARIABLE | HA_STATUS_CONST | HA_STATUS_AUTO))
spider_get_crd(share, spider->search_link_idx, tmp_time, {
thd->clear_error();
}
if (spider_get_crd(share, spider->search_link_idx, tmp_time,
spider, table, crd_interval, crd_mode, spider, table, crd_interval, crd_mode,
#ifdef WITH_PARTITION_STORAGE_ENGINE #ifdef WITH_PARTITION_STORAGE_ENGINE
crd_sync, crd_sync,
#endif #endif
1); 1))
{
thd->clear_error();
}
/* /*
if ( if (
(*error_num = spider_get_sts(share, spider->search_link_idx, tmp_time, (*error_num = spider_get_sts(share, spider->search_link_idx, tmp_time,
...@@ -4935,18 +4941,24 @@ SPIDER_SHARE *spider_get_share( ...@@ -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, tmp_time, spider, sts_interval, sts_mode,
#ifdef WITH_PARTITION_STORAGE_ENGINE #ifdef WITH_PARTITION_STORAGE_ENGINE
sts_sync, sts_sync,
#endif #endif
1, HA_STATUS_VARIABLE | HA_STATUS_CONST | HA_STATUS_AUTO); 1, HA_STATUS_VARIABLE | HA_STATUS_CONST | HA_STATUS_AUTO))
spider_get_crd(share, spider->search_link_idx, {
thd->clear_error();
}
if (spider_get_crd(share, spider->search_link_idx,
tmp_time, spider, table, crd_interval, crd_mode, tmp_time, spider, table, crd_interval, crd_mode,
#ifdef WITH_PARTITION_STORAGE_ENGINE #ifdef WITH_PARTITION_STORAGE_ENGINE
crd_sync, crd_sync,
#endif #endif
1); 1))
{
thd->clear_error();
}
/* /*
if ( if (
(*error_num = spider_get_sts(share, spider->search_link_idx, (*error_num = spider_get_sts(share, spider->search_link_idx,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment