hillpig的个人博客分享 http://blog.sciencenet.cn/u/hillpig 畅想ing,思考ing,前行ing Email:bluevaley@gmail.com

博文

PG 9.6.0版本里jsonb_set()有个bug,截至到2016.10.12

已有 3693 次阅读 2016-10-12 14:31 |个人分类:postgresql|系统分类:科研笔记| postgresql, jsonb_set

我发现在9.6.0版本里json方面有个bug,谁能给打个patch

即执行:select jsonb_set('[{"f1":1,"f2":null},2,null,3]', '{0}','[2,3,4]', false);
本语句愿意是替换掉第一个元素,结果给删掉了(false可能给搞反了),结果为:
jsontestdb=> select jsonb_set('[{"f1":1,"f2":null},2,null,3]', '{0}','[2,3,4]',
false);
 jsonb_set
--------------
[2, null, 3]
(1 行记录)

而在9.5.4里面语义完全正确,结果为:

psql (9.5.4)
postgres=# select jsonb_set('[{"f1":1,"f2":null},2,null,3]', '{0}','[2,3,4]', fa
lse);
       jsonb_set
-------------------------
[[2, 3, 4], 2, null, 3]

(1 行记录)


后面有时间看看内核里这个bug怎么回事。


附Tom Lane今天(2016.10.14)已经fixed了,赞效率:

Tom Lane
Oct 13 (1 day ago)

to me, pgsql-bugs
bluevaley@gmail.com writes:
> The following bug has been logged on the website:
> Bug reference:      14366
> Logged by:          peng sun
> Email address:      bluevaley@gmail.com
> PostgreSQL version: 9.6.0
> Operating system:   win8.1
> Description:

> select jsonb_set('[{"f1":1,"f2":null},2,null,3]', '{0}','[2,3,4]', false);
> in 9.6, got:
> [2, null, 3]
> in 9.5.4, got:
> [[2, 3, 4], 2, null, 3]

Yeah, this is broken.  Fixed, thanks for the report!

                       regards, tom lane

加我私人微信,交流技术。




https://blog.sciencenet.cn/blog-419883-1008263.html

上一篇:如何使用PostgreSQL中的JSONB数据类型(PG JSON系列2)
下一篇:组合使用PostgreSQL的ARRAY和JSONB数据类型(PG JSON系列3)
收藏 IP: 223.72.72.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-25 13:47

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部