Ne pourrais pas identifier l'opérateur d'égalité de type json[] lors de l'utilisation de l'UNION

Je suis en train d'effectuer plusieurs requêtes sur une seule table à l'aide d'un UNION règle

J'ai deux tables:

  • projet (id, nom, épinglé BOOLEAN)
  • compétences (m2m à projets)

Je suis à la recherche de la première à obtenir un tableau de lignes qui ont pinned ensemble de true et remplir le reste avec les dernières inscriptions (pinned ensemble de false)

SELECT
  project.id AS project_id,
  project.name AS project_name,
  array_agg(json_build_object('skill_id', project_skills.id,'name', project_skills.skill)) AS skills
from project
LEFT OUTER JOIN project_skills on project.name = project_skills.project
WHERE project.pinned = true
GROUP BY project_id,project_name

UNION

SELECT
  project.id AS project_id,
  project.name AS project_name,
  array_agg(json_build_object('skill_id', project_skills.id,'name', project_skills.skill)) AS skills
from project
LEFT OUTER JOIN project_skills on project.name = project_skills.project
WHERE project.id != 1 AND project.pinned = false
GROUP BY project_id,project_name
ORDER BY project.create_date DESC LIMIT 5

Lors de l'exécution de cette requête , j'obtiens l'erreur ci-dessous

ERROR:  could not identify an equality operator for type json[]
LINE 7:   array_agg(json_build_object('skill_id', project_skills.id,...

Je ne comprends pas cette erreur. Est-elle défaillante parce que son train de comparer les json des colonnes de deux résultats?

Je suis en utilisant Postgresql 9.4.

OriginalL'auteur Kannaj | 2017-05-01