Согласно МТФ (Postgres docs), можно использовать обычный оператор конкатенации, чтобы присоединиться к двум HSTOREs:PostgreSQL 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.
Единственный способ получить желаемый результат - это сделать что-то настолько хакерское, что заставляет меня хотеть плакать: конвертируя любые 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
Правильно работает на 5 серверах с 9.4.2 до 9.5beta2 (2 vC++ win, 3 gcc ubuntu, все 64 бит). – klin
Клин, вы используете hstore 1.3? – GarrettMurphy
Да, hstore 1.3 на всех серверах. – klin