非スーパーユーザーでこのような関数を作成するときに、私は以下のエラーが取得しています:ERROR:許可言語Cのために拒否された
ERROR: permission denied for language c SQL state: 42501
作成機能は次のとおりです。
CREATE OR REPLACE FUNCTION dblink_connect (text)
RETURNS text
AS '$libdir/dblink','dblink_connect'
LANGUAGE C STRICT;
をしかし、スーパーC以外のユーザーにC言語の許可を与えたい場合、以下のエラーが表示されます。 postgres=# grant usage on language c to caixa; ERROR: language "c" is not trusted
つまり、スーパーユーザーでないユーザーは言語Cの関数を作成できません。それとも私が間違っている何か他に何かありますか?
それはすでに 'PUBLIC'(すべてのロール)に付与されているため、おそらくあなたは、明示的caixa'の役割'に付与 'USAGE'権限を必要としません。ここでの鍵は 'pg_language'システムカタログの' lanpltrusted'プロパティです。 –