#include "tsearch/ts_locale.h"
#include "tsearch/ts_public.h"
#include "utils/builtins.h"
+#include "utils/lsyscache.h"
#include "utils/regproc.h"
+#include "utils/syscache.h"
PG_MODULE_MAGIC;
if (PG_NARGS() == 1)
{
- dictOid = get_ts_dict_oid(stringToQualifiedNameList("unaccent"), false);
+ /*
+ * Use the "unaccent" dictionary that is in the same schema that this
+ * function is in.
+ */
+ Oid procnspid = get_func_namespace(fcinfo->flinfo->fn_oid);
+ const char *dictname = "unaccent";
+
+ dictOid = GetSysCacheOid2(TSDICTNAMENSP,
+ PointerGetDatum(dictname),
+ ObjectIdGetDatum(procnspid));
+ if (!OidIsValid(dictOid))
+ ereport(ERROR,
+ (errcode(ERRCODE_UNDEFINED_OBJECT),
+ errmsg("text search dictionary \"%s.%s\" does not exist",
+ get_namespace_name(procnspid), dictname)));
strArg = 0;
}
else
-unaccent(dictionary, stringe>) returns text
+unaccent(dictionary regdictionary, string texte>) returns text
If the dictionary argument is
- omitted, unaccent is assumed.
+ omitted, the text search dictionary named unaccent and
+ appearing in the same schema as the unaccent()
+ function itself is used.