sql >> Database >  >> RDS >> PostgreSQL

Hoe maak je een extensie niet verplaatsbaar?

Eerst moet je relocatable change wijzigen naar false in het controlebestand van de extensie.

Afgezien daarvan is de aanbeveling die je hebt gekregen deels redelijk en deels onzin.

U moet uw functies als volgt definiëren:

CREATE FUNCTION .... AS
$$ /* function body */ $$
SET search_path = @[email protected];

Dan het search_path is vastgezet op pg_catalog , pg_temp en uw extensieschema voor de duur van de functieaanroep. Dat betekent dat alle toegang tot objecten zonder een expliciet schema alleen in deze schema's zal zoeken.

Dan hoef je je geen zorgen te maken over het expliciet kwalificeren van alles in de functie met @[email protected] , en u kunt operatoren gebruiken zonder dat u zich zorgen hoeft te maken, omdat search_path geldt ook voor exploitanten. (U kunt operators ook schema-kwalificeren:OPERATOR(schema.+) , maar dat is duidelijk pijnlijk en schaadt de leesbaarheid.)




  1. Geïndexeerde weergaven en statistieken

  2. Procedure verwacht een parameter die niet is opgegeven

  3. Hoe beïnvloeden indexen de databaseprestaties?

  4. Hoe variabele declareren en gebruiken in hetzelfde Oracle SQL-script?