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