Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
получить список функций через sql
|
|||
|---|---|---|---|
|
#18+
Задача - отозвать все права на таблицы из схемы для роли, и для нее же дать права на все функции в этой схеме. Поскольку grant execute к схеме не применимо, придется строить список функций первое, на что наткнулся select * from pg_proc; это работает, но нужно еще фильтровать по pronamespace. опытным путем выяснил, что select * from pg_proc where prolang > 16; возвращает лишь пользовательские функции, но select * from pg_proc where pronamespace =???; где найти pronamespace для моей схемы данных? select * from pg_namespace ; дает лишь названия схем, но не идентификаторы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2007, 16:56 |
|
||
|
получить список функций через sql
|
|||
|---|---|---|---|
|
#18+
вот вроде как немного сырая заготовка - терпения не хватило дописать полностью. ета супер-функция рубает все права на таблицы из указаной в параметре схемы для указаной параметром роли - и раздаёт для этой же схемы все права для таблицы. недоработка - с функциями это работает токо с теми, которые без параметров. todo: к названию функций добавить параметры их прикрутить - так же лупом. вроде рабочее всё - что обещано :) - токо не оч проверено. но с правами при этом таки происходит что-то :). но нормально не проверял. однако думаю работает. вот код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2007, 21:22 |
|
||
|
получить список функций через sql
|
|||
|---|---|---|---|
|
#18+
tadmin возвращает лишь пользовательские функции, но select * from pg_proc where pronamespace =???; где найти pronamespace для моей схемы данных? select * from pg_namespace ; дает лишь названия схем, но не идентификаторы. Код: plaintext опытным путем выяснил, что select * from pg_proc where prolang > 16; возвращает лишь пользовательские функции пользовательские функции бывают, в общем случае, и на C, и на SQL (prolang <16) - языки по умолчанию. как, кстати, собираетесь давать права на функции? SECURITY DEFINER? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2007, 22:39 |
|
||
|
получить список функций через sql
|
|||
|---|---|---|---|
|
#18+
а чем мой вариант плох - с information_schema который? там и язык и тип функции есть и точно не помню - но и ойд вроде тоже - не знаю токо зачем он вам. ну и как бы если исходить из тз - то всё именно так и работает как хотели. мне вообще всёравно какой вы будете использовать вариант - но просто любопытно в плане может я чего пропустил? чем то мой вариант не рабочий? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2007, 11:40 |
|
||
|
получить список функций через sql
|
|||
|---|---|---|---|
|
#18+
.gc Код: plaintext Вот спасибо, В жизни не догадался бы! .gc как, кстати, собираетесь давать права на функции? SECURITY DEFINER? Да, SECURITY DEFINER ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2007, 10:55 |
|
||
|
получить список функций через sql
|
|||
|---|---|---|---|
|
#18+
aovа чем мой вариант плох - с information_schema который? там и язык и тип функции есть и точно не помню - но и ойд вроде тоже - не знаю токо зачем он вам. ну и как бы если исходить из тз - то всё именно так и работает как хотели. Пример отличный, спасибо! aov мне вообще всёравно какой вы будете использовать вариант - но просто любопытно в плане может я чего пропустил? чем то мой вариант не рабочий? У меня много функций и все с параметрами, но, как вы справедливо заметили, с ними можно разобраться сходным образом. to all: спасибо за примеры и советы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2007, 10:59 |
|
||
|
получить список функций через sql
|
|||
|---|---|---|---|
|
#18+
Умные люди подсказали ключевой прием: Код: plaintext В результате многочисленных советов получено готовое решение. Функция получает имя схемы и имя группы пользователей, отзывает от всех функций в схеме (prolang >16 оставляет только PLPGSQL функции) права на исполнение для public, а затем дает право на исполнение для указанной группы. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2007, 13:48 |
|
||
|
получить список функций через sql
|
|||
|---|---|---|---|
|
#18+
tadmin prolang >16 оставляет только PLPGSQL функции гм. если вас интересуют пользовательские ф-ии, то ограничение PLPGSQL-ем непрактично. сплошь и рядом удобнее использовать SQL (т.е. у меня это 14 язык), но есть и системные SQL ф-ии, и нет гарантии, что в будущем не попадется PLPGSQL ф-я где-нито в information_schema т.ч. могабыть посмотреть в сторону фильтрации по имени схемы: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2007, 14:25 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34515469&tid=2005417]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 252ms |
| total: | 387ms |

| 0 / 0 |
