1
我试图增加对数字/十进制pgsql的支持(也SQL99标准)的数据类型为Cocoa框架。 到目前为止,我还没有能够找到的有关内部二进制表示的libpq任何展示其用于查询的输出像pgsql的数字/十进制二进制表示,可可
SELECT "12,345"::numeric(5,3);
任何想法时,使用的是?
我试图增加对数字/十进制pgsql的支持(也SQL99标准)的数据类型为Cocoa框架。 到目前为止,我还没有能够找到的有关内部二进制表示的libpq任何展示其用于查询的输出像pgsql的数字/十进制二进制表示,可可
SELECT "12,345"::numeric(5,3);
任何想法时,使用的是?
用于二进制格式的主要参考的源代码 - src/backend/utils/adt/numeric.c
。请参阅numeric_send
和numeric_recv
以及源文件顶部的注释。
为什么你需要用二进制表示工作?除非您明确要求使用二进制模式,否则您通常会将numeric
值与PostgreSQL服务器交换为格式化文本。
如果您确实需要二进制格式,您可能希望查看libpqtypes
,其中包含对NUMERIC
的二进制表示形式的支持并将其与服务器交换。您可能要考虑在代码中使用libpqtypes
。也许提交一个补丁来为你使用的任意精度十进制浮点库添加对libpqtypes
的支持。
见相关:
它的下记录,它会是不错的这个正确的SGML文档。您的补丁将受到欢迎;-)
为什么你需要知道内部二进制表示?除非您明确要求使用二进制模式,否则通常将PostgreSQL服务器的'numeric'值作为格式化文本进行交换。 – 2014-10-01 02:45:32
谢谢你,克雷格。您的信息为我节省了大量时间在pgsql源代码树中进行挖掘。 关于使用文本与二进制模式的问题,我可以说我默认使用二进制模式的框架。 我知道,这将是更容易在文本模式下工作,因为,在这种或那种方式,我不得不建立一个串出的二进制表示,以创建一个NSDecimalNumer(通过decimalNumberWithString方法),但是,正如我所说的,我不能改变框架的默认行为细节。 – 2014-10-01 20:39:47
听起来像'libpqtypes'对你来说是理想的选择。 – 2014-10-02 00:55:44