Re: unaccent(text) fails depending on search_path (WAS: pg_upgrade fails saying function unaccent(text) doesn't exist)
От | Tom Lane |
---|---|
Тема | Re: unaccent(text) fails depending on search_path (WAS: pg_upgrade fails saying function unaccent(text) doesn't exist) |
Дата | |
Msg-id | 12109.1536174213@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | unaccent(text) fails depending on search_path (WAS: pg_upgrade failssaying function unaccent(text) doesn't exist) (Gunnlaugur Thor Briem <gunnlaugur@gmail.com>) |
Список | pgsql-general |
Gunnlaugur Thor Briem <gunnlaugur@gmail.com> writes: > SET search_path = "$user"; SELECT public.unaccent('foo'); > SET > ERROR: text search dictionary "unaccent" does not exist Meh. I think we need the attached, or something just about like it. It's barely possible that there's somebody out there who's relying on setting the search path to allow choosing among multiple "unaccent" dictionaries. But there are way more people whose functions are broken due to the recent search-path-tightening changes. regards, tom lane diff --git a/contrib/unaccent/unaccent.c b/contrib/unaccent/unaccent.c index 247c202..5f6ad8a 100644 *** a/contrib/unaccent/unaccent.c --- b/contrib/unaccent/unaccent.c *************** *** 20,25 **** --- 20,26 ---- #include "tsearch/ts_locale.h" #include "tsearch/ts_public.h" #include "utils/builtins.h" + #include "utils/lsyscache.h" #include "utils/regproc.h" PG_MODULE_MAGIC; *************** unaccent_dict(PG_FUNCTION_ARGS) *** 376,382 **** if (PG_NARGS() == 1) { ! dictOid = get_ts_dict_oid(stringToQualifiedNameList("unaccent"), false); strArg = 0; } else --- 377,393 ---- if (PG_NARGS() == 1) { ! /* ! * Use the "unaccent" dictionary that is in the same schema that this ! * function is in. ! */ ! Oid procnspid = get_func_namespace(fcinfo->flinfo->fn_oid); ! char *procnsp = get_namespace_name(procnspid); ! List *dictname; ! ! dictname = list_make2(makeString(procnsp), ! makeString(pstrdup("unaccent"))); ! dictOid = get_ts_dict_oid(dictname, false); strArg = 0; } else
В списке pgsql-general по дате отправления: