Re: unaccent(text) fails depending on search_path (WAS: pg_upgrade fails saying function unaccent(text) doesn't exist)

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Gunnlaugur Thor Briem <gunnlaugur@gmail.com>
Cc: Adrian Klaver <adrian.klaver@aklaver.com>, Bruce Momjian <bruce@momjian.us>, pgsql-general@lists.postgresql.org
Date: 2018-09-05T19:03:33Z
Lists: pgsql-hackers, pgsql-general

Attachments

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

Commits

  1. Make contrib/unaccent's unaccent() function work when not in search path.

  2. Avoid unnecessary use of pg_strcasecmp for already-downcased identifiers.