Разработка расширений Postgres
Я работаю с C API для postgres-9.4, установленного из надежного основного репозитория ubuntu. Это может быть глупый вопрос, но, пожалуйста, потерпите меня.
Я хотел бы использовать функцию, которая преобразует структуру cstring
в Jsonb*
, определенную в
http://doxygen.postgresql.org/jsonb_8h.html
Есть функции, выполняющие именно это, уже определенные в
http://doxygen.postgresql.org/jsonb_8c.html
А именно, функция Datum jsonb_in ( PG_FUNCTION_ARGS )
, однако я не уверен, могу ли я вызвать эту функцию из C API переносимым и безопасным способом. На первый взгляд кажется, что он предназначен для вызова postgres.
Я мог бы также использовать функцию jsonb_from_cstring
http://doxygen.postgresql.org/jsonb_8c.html#ab23eca28d5880f86a09
но он объявлен и определен в jsonb.c
, а не объявлен в json.h, и, следовательно, связывание с этой функцией не очень чистое решение. Я попытался найти символы для jsonb_from_cstring
в libpq.so, но их нет. Полагаю, мне нужна нестандартная сборка postgres?
Итак, вопрос в том, как лучше всего преобразовать структуру cstring
в структуру Jsonb*
из C API?
Редактировать:
Расширение получает данные json в виде строки из внешнего источника и, как предполагается, может хранить эту строку в типе Jsonb
.