gpt4 book ai didi

使用c api的postgresql jsonb处理

转载 作者:行者123 更新时间:2023-11-29 13:28:52 26 4
gpt4 key购买 nike

Postgres 扩展开发

我正在为从 ubuntu trusty main repo 安装的 postgres-9.4 使用 C API。这可能是一个愚蠢的问题,但请耐心等待。

我想使用一个函数将 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#ab23eca28d5880f86a0943d71c90d6654

但它是在 jsonb.c 中声明和定义的,而不是在 json.h 中声明的,因此与此函数链接不是一个非常干净的解决方案。我试图在 libpq.so 中找到 jsonb_from_cstring 的符号,但是没有。我猜我需要一个非标准版本的 postgres?

所以问题是,从 C API 中将 cstring 转换为 Jsonb* 结构的最佳方法是什么?

编辑:

扩展从外部源获取 json 数据作为字符串,并且应该能够将此字符串存储在 Jsonb 类型中

最佳答案

这在 postgres 邮件列表中得到了回答

http://www.postgresql.org/message-id/CAFj8pRCeGL7q_EGTz2=FyQZ2Qrtn1x_76mz3fuR=b7beEug7Wg@mail.gmail.com

引用:你可以调用“输入函数”——jsonb_in

Jsonb *targetjsonbvar = DatumGetJsonb(DirectFunctionCall1(jsonb_in,
CStringGetDatum(cstrvalue)));

关于使用c api的postgresql jsonb处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28464007/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com