PostgreSQL логирование

Absinthe

жожо
Как правильно логировать, если запросы выполняются через pg_query_params?
Т.е. нет никакого класса-обертки(код в наследство), лишь иногда через оберточную функцию выполняется, при этом самого запроса нет, есть отдельно лишь запрос с плейсхолдерами и данные.

Т.е. перегрузить функцию pg_query_params я могу, но дальше мне вручную эскейпить параметры внутрь шаблона.?

Я пробовал на уровне СУБД логировать, но оно пишет в логи что-то типа:
2012-05-05 17:34:08 ICT 4fa50220.1694 postgres LOG: execute <unnamed>: SELECT * FROM product_select($1, $2, $3, $4, $5, $6) AS(prid bigint, prcgidparent d_foreign, prname d_string_nn, prdescription d_string, arid d_string_nn, armedias text[], aravail boolean, arprice d_money, prfriendlyurl d_string);
2012-05-05 17:34:08 ICT 4fa50220.1694 postgres DETAIL: parameters: $1 = NULL, $2 = '', $3 = NULL, $4 = NULL, $5 = '6', $6 = '3'
Т.е. тут тоже нет запросов целиком.
 

fixxxer

К.О.
Партнер клуба
Никак, т.к. SQL-запроса целиком не существует физически нигде.

Когда ты делаешь prepare, запрос сразу парсится во внутреннее представление, и возвращается идентификатор подготовленного запроса. При execute передается только идентификатор и значения параметров.

Могу предложить парсить приведенные логи и реконструировать запрос
 

Absinthe

жожо
Звидец с точки зрения необходимолсти результата :(

Когда ты делаешь prepare, запрос сразу парсится во внутреннее представление, и возвращается идентификатор подготовленного запроса. При execute передается только идентификатор и значения параметров.
Т.е. для каждого pg_query_params PostgreSQL создает стейтмент и потом его выполняет? Могли бы для приличия в лог писать запрос.

Могу предложить парсить приведенные логи и реконструировать запрос
Так и думал: руками. Сделаю только не с логами, а на уровне пхп, через перегрузку этой функции.
 

Absinthe

жожо
Так, я не нагуглил актуальный ранкит.
Судя по всему мне этот проект либо на виртуалку переносить, либо иметь секас с VC9.

И, судя по всему, секас будет знойным: https://github.com/zenovich/runkit/issues/17
 

Вурдалак

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

Absinthe

жожо
Много ли у тебя времени займёт заменить pg_query_params на что-то своё по всему проекту?
ну... полминуты :D Кстати я так и делаю, просто хотел красивое решение.
Я вчера еще такой же совет давал Духовность с его mb_* :D
 
Сверху