Postgresql jsonb类型的plv8存储过程
这可能还为时过早,postgres 9.4仍处于测试阶段。我一直在试验jsonb类型。我没有任何运气将jsonb类型传递给plv8函数,它以类型字符串的形式出现。我在想我是不是做错了Postgresql jsonb类型的plv8存储过程,postgresql,plv8,postgresql-9.4,Postgresql,Plv8,Postgresql 9.4,这可能还为时过早,postgres 9.4仍处于测试阶段。我一直在试验jsonb类型。我没有任何运气将jsonb类型传递给plv8函数,它以类型字符串的形式出现。我在想我是不是做错了 create or replace function jt ( o json ) returns integer language plv8 immutable AS $function$ plv8.elog(INFO, 'type is ', typeof o); plv8.elo
create or replace function jt ( o json ) returns integer language plv8 immutable
AS $function$
plv8.elog(INFO, 'type is ', typeof o);
plv8.elog(INFO, 'argument is ', o);
plv8.elog(INFO, 'member is ', o['member']);
$function$;
create or replace function jt ( o jsonb ) returns integer language plv8 immutable
AS $function$
plv8.elog(INFO, 'type is ', typeof o);
plv8.elog(INFO, 'argument is ', o);
plv8.elog(INFO, 'member is ', o['member']);
$function$;
然后,当我使用json运行时:
psql=# select jt('{"member":"test"}'::json);
INFO: type is object
INFO: argument is [object Object]
INFO: member is test
但是,当我使用jsonb运行时:
psql=# select jt('{"member":"test"}'::jsonb);
INFO: type is string
INFO: argument is {"member": "test"}
INFO: member is undefined
-gPL/V8需要添加对JSONB的支持,然后才能按您的预期工作 同时,您仍然可以传递普通的
json
;只需将jsonb
转换为json
2015年以来的新闻
2014年后,plv8项目发生了变化,2017年:
JSONB与JSON的速度差异是众所周知的,
JSONB现在在C++中直接转换成V8对象,运行速度比JSON转换快 下面将显示关于JSONb开始日期的一些线索:
- 2015-05-26(版本1.4.4)“在功能边界中添加jsonb类型强制”
- 2019-03-23(版本2.3.10)“添加直接jsonb转换选项”,“为jsonb转换添加内存上下文”
嗨,请更新。。。或者。@PeterKrauss请建议编辑您想要显示的信息。我不能把一切都记录下来。请注意2014年的答复日期。嗨,对不起,我卸载了plv8,无法检查经验证据。。。我正在用新闻编辑你的问题。其他读者的评论:请检查(性能)它是否真的是JSONb输入,而不是语法糖(自动转换
JSONb::text
)。@PeterKrauss非常感谢,谢谢。