2016-09-13 9 views
1

Как сказано в документации к postgreSQL о ее пакетах here, вызов функции должен отправить пакет с идентификатором 'F' на сервер.postgreSQL function call packet

Так я определил простую функцию и называю его select заявления и после мониторинга моего порта соединения с помощью wireshark я не вижу 'F' идентифицированного пакета, только несколько простых пакетов запроса ('Q' не определены).

Я что-то упустил?

ответ

3

Это недоразумение.

Функция, которая вызывается внутри SELECT заявление является частью текста инструкции в Запрос (идентификатор Q) или (P идентификатор) сообщения в Разбор.

В части документации, которую вы ссылаетесь, описывается сообщение для fast-path interface. Это осталось от времени до того, как протокол frontend-backend поддерживал подготовленные операторы и использовался для выполнения простого вызова функции без накладных расходов на необходимость синтаксического анализа SQL-запроса. В основном он устарел, но все еще используется в нескольких местах, таких как large object API.

Если вы хотите видеть пакеты F с Wireshark, вам нужно написать код C и использовать функцию PQfn.

+0

Ницца! Спасибо! Завтра утром я помету ваш ответ. – Hamed