我在本地开发环境中写了以下查询,没有意识到我本地开发的postgres版本是9.3+但生产时只有9.1。我对升级生产postgres犹豫不决。有没有办法编写与9.1兼容的以下查询?我相信row_to_json是个问题。是否有9.1当量?架构是SalesOrders有许多SalesOrderItems。每个SalesOrderItem都有许多mdns。在9.3上运行时,下面给我一个很好的紧凑嵌套JSON对象。
select row_to_json(t)
from (select s.*,
( select array_to_json(array_agg(row_to_json(d)))
from ( select soi.* , (select array_to_json(array_agg(row_to_json(e)))
from( select m.* FROM "Mdns" m where m."SalesOrderItemId" = soi.id) e) mdns
from "SalesOrderItems" soi where soi."SalesOrderId" =s.id ) d
) as order_items
from "SalesOrders" s where s.order_id = 'SO-83562-0185') t
答案 0 :(得分:2)
9.2&{j}功能的后端口为9.1 available as an extension called json91
。
但总的来说,针对较新版本的DB进行开发比在生产中运行更糟糕。你会遇到这样的问题。
如果你想使用json功能,你想要计划升级到9.4;每次发布时,PostgreSQL的json支持都在不断提高。