Аз инсталирах разширение на разширението по пощата 9.5. Видях, че е по-добре да създадете конкретна схема за всички разширения и това, което направих. Свързах се с шаблон 1 и направих следващите команди:
template1=# create schema extensions;
CREATE SCHEMA
template1=# grant usage on schema extensions to public;
GRANT
template1=# grant execute on all functions in schema extensions to public;
GRANT
template1=# alter default privileges in schema extensions grant execute on
functions to public;
ALTER DEFAULT PRIVILEGES
template1=# alter default privileges in schema extensions grant usage on
types to public;
ALTER DEFAULT PRIVILEGES
template1=# create extension orafce schema extensions;
CREATE EXTENSION
template1=# show search_path;
search_path
-----------------
"$user", public
(1 row)
template1=# set search_path="$user",public,extensions;
SET
След това създадох нова база данни test1 и нов потребител mariel1. Освен това редактирах postgresql.conf и зададох path_path да бъде "$ user", public, extensions.
Свързах се с базата данни - psql -d test1 -U mariel1. Сега, когато се опитам да използвам функцията sysdate, например базата данни не разпознава функцията
postgres=# select sysdate() from dual;
ERROR: function sysdate() does not exist
LINE 1: select sysdate() from dual;
^
HINT: No function matches the given name and argument types. You might need
to add explicit type casts.
postgres=# select extensions.sysdate() from dual;
ERROR: schema "extensions" does not exist
LINE 1: select extensions.sysdate() from dual;
След известно търсене видях, че някои от функциите, налични при други схеми като оракул, utl_file и др. Искам да разбера защо функциите на orafce (oracle.sysdate и т.н. ...) са създадени под различни схеми (oracle, utl_file ..), а не под моите нови разширения на схеми.
Отговори:
0 за отговор № 1Разширението в PostgreSQL е База данни нивото не е ниво на ниво схема или ниво на ниво. Не можете да създадете същото разширение в същата база данни. Но можете да създадете същото разширение в няколко бази данни. това е как разширението в PostgreSQL работи.