mirror of
https://github.com/postgres/postgres.git
synced 2025-04-21 12:05:57 +03:00
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
This commit is contained in:
parent
696684d878
commit
aa698d7535
@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
#include "catalog/pg_type.h"
|
#include "catalog/pg_type.h"
|
||||||
#include "tsearch/ts_locale.h"
|
#include "tsearch/ts_locale.h"
|
||||||
|
#include "utils/lsyscache.h"
|
||||||
#include "utils/memutils.h"
|
#include "utils/memutils.h"
|
||||||
#include "utils/pg_crc.h"
|
#include "utils/pg_crc.h"
|
||||||
|
|
||||||
@ -80,12 +81,17 @@ Datum
|
|||||||
set_limit(PG_FUNCTION_ARGS)
|
set_limit(PG_FUNCTION_ARGS)
|
||||||
{
|
{
|
||||||
float4 nlimit = PG_GETARG_FLOAT4(0);
|
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);
|
PG_RETURN_FLOAT4(similarity_threshold);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user