Commit aa698d75 authored by Teodor Sigaev's avatar Teodor Sigaev

pg_trgm's set_limit() now uses SetConfigOption()

Deprecated set_limit() is modified to use SetConfigOption() to set
similarity_threshold which is actually an instance of
pg_trgm.similarity_threshold GUC variable. Previous coding directly sets
similarity_threshold what could cause an inconsistency between states of
actual variable and GUC representation.

Per gripe from Tom Lane
parent 696684d8
......@@ -9,6 +9,7 @@
#include "catalog/pg_type.h"
#include "tsearch/ts_locale.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
#include "utils/pg_crc.h"
......@@ -80,12 +81,17 @@ Datum
set_limit(PG_FUNCTION_ARGS)
{
float4 nlimit = PG_GETARG_FLOAT4(0);
char *nlimit_str;
Oid func_out_oid;
bool is_varlena;
getTypeOutputInfo(FLOAT4OID, &func_out_oid, &is_varlena);
nlimit_str = OidOutputFunctionCall(func_out_oid, Float4GetDatum(nlimit));
SetConfigOption("pg_trgm.similarity_threshold", nlimit_str,
PGC_USERSET, PGC_S_SESSION);
if (nlimit < 0 || nlimit > 1.0)
ereport(ERROR,
(errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
errmsg("wrong threshold, should be between 0 and 1")));
similarity_threshold = nlimit;
PG_RETURN_FLOAT4(similarity_threshold);
}
......
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