Формат запросов

Запросы Cypher выполняются через функцию cypher из схемы ag_catalog, которая возвращает тип SETOF записей.

cypher()

Функция cypher() выполняет переданный в качестве аргумента запрос Cypher.

Синтаксис: cypher(graph_name, query_string, parameters)

Возвращаемое значение:

SETOF записей

Параметры:

Имя Описание
graph_name Целевой граф для выполнения запроса Cypher.
query_string Выполняемый запрос Cypher.
parameters Необязательная карта параметров для подготовленных операторов; по умолчанию NULL.

Примечание!

  • Даже если запрос Cypher не возвращает результатов, определение структуры записи должно быть указано явно.
  • Карта parameters допустима только при использовании подготовленных операторов; в остальных случаях её применение вызовет ошибку.

Пример запроса:

SELECT * FROM cypher('graph_name', $$ 
/* Здесь размещается запрос Cypher */ 
$$) AS (result1 agtype, result2 agtype);

Использование Cypher внутри SQL-выражений

Cypher нельзя использовать непосредственно внутри SQL-выражений. Вместо этого применяйте подзапрос. Подробнее об интеграции запросов Cypher в выражения см. в разделе [Расширенное использование]().

В предложении SELECT

Вызов cypher() в виде отдельного столбца в предложении SELECT не поддерживается. Однако функцию cypher() можно использовать внутри условных предложений (например, WHERE, HAVING).

Неподдерживаемый синтаксис:

SELECT 
    cypher('graph_name', $$
         MATCH (v:Person)
         RETURN v.name
     $$);

Сообщение об ошибке:

ERROR:  cypher(...) in expressions is not supported
LINE 3:         cypher('graph_name', $$
                ^
HINT:  Use subquery instead if possible.