PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak sprawić, by rozszerzenie nie było relokowalne?

Najpierw musisz zmienić relocatable na false w pliku kontrolnym rozszerzenia.

Poza tym otrzymana rekomendacja jest częściowo rozsądna, a częściowo bezsensowna.

Powinieneś zdefiniować swoje funkcje w następujący sposób:

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

Następnie search_path jest naprawione na pg_catalog , pg_temp i twój schemat rozszerzenia na czas trwania wywołania funkcji. Oznacza to, że każdy dostęp do obiektów bez wyraźnego schematu będzie przeszukiwał tylko te schematy.

Wtedy nie musisz się martwić o jawną kwalifikację wszystkiego w funkcji za pomocą @[email protected] i możesz używać operatorów bez obaw, ponieważ search_path dotyczy również operatorów. (Możesz również zakwalifikować operatory do schematu:OPERATOR(schema.+) , ale jest to oczywiście bolesne i pogarsza czytelność.)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Napraw „BŁĄD:każde zapytanie INTERSECT musi mieć taką samą liczbę kolumn” w PostgreSQL

  2. Rails:PG::UndefinedTable:ERROR:relacja ... nie istnieje

  3. Replikacja PostgreSQL do odzyskiwania po awarii

  4. Odejmij miesiące od daty w PostgreSQL

  5. Adnotacja Spring Data @CreatedDate nie działa dla mnie