Thread: vaccumdb fails saying function unaccent(text) doesn't exist

vaccumdb fails saying function unaccent(text) doesn't exist

From
greg1457
Date:
Hi everyone,

I migrated an postgresql instance from 9.5.4 to 9.5.21.
Unaccent extension is installed in the database, in "application" schema.

Since this migration, when i do a vaccumdb, i obtain an error :

vacuumdb: vacuuming of database "application" failed: ERROR:  function unaccent(text) does not exist
LINE 2: SELECT lower(unaccent($1));
                     ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
QUERY:
SELECT lower(unaccent($1));

CONTEXT:  SQL function "lower_unaccent" during inlining
VACUUM (VERBOSE, ANALYZE);

I removed and reinstalled the extension, but the error continue to appear.
Following this post : https://www.postgresql.org/message-id/CAPs%2BM8LCex6d%3DDeneofdsoJVijaG59m9V0ggbb3pOH7hZO4%2BcQ%40mail.gmail.com , i installed the extension in public schema, the message still appear.

If i do a vacuum in sql command, i haven't the error.

May you have an idea of the cause of this issue and how to resolve it?

Thank you

Greg


Sent with ProtonMail Secure Email.

Re: vaccumdb fails saying function unaccent(text) doesn't exist

From
Tom Lane
Date:
greg1457 <greg1457@protonmail.com> writes:
> I migrated an postgresql instance from 9.5.4 to 9.5.21.
> Unaccent extension is installed in the database, in "application" schema.

> Since this migration, when i do a vaccumdb, i obtain an error :

> vacuumdb: vacuuming of database "application" failed: ERROR: function unaccent(text) does not exist
> LINE 2: SELECT lower(unaccent($1));

This is probably a search_path problem.  You've got an index expression
somewhere with a SQL function that is not being careful about which
schema(s) to look for "unaccent()" in.  There were security fixes to
restrict the search path that VACUUM/ANALYZE runs with, which breaks
functions that aren't careful about that.

            regards, tom lane