|
|
|
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
|
|||
|---|---|---|---|
|
#18+
сабж ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2014, 22:55:01 |
|
||
|
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
|
|||
|---|---|---|---|
|
#18+
в принципе, у вьюшки примерно понятно как, а вот у функции они где-то, кроме её текста лежат? а у произвольного запроса если? который в prepared stetement лежит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2014, 22:56:07 |
|
||
|
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
|
|||
|---|---|---|---|
|
#18+
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] за что надо дернуть, чтобы получить тип возврата - неочевидно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 02:30:32 |
|
||
|
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
|
|||
|---|---|---|---|
|
#18+
Weed... а у произвольного запроса если? который в prepared stetement лежит? Можно, но вы не озвучили главного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 03:18:04 |
|
||
|
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
|
|||
|---|---|---|---|
|
#18+
Weedв принципе, у вьюшки примерно понятно как, а вот у функции они где-то, кроме её текста лежат? а у произвольного запроса если? который в prepared stetement лежит? типы полей (их OID) отдаются вместе с заголовком ответа базы на уровне бинарного протокола... и доступны через libpq... для функций они так же доступны в системной таблице pg_proc для произвольного prepared запроса нигде (кроме ответа базы) тем более что prepared запросы они локальны для коннекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 06:02:47 |
|
||
|
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
|
|||
|---|---|---|---|
|
#18+
V&N, ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 20:22:49 |
|
||
|
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
|
|||
|---|---|---|---|
|
#18+
Maxim BogukWeedв принципе, у вьюшки примерно понятно как, а вот у функции они где-то, кроме её текста лежат? а у произвольного запроса если? который в prepared stetement лежит? типы полей (их OID) отдаются вместе с заголовком ответа базы на уровне бинарного протокола... и доступны через libpq... для функций они так же доступны в системной таблице pg_proc в курсе но без знания правильных аргументов частенько тестовый вызов нельзя не сделать, чтобы он вернул таблицу а не ошибку. А вообще ведь, типы возвращаемых значений всегда заранее известны! Что вьюхи, что таблицы, что функции содержат список выводимых полей. Странно что нет более-менее прямого способа их собрать. (Нужда в этом возникла потому что мы написали АПИ, и хотели автоматически собирать не только информацию об аргументах, но и о результирующих таблицах) для произвольного prepared запроса нигде (кроме ответа базы) тем более что prepared запросы они локальны для коннекта. Не верю - иначе был бы вариант таблицы pg_prepared_statements для каждого коннекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 20:29:20 |
|
||
|
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
|
|||
|---|---|---|---|
|
#18+
помедитируйте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] за что надо дернуть, чтобы получить тип возврата - неочевидно. хорошо, это запомнили и используем, скорее всего. спасибо! а вот теперь ещё вопрос: есть произвольный запрос в виде текста - у него можно как-то определить типы возвращаемые без запуска? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 20:32:04 |
|
||
|
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
|
|||
|---|---|---|---|
|
#18+
Weed, вы не озвучили, где хотите это использовать (в приложении или в postgresql). без выполнения - не получится. через зад ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 00:00:05 |
|
||
|
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
|
|||
|---|---|---|---|
|
#18+
V&N Weed, вы не озвучили, где хотите это использовать (в приложении или в postgresql). без выполнения - не получится. через зад в приложении, да. по ссылке - крутая идея, но она точно не вызывает исполнения запроса? а то у нас могут быть такие запросы, которые данные удаляют, например, в результате своей работы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 01:48:46 |
|
||
|
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
|
|||
|---|---|---|---|
|
#18+
Weedпо ссылке - крутая идея, но она точно не вызывает исполнения запроса? а то у нас могут быть такие запросы, которые данные удаляют, например, в результате своей работы Если ваши запросы содержат хранимки с побочными эффектами, то можно доработать функцию до SAVEPOINT/ROLLBACK TO SAVEPOINT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 13:34:10 |
|
||
|
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
|
|||
|---|---|---|---|
|
#18+
Weed<> в приложении, да. <> дык в приложении это всё доступно (через libpq и его обёртки) на чём пишете? чем (библа) доступаетесь ? как выглядит объект prepared_statement ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 13:59:43 |
|
||
|
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
|
|||
|---|---|---|---|
|
#18+
дык этта, ты чавоWeed<> в приложении, да. <> дык в приложении это всё доступно (через libpq и его обёртки) не доступно без непосредственного вызова. если только rollback делать... идеальный вариант был бы конечно чтобы оно из БД могло вызываться, чтобы простую вьюшку сделать с описанием результата вызова statement'ов на чём пишете? чем (библа) доступаетесь ? как выглядит объект prepared_statement ? на dlang пишем, libpq, ну как-то выглядит - а что? не ясен вопрос вообще, написали такую штуку по мотивам этого поста: http://www.sql.ru/forum/1062870/nuzhen-nekiy-proksi-ne-vstrechali она опенсорсная, но ещё там не несколько важных моментов не закодено, поэтому особо не афишируем чтоб народ не распугать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 15:57:18 |
|
||
|
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
|
|||
|---|---|---|---|
|
#18+
buddy_ekbWeedпо ссылке - крутая идея, но она точно не вызывает исполнения запроса? а то у нас могут быть такие запросы, которые данные удаляют, например, в результате своей работы Если ваши запросы содержат хранимки с побочными эффектами, то можно доработать функцию до SAVEPOINT/ROLLBACK TO SAVEPOINT. разве в функции-хранимке можно использовать SAVEPOINT? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 15:58:51 |
|
||
|
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
|
|||
|---|---|---|---|
|
#18+
Weedразве в функции-хранимке можно использовать SAVEPOINT? поторопился, неточно сформулировал. два варианта с функцией: 1. в приложении обернуть её вызов в транзакцию с откатом (TO SAVEPOINT, если надо); 2. дополнить её заведомо фэйловым оператором (типа SELECT ''::bool) и обработать исключение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 16:29:19 |
|
||
|
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
|
|||
|---|---|---|---|
|
#18+
WeedV&N Weed, вы не озвучили, где хотите это использовать (в приложении или в postgresql). без выполнения - не получится. через зад в приложении, да. по ссылке - крутая идея, но она точно не вызывает исполнения запроса? а то у нас могут быть такие запросы, которые данные удаляют, например, в результате своей работы попробовал через CREATE TEMP VIEW - запросы не вызываются, всё отлично! запустим в работу, посмотрим вылезут ли грабли :з ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 19:18:36 |
|
||
|
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
|
|||
|---|---|---|---|
|
#18+
WeedWeedпропущено... в приложении, да. по ссылке - крутая идея, но она точно не вызывает исполнения запроса? а то у нас могут быть такие запросы, которые данные удаляют, например, в результате своей работы попробовал через CREATE TEMP VIEW - запросы не вызываются, всё отлично! запустим в работу, посмотрим вылезут ли грабли :з ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 19:47:30 |
|
||
|
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
|
|||
|---|---|---|---|
|
#18+
грабля №1: есть запросы, которые возвращают void - для них невозможно создать таблицу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 19:48:44 |
|
||
|
Как в рамках запроса получить возвращаемые функцией/вьюшкой типы таблицы?
|
|||
|---|---|---|---|
|
#18+
грабля №2: запросы с аргументами требуют таки указания этих аргументов вместо $1, $2 и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 19:51:06 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38620857&tid=1998725]: |
0ms |
get settings: |
7ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
169ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
79ms |
get tp. blocked users: |
2ms |
| others: | 190ms |
| total: | 488ms |

| 0 / 0 |
