diff options
author | Kentoku SHIBA <kentokushiba@gmail.com> | 2019-04-17 01:55:03 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-17 01:55:03 +0900 |
commit | 653a56fd956f472e17522ea593696a64367472ac (patch) | |
tree | 25035f7ccfb47557c702a66889501ba18fcd303b /storage | |
parent | 645f77a6bcb25900d31c582df49d97e5eeeeaada (diff) | |
download | mariadb-git-653a56fd956f472e17522ea593696a64367472ac.tar.gz |
MDEV-17508 Fix bug for spider when using "not like" (#1282)
Diffstat (limited to 'storage')
-rw-r--r-- | storage/spider/spd_db_mysql.cc | 6 | ||||
-rw-r--r-- | storage/spider/spd_db_oracle.cc | 20 | ||||
-rw-r--r-- | storage/spider/spd_environ.h | 1 |
3 files changed, 25 insertions, 2 deletions
diff --git a/storage/spider/spd_db_mysql.cc b/storage/spider/spd_db_mysql.cc index 99fc5b55dd5..7a8b016824c 100644 --- a/storage/spider/spd_db_mysql.cc +++ b/storage/spider/spd_db_mysql.cc @@ -4864,9 +4864,10 @@ int spider_db_mbase_util::open_item_func( } break; case Item_func::LIKE_FUNC: +#ifdef SPIDER_LIKE_FUNC_HAS_GET_NEGATED if (str) { - if (((Item_func_like *)item_func)->negated) + if (((Item_func_like *)item_func)->get_negated()) { func_name = SPIDER_SQL_NOT_LIKE_STR; func_name_length = SPIDER_SQL_NOT_LIKE_LEN; @@ -4878,6 +4879,9 @@ int spider_db_mbase_util::open_item_func( } } break; +#else + DBUG_RETURN(ER_SPIDER_COND_SKIP_NUM); +#endif default: THD *thd = spider->trx->thd; SPIDER_SHARE *share = spider->share; diff --git a/storage/spider/spd_db_oracle.cc b/storage/spider/spd_db_oracle.cc index 439556af481..e2bc3644989 100644 --- a/storage/spider/spd_db_oracle.cc +++ b/storage/spider/spd_db_oracle.cc @@ -4043,13 +4043,31 @@ int spider_db_oracle_util::open_item_func( case Item_func::LE_FUNC: case Item_func::GE_FUNC: case Item_func::GT_FUNC: - case Item_func::LIKE_FUNC: if (str) { func_name = (char*) item_func->func_name(); func_name_length = strlen(func_name); } break; + case Item_func::LIKE_FUNC: +#ifdef SPIDER_LIKE_FUNC_HAS_GET_NEGATED + if (str) + { + if (((Item_func_like *)item_func)->get_negated()) + { + func_name = SPIDER_SQL_NOT_LIKE_STR; + func_name_length = SPIDER_SQL_NOT_LIKE_LEN; + } + else + { + func_name = (char*)item_func->func_name(); + func_name_length = strlen(func_name); + } + } + break; +#else + DBUG_RETURN(ER_SPIDER_COND_SKIP_NUM); +#endif default: THD *thd = spider->trx->thd; SPIDER_SHARE *share = spider->share; diff --git a/storage/spider/spd_environ.h b/storage/spider/spd_environ.h index ded2927482b..42cbf812bbb 100644 --- a/storage/spider/spd_environ.h +++ b/storage/spider/spd_environ.h @@ -50,5 +50,6 @@ #if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID >= 100400 #define SPIDER_USE_CONST_ITEM_FOR_STRING_INT_REAL_DECIMAL_DATE_ITEM #define SPIDER_SQL_CACHE_IS_IN_LEX +#define SPIDER_LIKE_FUNC_HAS_GET_NEGATED #endif #endif /* SPD_ENVIRON_INCLUDED */ |