powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / PL/pgSQL Как отлаживать? Выводить рез-ты запрососов, вып. в теле ф-ции?
8 сообщений из 8, страница 1 из 1
PL/pgSQL Как отлаживать? Выводить рез-ты запрососов, вып. в теле ф-ции?
    #32730915
grdmitro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PL/pgSQL Как отлаживать?
Как можна вывести результаты SQL-запросов, выполненных в теле ф-ции?
...
Рейтинг: 0 / 0
PL/pgSQL Как отлаживать? Выводить рез-ты запрососов, вып. в теле ф-ции?
    #32730963
фффф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Напрямую, как в MSSQL промежуточные выборки (на экран) к сожалению нельзя сделать :(
Какой-то отладчик есть в EMS PostgreSQL Manager . Насколько хорош - не знаю.
А так, по простому, можно включить log_statement = 'all' и смотреть в логе сервера все запросы идущие как извне, так и изнутри функции. А потом копировать и выполнять в psql. Значения переменных можно вывести через RAISE.
...
Рейтинг: 0 / 0
PL/pgSQL Как отлаживать? Выводить рез-ты запрососов, вып. в теле ф-ции?
    #32731185
grdmitro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
thanks for EMS...

No:

bash-2.05b$ postmaster -c log_statement='all' -D /var/lib/pgsql/data
FATAL 1: 'log_statement' is not a valid option name

Ili eto ne optsiya postgres.conf?
Podskajete, please, gde lejat log'i po umolchaniu! V "/var/log/pqsql"?
(U menja RedHat8.0 PostgreSQL vibiral pri ustanovke OS)

PS
Izvenite za translit. Pishu is pod PedHat8.0 A tut problemi s russkoy raskladkoy.
A ya v Linuxe profan...
...
Рейтинг: 0 / 0
PL/pgSQL Как отлаживать? Выводить рез-ты запрососов, вып. в теле ф-ции?
    #32731353
Shweik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) log_statement' is not a valid option name
В /usr/local/pgsql/data/postgresql.conf
есть такая группа параметов которая позволяет выводить в лог сервера
(обычно в файл /usr/local/pgsql/data/serverlog) следующую инфу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
   log_connections = true     инфа о подключениях к базам
log_duration = true            длительность  запроса
log_pid = true                PID процесса-"владельца" запроса
log_statement =true                 ТЕКСТ ЗАПРОСА (НЕ РЕЗУЛЬТАТЫ!!!) 
log_timestamp = true      время события   
log_hostname = true       откуда подключались    
log_source_port = true   номер порта на хосте клиента.
Например:
Код: plaintext
1.
2.
3.
4.
 2004 - 10 - 10   16 : 53 : 07  [ 71315 ] LOG:  connection received: host=massaraksh port= 4751       
 2004 - 10 - 10   16 : 53 : 07  [ 71315 ] LOG:  connection authorized: user=hugo database=sales
 2004 - 10 - 10   16 : 53 : 07  [ 71315 ] LOG:  statement: select * from w_orders             
 2004 - 10 - 10   16 : 53 : 08  [ 71315 ] LOG:  duration:  606 . 942  ms                              

И еще - код процедур в лог не попадает ..... да и недумаю что он там сильно нужен.

2) Теперь по сабжу.
Если хочется получить отдладочный дамп какой-то выборки - делаю в
теле процедуры вот так
Код: plaintext
1.
2.
   CREATE TEMP TABLE debug1 as  SELECT * FROM orders_td WHERE ENTRY_DATE>=mindate 
  COPY debug1 to ''/usr/local/pgsql/data/debugsql.log'' WITH DELIMITER ''|'';                                                                                   

Очевидно что в другой консоли команда
tail -f /usr/local/pgsql/data/debugsql/log даст нам полное представление о
том чего начудила наша выборка. На данный момент IMHO это приемлемое решение. Чем не "напрямую"?? У MS эта кухня очевидно стрятана за ширмой красивых пимпочек, но суть-то неизменна.
Что делает по этому поводу EMS или PGAccess? Не знаю ине горю желаием узнать.
Как собран установлен Постгрес в RH8 и где его логи и конф файлы ... ответ тот же. Это как захотелось тем, кто собирал дистрибутив. Может он и
в syslog все пишет а postgresql.conf забросили в /etc 8)
Сами понимаете что такая "отладочная печать" скорости мягко говоря не прибавит! Хотя техника то у Вас наверняка покруче моей ;)
И последнее. Просьба к знатокам не возмущаться поповоду чистоты идеи -
чем пользуюсь- о том и рассказал. Может есть и более красивые решения только пока их не заметно.
...
Рейтинг: 0 / 0
PL/pgSQL Как отлаживать? Выводить рез-ты запрососов, вып. в теле ф-ции?
    #32731449
фффф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В MSSQL/Sybase можно из процедуры несколько наборов данных вернуть - этого может сильно не хватать, хотя и не смертельно. Идея с COPY TO очень хорошая, но опять же с временными таблицами внутри функции эээ... геморрой.
Параметр log_statement = 'all' - это только в 8ой версии pg. В ней еще формат в котором запросы выдаются поменяли - теперь хорошо видно из какой функции, в какой строке и в каком контексте (perform, select into, execute) выполняется запрос. Но в дистре линукса скорее всего стабильная 7.4 а то и 7.3, там все как сказал Shweik, как учит коммунистическая партия советского союза :-)
...
Рейтинг: 0 / 0
PL/pgSQL Как отлаживать? Выводить рез-ты запрососов, вып. в теле ф-ции?
    #32733067
centur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну если нужны ограниченные выборки - raise notice или raise exception в теле pl\pgsql функции , либо выводить текст запроса и руками тут же выполнять - в принципе тоже вполне удобно в пгадмине все это проворачивать
...
Рейтинг: 0 / 0
PL/pgSQL Как отлаживать? Выводить рез-ты запрососов, вып. в теле ф-ции?
    #32735171
grdmitro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем. Отладил :)
Только так и не нашел логи под RH8.0
В /var/lib/pgsql/data нет...
...
Рейтинг: 0 / 0
PL/pgSQL Как отлаживать? Выводить рез-ты запрососов, вып. в теле ф-ции?
    #32737138
Фотография Niemi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Логи могут быть настроены через syslog , проверяй postgresql.conf.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / PL/pgSQL Как отлаживать? Выводить рез-ты запрососов, вып. в теле ф-ции?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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