2015-11-20 92 views
0

所以我有一個Postgres函數就地設計合併兩個JSONB對象遞歸,它在生產服務器上工作得很好,但在本地Postgres安裝失敗。函數本身寫在plv8(基本上是一個v8的Javascript引擎),並且期望JSONB格式的兩個參數合併;問題在於JSON以字符串形式傳遞,而不是作爲對象傳遞,實質上是打破了整個功能。Postgres JSON函數傳遞的字符串,而不是對象

這隻發生在我的本地計算機上,雖然新鮮的Postgres 9.4.5安裝。生產服務器正在運行9.4.4,這不應該導致版本之間發生如此重大的變化......關於何處去查看這裏發生了什麼的想法?

編輯:現在可以證實,恢復到9.4.4不使這個行爲有什麼不同本地

+0

本地安裝9.4.4並嘗試? – djechlin

+0

您可能需要[SSCCE](http://sscce.org)。 – djechlin

+0

你可以在你的函數中將字符串轉換爲JSON或JSONB,然後從那裏工作?我們不會知道,除非你發佈一些代碼。 – amphetamachine

回答

0

很難說。可能性:

  1. 不同類型轉換 - 你可以自定義蒙上 - CREATE CAST聲明 - 嘗試檢查psql命令的結果\dC *json*

  2. 新bug在9.4.5

+0

從我所能看到的9.4.5中沒有任何錯誤;我也在'psql'中運行了這個命令,並且兩臺服務器都提供了相同的輸出,所以它看起來不像是問題所在? – moberemk

0

FWIW介紹,升級到9.5似乎解決了這個問題的例子。

相關問題