Как узнать функцию, используемую postgresql для приведения типов? - PullRequest
4 голосов
/ 25 августа 2011

Как можно определить функцию, используемую postgresql для приведения типов?

EG: если у меня есть SELECT '{1,2,3}' :: int4 [], как мне определить, какая функция используется postgresql для выполнения приведения? Выполнение \ dC в psql, похоже, не приводит ни к какому приведению типов данных с целевым типом данных int4 [].

Ответы [ 2 ]

3 голосов
/ 25 августа 2011

Совершенно элитный способ - сделать SET debug_print_parse TO on; или SET debug_print_plan TO on;, а затем посмотреть на дерево разбора или плана в журнале сервера, для которого в итоге вызывается функция.

В этом конкретном примере этоскажет вам, что то, что вы написали, на самом деле не является приведением, оно просто передает строку '{1,2,3}' в функцию ввода типа int4[].Существуют другие сценарии, в которых функция приведения как таковая не будет вызываться, например, двоичные совместимые типы или приведение в исполнение с помощью функций ввода / вывода.

1 голос
/ 25 августа 2011

Приведения хранятся в системной таблице, pg_casts . Вы можете быть в состоянии отследить это через онлайн-документацию. pg_proc выглядит многообещающе.

Если вам нужно прибегнуть к чтению исходного кода, попробуйте начать с pg_cast.h .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...