Ze względów bezpieczeństwa pg_dump (lub pg_restore) emituje polecenie, które opróżnia search_path, więc po przywróceniu proces jest uruchamiany z pustą ścieżką wyszukiwania. Ale nie edytuje w ogóle treści tekstowej twojej funkcji, ale emituje ją tak, jak jest, więc nie może jej zmienić, aby określić w pełni kwalifikowaną nazwę tabeli. Dlatego funkcja nie może znaleźć tabeli, gdy jest uruchamiana w procesie przywracania.
Możesz w pełni zakwalifikować nazwę tabeli w funkcji lub możesz zdefiniować funkcję za pomocą SET search_path = public
. Możesz też edytować plik zrzutu, aby usunąć część, która czyści ścieżkę wyszukiwania, jeśli nie martwisz się konsekwencjami dotyczącymi bezpieczeństwa.