PostgreSQL hstore连接

时间:2015-12-11 19:47:09

标签: postgresql hstore

根据TFM(Postgres docs),您使用常规连接运算符来连接两个HSTORE:

SELECT 'a=>b, c=>d'::hstore || 'c=>x, d=>q'::hstore

结果:

"a"=>"b", "c"=>"x", "d"=>"q"

但是,我在运行完全相同的命令时遇到错误:

[42883] ERROR: operator does not exist: hstore || hstore Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts.

我能得到理想结果的唯一方法就是做一些如此hackish让我想哭的东西:先将我拥有的任何HSTORE转换成文本,然后连接文本并转换回HSTORE。当然,这并不是很好,因为文档还说明如果有重复的密钥,那么就不能保证哪一个密钥能够存在。

在我向Postgres人员提交错误之前,还有其他人可以复制这个吗?版本信息:

select version();
PostgreSQL 9.4.5 on x86_64-unknown-linux-gnu, compiled by gcc (Debian 4.7.2-5) 4.7.2, 64-bit
select extname,extversion from pg_catalog.pg_extension;
hstore  1.3

1 个答案:

答案 0 :(得分:0)

找出问题所在。 HSTORE扩展安装在单独的模式中;我能够通过识别它来调用该模式(sys.hstore),但它仍然不喜欢运算符||。修复实际上非常简单:我将sys添加到search_path。