powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
20 сообщений из 20, страница 1 из 1
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
    #38619925
Weed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сабж
...
Рейтинг: 0 / 0
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
    #38619927
Weed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в принципе, у вьюшки примерно понятно как, а вот у функции они где-то, кроме её текста лежат?

а у произвольного запроса если? который в prepared stetement лежит?
...
Рейтинг: 0 / 0
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
    #38619972
Weed,
про ф-ции:
помедитируйте над pg_proc. там в целом усё понятно
http://www.postgresql.org/docs/9.3/static/catalog-pg-proc.html

про вьюхи - такоже в pg_catalog есть табла, или даже в information_schema. аналогично.

про препаред навскидку ничего не скажу, кроме как провернуть CREATE temporary TABLE ttt AS EXECUTE ..., и посмотреть тип, но наверное это неверно, должно быть что-то попрямее. (судя по доке pg_prepared_statements не содержит тип возврата, но только типы входных параметров). т.е. для клиентов-то рукоятки ессно есть, а вот в чистом sql [или plpgsql] за что надо дернуть, чтобы получить тип возврата - неочевидно.
...
Рейтинг: 0 / 0
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
    #38619978
V&N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
V&N
Гость
Weed...
а у произвольного запроса если? который в prepared stetement лежит?
Можно, но вы не озвучили главного.
...
Рейтинг: 0 / 0
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
    #38619993
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Weedв принципе, у вьюшки примерно понятно как, а вот у функции они где-то, кроме её текста лежат?

а у произвольного запроса если? который в prepared stetement лежит?

типы полей (их OID) отдаются вместе с заголовком ответа базы на уровне бинарного протокола... и доступны через libpq...
для функций они так же доступны в системной таблице pg_proc

для произвольного prepared запроса нигде (кроме ответа базы) тем более что prepared запросы они локальны для коннекта.
...
Рейтинг: 0 / 0
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
    #38620850
Weed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
V&N, ?
...
Рейтинг: 0 / 0
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
    #38620857
Weed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim BogukWeedв принципе, у вьюшки примерно понятно как, а вот у функции они где-то, кроме её текста лежат?

а у произвольного запроса если? который в prepared stetement лежит?

типы полей (их OID) отдаются вместе с заголовком ответа базы на уровне бинарного протокола... и доступны через libpq...
для функций они так же доступны в системной таблице pg_proc

в курсе
но без знания правильных аргументов частенько тестовый вызов нельзя не сделать, чтобы он вернул таблицу а не ошибку.

А вообще ведь, типы возвращаемых значений всегда заранее известны! Что вьюхи, что таблицы, что функции содержат список выводимых полей. Странно что нет более-менее прямого способа их собрать.

(Нужда в этом возникла потому что мы написали АПИ, и хотели автоматически собирать не только информацию об аргументах, но и о результирующих таблицах)


для произвольного prepared запроса нигде (кроме ответа базы) тем более что prepared запросы они локальны для коннекта.
Не верю - иначе был бы вариант таблицы pg_prepared_statements для каждого коннекта.
...
Рейтинг: 0 / 0
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
    #38620861
Weed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
помедитируйтеWeed,
про ф-ции:
помедитируйте над pg_proc. там в целом усё понятно
http://www.postgresql.org/docs/9.3/static/catalog-pg-proc.html

про вьюхи - такоже в pg_catalog есть табла, или даже в information_schema. аналогично.

про препаред навскидку ничего не скажу, кроме как провернуть CREATE temporary TABLE ttt AS EXECUTE ..., и посмотреть тип, но наверное это неверно, должно быть что-то попрямее. (судя по доке pg_prepared_statements не содержит тип возврата, но только типы входных параметров). т.е. для клиентов-то рукоятки ессно есть, а вот в чистом sql [или plpgsql] за что надо дернуть, чтобы получить тип возврата - неочевидно.

хорошо, это запомнили и используем, скорее всего. спасибо!

а вот теперь ещё вопрос: есть произвольный запрос в виде текста - у него можно как-то определить типы возвращаемые без запуска?
...
Рейтинг: 0 / 0
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
    #38620953
V&N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
V&N
Гость
Weed, вы не озвучили, где хотите это использовать (в приложении или в postgresql).
без выполнения - не получится.
через зад
...
Рейтинг: 0 / 0
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
    #38620982
Weed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
V&N Weed, вы не озвучили, где хотите это использовать (в приложении или в postgresql).
без выполнения - не получится.
через зад

в приложении, да.

по ссылке - крутая идея, но она точно не вызывает исполнения запроса? а то у нас могут быть такие запросы, которые данные удаляют, например, в результате своей работы
...
Рейтинг: 0 / 0
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
    #38621486
buddy_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Weedпо ссылке - крутая идея, но она точно не вызывает исполнения запроса? а то у нас могут быть такие запросы, которые данные удаляют, например, в результате своей работы

Если ваши запросы содержат хранимки с побочными эффектами, то можно доработать функцию до SAVEPOINT/ROLLBACK TO SAVEPOINT.
...
Рейтинг: 0 / 0
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
    #38621525
Weed<>
в приложении, да.
<>
дык в приложении это всё доступно (через libpq и его обёртки)
на чём пишете? чем (библа) доступаетесь ? как выглядит объект prepared_statement ?
...
Рейтинг: 0 / 0
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
    #38621765
Weed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дык этта, ты чавоWeed<>
в приложении, да.
<>
дык в приложении это всё доступно (через libpq и его обёртки)


не доступно без непосредственного вызова.
если только rollback делать...

идеальный вариант был бы конечно чтобы оно из БД могло вызываться, чтобы простую вьюшку сделать с описанием результата вызова statement'ов

на чём пишете? чем (библа) доступаетесь ? как выглядит объект prepared_statement ?

на dlang пишем, libpq, ну как-то выглядит - а что? не ясен вопрос

вообще, написали такую штуку по мотивам этого поста:
http://www.sql.ru/forum/1062870/nuzhen-nekiy-proksi-ne-vstrechali

она опенсорсная, но ещё там не несколько важных моментов не закодено, поэтому особо не афишируем чтоб народ не распугать
...
Рейтинг: 0 / 0
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
    #38621769
Weed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buddy_ekbWeedпо ссылке - крутая идея, но она точно не вызывает исполнения запроса? а то у нас могут быть такие запросы, которые данные удаляют, например, в результате своей работы

Если ваши запросы содержат хранимки с побочными эффектами, то можно доработать функцию до SAVEPOINT/ROLLBACK TO SAVEPOINT.

разве в функции-хранимке можно использовать SAVEPOINT?
...
Рейтинг: 0 / 0
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
    #38621835
buddy_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Weedразве в функции-хранимке можно использовать SAVEPOINT?

поторопился, неточно сформулировал.

два варианта с функцией:
1. в приложении обернуть её вызов в транзакцию с откатом (TO SAVEPOINT, если надо);
2. дополнить её заведомо фэйловым оператором (типа SELECT ''::bool) и обработать исключение.
...
Рейтинг: 0 / 0
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
    #38622107
Weed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WeedV&N Weed, вы не озвучили, где хотите это использовать (в приложении или в postgresql).
без выполнения - не получится.
через зад

в приложении, да.

по ссылке - крутая идея, но она точно не вызывает исполнения запроса? а то у нас могут быть такие запросы, которые данные удаляют, например, в результате своей работы

попробовал через CREATE TEMP VIEW - запросы не вызываются, всё отлично! запустим в работу, посмотрим вылезут ли грабли :з
...
Рейтинг: 0 / 0
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
    #38622140
Weed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WeedWeedпропущено...


в приложении, да.

по ссылке - крутая идея, но она точно не вызывает исполнения запроса? а то у нас могут быть такие запросы, которые данные удаляют, например, в результате своей работы

попробовал через CREATE TEMP VIEW - запросы не вызываются, всё отлично! запустим в работу, посмотрим вылезут ли грабли :з
...
Рейтинг: 0 / 0
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
    #38622143
Weed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
грабля №1: есть запросы, которые возвращают void - для них невозможно создать таблицу
...
Рейтинг: 0 / 0
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
    #38622148
Weed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
грабля №2: запросы с аргументами требуют таки указания этих аргументов вместо $1, $2 и т.д.
...
Рейтинг: 0 / 0
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
    #38622168
Weed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Weedграбля №2: запросы с аргументами требуют таки указания этих аргументов вместо $1, $2 и т.д.

Впрочем, решилось заменой всех аргументов на NULL
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]