2015-11-20 2 views
0

Итак, у меня есть функция Postgres, предназначенная для рекурсивного слияния двух объектов JSONB, и она отлично работает на рабочем сервере, но не работает на моей локальной установке Postgres. Сама функция написана в plv8 (в основном движок Javascript v8) и ожидает, что два аргумента в формате JSONB будут слиты; проблема заключается в том, что JSON передается как строка, а не как объект, что существенно разрушает всю функцию.Функция Postgres JSON передала строку вместо объекта

Это происходит только на моем локальном компьютере, но новая установка Postgres 9.4.5. Рабочий сервер работает с 9.4.4, что не должно вызывать такого серьезного изменения в разных версиях ... идеи о том, куда идти, чтобы увидеть, что здесь нарушено?

EDIT: теперь подтвердить, что возврат к 9.4.4 не делает этого вести себя по-другому локально

+0

установить 9.4.4 локально и попробовать? – djechlin

+0

Возможно, вам понадобится [SSCCE] (http://sscce.org). – djechlin

+0

Можете ли вы наложить строку внутри своей функции как JSON или JSONB, а затем работать оттуда? Мы не узнаем, если вы разместите какой-либо код. – amphetamachine

ответ

0

Трудно сказать. Возможности:

  1. Различные отливок - вы можете определить пользовательские проливает - CREATE CAST оператор - попробуйте проверить результат psql команды \dC *json*

  2. Новая ошибка введена в 9.4.5

+0

Нет ошибок в 9.4.5 из того, что я вижу; Я также запускал эту команду в 'psql', и оба сервера дают один и тот же вывод, поэтому не похоже, что это будет проблемой? – moberemk

0

FWIW, обновление до 9.5, похоже, решает случаи этой проблемы для меня.

Смежные вопросы