postgres 9.1上的row_to_json

时间:2014-12-29 21:35:33

标签: sql postgresql row compatibility postgresql-9.1

我在本地开发环境中写了以下查询,没有意识到我本地开发的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

1 个答案:

答案 0 :(得分:2)

9.2&{j}功能的后端口为9.1 available as an extension called json91

但总的来说,针对较新版本的DB进行开发比在生产中运行更糟糕。你会遇到这样的问题。

如果你想使用json功能,你想要计划升级到9.4;每次发布时,PostgreSQL的json支持都在不断提高。