Pertama, Anda harus mengubah relocatable
menjadi false
di file kontrol ekstensi.
Selain itu, rekomendasi yang Anda dapatkan sebagian masuk akal dan sebagian tidak masuk akal.
Anda harus mendefinisikan fungsi Anda seperti ini:
CREATE FUNCTION .... AS
$$ /* function body */ $$
SET search_path = @[email protected];
Kemudian search_path
diperbaiki ke pg_catalog
, pg_temp
dan skema ekstensi Anda selama pemanggilan fungsi. Artinya, semua akses ke objek tanpa skema eksplisit hanya akan menelusuri dalam skema ini.
Maka Anda tidak perlu khawatir tentang kualifikasi secara eksplisit semua yang ada di fungsi dengan @[email protected]
, dan Anda dapat menggunakan operator tanpa harus khawatir, karena search_path
berlaku juga untuk operator. (Anda juga dapat memenuhi syarat operator skema:OPERATOR(schema.+)
, tapi itu jelas menyakitkan dan merusak keterbacaan.)