PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да направите разширението да не може да бъде преместено?

Първо, трябва да промените relocatable до false в контролния файл на разширението.

Освен това препоръката, която получихте, е отчасти разумна и отчасти глупост.

Трябва да дефинирате функциите си по следния начин:

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

След това search_path е фиксиран към pg_catalog , pg_temp и вашата схема на разширението за продължителността на извикването на функцията. Това означава, че целият достъп до обекти без изрична схема ще търси само в тези схеми.

Тогава не е нужно да се притеснявате за изричното квалифициране на всичко във функцията с @[email protected] , и можете да използвате оператори, без да се притеснявате, защото search_path важи и за операторите. (Можете също така да квалифицирате по схема оператори:OPERATOR(schema.+) , но това очевидно е болезнено и вреди на четливостта.)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Импортиране на psycopg2 Библиотеката не е заредена:libssl.1.0.0.dylib

  2. Как работи функцията Radians() в PostgreSQL

  3. PostgreSQL колоната не съществува, но всъщност съществува

  4. Как да тествам моя ad-hoc SQL с параметри в прозореца за заявка на Postgres

  5. Postgres Left Join с условието къде