Начало работы
Подключение
Тесты производительности
Развёртывание
Использование данных
Загрузка данных
Миграция данных
Запрос данных
Управление кластерами
Обновление
Глобальное обслуживание
Масштабирование
Мониторинг
Безопасность
Лучшие практики
Технические принципы
Типы данных
Хранилище
Исполняющий движок
Потоковая обработка (Domino)
MARS3 Индексы
Расширения
Расширенные функции
Расширенный запрос
Федеративные запросы
Grafana
Резервное копирование и восстановление
Аварийное восстановление
Графовая база данных
Введение
Предложения
Функции
Расширенные темы
Руководство
Настройка производительности
Устранение неполадок
Инструменты
Параметры конфигурации
SQL-команда
Часто задаваемые вопросы
Команды Cypher можно выполнять в ограниченном режиме внутри функций PL/pgSQL.
Примечание!
В YMatrix AGE не поддерживаются операторыCREATE,DELETEиSET.
SELECT *
FROM cypher('imdb', $$
CREATE (toby:actor {name: 'Toby Maguire'}),
(tom:actor {name: 'Tom Holland'}),
(willam:actor {name: 'Willam Dafoe'}),
(robert:actor {name: 'Robert Downey Jr'}),
(spiderman:movie {title: 'Spiderman'}),
(no_way_home:movie {title: 'Spiderman: No Way Home'}),
(homecoming:movie {title: 'Spiderman: Homecoming'}),
(ironman:movie {title: 'Ironman'}),
(tropic_thunder:movie {title: 'Tropic Thunder'}),
(toby)-[:acted_in {role: 'Peter Parker', alter_ego: 'Spiderman'}]->(spiderman),
(willam)-[:acted_in {role: 'Norman Osborn', alter_ego: 'Green Goblin'}]->(spiderman),
(toby)-[:acted_in {role: 'Toby Maguire'}]->(tropic_thunder),
(robert)-[:acted_in {role: 'Kirk Lazarus'}]->(tropic_thunder),
(robert)-[:acted_in {role: 'Tony Stark', alter_ego: 'Ironman'}]->(homecoming),
(tom)-[:acted_in {role: 'Peter Parker', alter_ego: 'Spiderman'}]->(homecoming),
(tom)-[:acted_in {role: 'Peter Parker', alter_ego: 'Spiderman'}]->(no_way_home),
(toby)-[:acted_in {role: 'Peter Parker', alter_ego: 'Spiderman'}]->(no_way_home),
(willam)-[:acted_in {role: 'Norman Osborn', alter_ego: 'Green Goblin'}]->(no_way_home)
$$) AS (a agtype);
CREATE OR REPLACE FUNCTION get_all_actor_names()
RETURNS TABLE(actor agtype)
LANGUAGE plpgsql
AS $BODY$
BEGIN
LOAD 'age';
SET search_path TO ag_catalog;
RETURN QUERY
SELECT *
FROM ag_catalog.cypher('imdb', $$
MATCH (v:actor)
RETURN v.name
$$) AS (a agtype);
END
$BODY$;
SELECT * FROM get_all_actor_names();
| actor |
|---|
"Toby Maguire" |
"Tom Holland" |
"Willam Dafoe" |
"Robert Downey Jr" |
| 4 строки возвращено |
Примечание для разработчиков:
Рекомендуется включать команду `LOAD 'age'` и устанавливать `search_path` в теле функции, чтобы гарантировать успешное выполнение `CREATE FUNCTION`.
CREATE OR REPLACE FUNCTION get_actors_who_played_role(role agtype)
RETURNS TABLE(actor agtype, movie agtype)
LANGUAGE plpgsql
AS $function$
DECLARE sql VARCHAR;
BEGIN
LOAD 'age';
SET search_path TO ag_catalog;
sql := format('
SELECT *
FROM cypher(''imdb'', $$
MATCH (actor)-[:acted_in {role: %s}]->(movie:movie)
RETURN actor.name, movie.title
$$) AS (actor agtype, movie agtype);
', role);
RETURN QUERY EXECUTE sql;
END
$function$;
SELECT * FROM get_actors_who_played_role('"Peter Parker"');
| actor | movie |
|---|---|
"Toby Maguire" |
"Spiderman" |
"Toby Maguire" |
"Spiderman: No Way Home" |
"Tom Holland" |
"Spiderman: No Way Home" |
"Tom Holland" |
"Spiderman: Homecoming" |
| 4 строки возвращено |