|
AGGREGATE (пользовательские)
|
|||
---|---|---|---|
#18+
Речь о "Пользовательских агрегатных функциях". Работаю с оконными функциями. Очень понравилось. Скорость потрясающая. Но встала задача создать свои агрегатные функции. Создать то их можно без проблем, а вот посмотреть потом что получилось и их код никак не могу. ВОПРОС: где можно увидеть код написанной мной агрегатной функции. В pgadmin4 максимум что можно увидеть - это что от данной функции зависит функция с таким то именем (которая как раз и является агрегатной). Если делать Код: sql 1. 2.
можно найти некоторую информацию, но кода самой функции там точно нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2020, 13:21 |
|
AGGREGATE (пользовательские)
|
|||
---|---|---|---|
#18+
Вот дополнительная картинка. Знаю, что администратор ругаетесь на картинки, но в ней хорошо видно, что функций 3, а отображается только 2. Так же видно, что скрытых папок нет (все что можно - открыл). В общем, ни по запросам, ни в pgadmin4 так и не нашел где можно увидеть свой же год своей же агрегатной функции. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2020, 13:33 |
|
AGGREGATE (пользовательские)
|
|||
---|---|---|---|
#18+
О-О-О, Вообще-то агрегаты это не совсем функции. Их создают командой CREATE AGGREGATE, указывая значения для ряда предопределенных свойств, увидеть которые можно именно запросом: select * from pg_aggregate; Можно и сюда заглянуть: select * from pg_proc where prokind = 'a'; С pgAdmin4 всё прозаично. Агрегаты не показываются в навигаторе, потому что это не реализовано. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2020, 21:22 |
|
AGGREGATE (пользовательские)
|
|||
---|---|---|---|
#18+
Павел Лузанов, Не совсем понял, чем select * from pg_proc where prokind = 'a'; отличается от просто (точнее отличия то есть, но кода там нет). select * from pg_aggregate; Код: sql 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.
Визуально все то же, кода и сноски на используемую функцию нет. Я ищу по select * from pg_aggregate WHERE aggtranstype=1700; и выдает всего 4 агрегатные функции (а не список из 139). Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
. Я так понимаю, что лучше тогда тупо писать внутрь своей функции Агрегатную функцию (в виде примечанию) и просто если что то нужно заменить, то просто удаляем агрегатную функцию и создаем с тем же названием и с новым кодом. . ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2020, 08:13 |
|
AGGREGATE (пользовательские)
|
|||
---|---|---|---|
#18+
Можно сделать еще так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
| . Где анализ_данных.* это схема в которой расположена агрегатная функция. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2020, 08:22 |
|
AGGREGATE (пользовательские)
|
|||
---|---|---|---|
#18+
О-О-О Можно сделать еще так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
| . Где анализ_данных.* это схема в которой расположена агрегатная функция. Команда \da как раз из pg_proc и выбирает только агрегатные функции, что я и предложил сделать прямым запросом к pg_proc. Это позволит убедиться, что функции никуда не потерялись. Что касается кода, то у агрегатных функций его нет. Посмотрите на значение pg_proc.prosrc, там везде пустышка (aggregate_dummy). Для агрегатных функций в pg_proc определены имя, параметры, выходное значение. А в pg_aggregate все остальные свойства агрегата. Больше искать нигде не нужно. pgAdmin4 в узле Функции обозревателя не показывает агрегатные функции скорее всего именно потому, что у них нет кода. Поэтому количество функций может быть меньше чем записей в pg_proc, что может сбивать с толку. А отдельный узел Агрегатные функции так и не реализовали. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2020, 09:48 |
|
AGGREGATE (пользовательские)
|
|||
---|---|---|---|
#18+
Павел Лузанов, Ничего сложного в них нет. Просто там несколько параметров, а если посмотреть описание к ним, то там черт ногу сломит, потому и хотелось бы иметь код этих самых агрегатных функций. Но тогда просто вставлю закоментированный код в основную функцию и буду знать что пишут. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2020, 14:07 |
|
|
start [/forum/topic.php?fid=53&msg=39971389&tid=1994633]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 139ms |
0 / 0 |