diff options
Diffstat (limited to 'contrib/pg_trgm/trgm_gist.c')
-rw-r--r-- | contrib/pg_trgm/trgm_gist.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/contrib/pg_trgm/trgm_gist.c b/contrib/pg_trgm/trgm_gist.c index e55dc19a65c..53e6830ab1b 100644 --- a/contrib/pg_trgm/trgm_gist.c +++ b/contrib/pg_trgm/trgm_gist.c @@ -221,6 +221,7 @@ gtrgm_consistent(PG_FUNCTION_ARGS) { case SimilarityStrategyNumber: case WordSimilarityStrategyNumber: + case StrictWordSimilarityStrategyNumber: qtrg = generate_trgm(VARDATA(query), querysize - VARHDRSZ); break; @@ -290,10 +291,11 @@ gtrgm_consistent(PG_FUNCTION_ARGS) { case SimilarityStrategyNumber: case WordSimilarityStrategyNumber: - /* Similarity search is exact. Word similarity search is inexact */ - *recheck = (strategy == WordSimilarityStrategyNumber); - nlimit = (strategy == SimilarityStrategyNumber) ? - similarity_threshold : word_similarity_threshold; + case StrictWordSimilarityStrategyNumber: + /* Similarity search is exact. (Strict) word similarity search is inexact */ + *recheck = (strategy != SimilarityStrategyNumber); + + nlimit = index_strategy_get_limit(strategy); if (GIST_LEAF(entry)) { /* all leafs contains orig trgm */ @@ -468,7 +470,9 @@ gtrgm_distance(PG_FUNCTION_ARGS) { case DistanceStrategyNumber: case WordDistanceStrategyNumber: - *recheck = strategy == WordDistanceStrategyNumber; + case StrictWordDistanceStrategyNumber: + /* Only plain trigram distance is exact */ + *recheck = (strategy != DistanceStrategyNumber); if (GIST_LEAF(entry)) { /* all leafs contains orig trgm */ |