Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql jsonb类型的plv8存储过程_Postgresql_Plv8_Postgresql 9.4 - Fatal编程技术网

Postgresql 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

这可能还为时过早,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.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

-g

PL/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转换添加内存上下文”

建议在plv8版本2.3.10或更高版本中使用JSONB。。。尽管如此,对于plv8的旧版本,几乎一切都会很好:

自2015年4月22日以来,JSONB支持一直处于活跃状态并已完成


嗨,请更新。。。或者。@PeterKrauss请建议编辑您想要显示的信息。我不能把一切都记录下来。请注意2014年的答复日期。嗨,对不起,我卸载了plv8,无法检查经验证据。。。我正在用新闻编辑你的问题。其他读者的评论:请检查(性能)它是否真的是JSONb输入,而不是语法糖(自动转换
JSONb::text
)。@PeterKrauss非常感谢,谢谢。