2014-09-30 106 views
1

我试图增加对数字/十进制pgsql的支持(也SQL99标准)的数据类型为Cocoa框架。 到目前为止,我还没有能够找到的有关内部二进制表示的libpq任何展示其用于查询的输出像pgsql的数字/十进制二进制表示,可可

SELECT "12,345"::numeric(5,3); 

任何想法时,使用的是?

+0

为什么你需要知道内部二进制表示?除非您明确要求使用二进制模式,否则通常将PostgreSQL服务器的'numeric'值作为格式化文本进行交换。 – 2014-10-01 02:45:32

+0

谢谢你,克雷格。您的信息为我节省了大量时间在pgsql源代码树中进行挖掘。 关于使用文本与二进制模式的问题,我可以说我默认使用二进制模式的框架。 我知道,这将是更容易在文本模式下工作,因为,在这种或那种方式,我不得不建立一个串出的二进制表示,以创建一个NSDecimalNumer(通过decimalNumberWithString方法),但是,正如我所说的,我不能改变框架的默认行为细节。 – 2014-10-01 20:39:47

+0

听起来像'libpqtypes'对你来说是理想的选择。 – 2014-10-02 00:55:44

回答

0

用于二进制格式的主要参考的源代码 - src/backend/utils/adt/numeric.c。请参阅numeric_sendnumeric_recv以及源文件顶部的注释。

为什么你需要用二进制表示工作?除非您明确要求使用二进制模式,否则您通常会将numeric值与PostgreSQL服务器交换为格式化文本。

如果您确实需要二进制格式,您可能希望查看libpqtypes,其中包含对NUMERIC的二进制表示形式的支持并将其与服务器交换。您可能要考虑在代码中使用libpqtypes。也许提交一个补丁来为你使用的任意精度十进制浮点库添加对libpqtypes的支持。

见相关:

它的下记录,它会是不错的这个正确的SGML文档。您的补丁将受到欢迎;-)