При выполнении массовой загрузки в таблицу, содержащую столбец json, я получаю сообщение об ошибке «не удалось определить оператор равенства для типа json». Столбец json не является частью какого-либо сравнения (насколько я могу судить), поэтому я озадачен тем, почему я получаю ошибку.
Глядя на вставляемые данные, все это выглядит правильно.
Таблица:
create table foo (
c0 serial not null,
c1 int4 not null,
c2 timestamp not null,
c3 timestamp not null,
c4 bool not null
c5 char(1) not null default 'I',
c6 json not null default '[]'::json,
constraint foo_pkey primary key (c0)
);
create unique index foo_idx on foo using btree (c1, c2);
А код Python, использующий psycopg2:
def upsert_foo(cursor, data):
sql = """
INSERT INTO foo
(c1, c2, c3, c4, c5, c6)
VALUES
(%s,%s,%s,%s,%s,%s)
ON CONFLICT (c1, c2)
DO UPDATE SET
c3 = %s,
c4 = %s,
c5 = %s,
c6 = %s;
"""
execute_batch(cursor, sql, data)
Полная ошибка:
psycopg2.errors.UndefinedFunction: could not identify an equality operator for type json