2014-09-30 104 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文檔。您的補丁將受到歡迎;-)