まず、relocatable
を変更する必要があります false
に 拡張機能の制御ファイル内。
それ以外は、あなたが得た推奨は、部分的に合理的で、部分的にナンセンスです。
次のように関数を定義する必要があります:
CREATE FUNCTION .... AS
$$ /* function body */ $$
SET search_path = @[email protected];
次に、search_path
pg_catalog
に修正されました 、pg_temp
関数呼び出し中の拡張スキーマ。つまり、明示的なスキーマのないオブジェクトへのすべてのアクセスは、これらのスキーマでのみ検索されます。
そうすれば、関数内のすべてを@[email protected]
で明示的に修飾することを心配する必要はありません。 、およびsearch_path
であるため、心配することなく演算子を使用できます。 オペレーターにも適用されます。 (演算子をスキーマ修飾することもできます:OPERATOR(schema.+)
、しかしそれは明らかに苦痛であり、読みやすさを損ないます。)