Можем ли мы получить graphID(Oid) графика на терминале postgresql

Я создал граф с именем cyc_graph. Сейчас я проверяю, могу ли я вставить некоторые вершины в этот граф с помощью функции agtype_build_map, но эта функция требует в качестве параметра graphID. Итак, как я могу получить graphID графика, уже созданного из терминала PostgreSQL?

Я пробовал что-то вроде этого

SELECT 'cyc_graph.vtxs'::regclass::oid;

Но это дает Oid таблицы vtxs. (vtxs — имя метки для вершин). Я понимаю, что cyc_graph — это имя схемы. Поэтому я не знаю, как я могу получить graphID/Oid имени схемы.

1 ответ

Что такое ГрафИД?
Простым объектам назначается уникальный графид. Графид представляет собой уникальную комбинацию идентификатора метки объекта и уникальной последовательности, назначенной каждой метке. Обратите внимание, что при сравнении объектов из разных графиков идентификаторы будут перекрываться.

Ссылка: https://age.apache.org/age-manual/master/intro/types.html

      test=# LOAD 'age';
LOAD
test=# SET search_path = ag_catalog, "$user", public;
SET
test=# SELECT * FROM cypher('graph', $$
MATCH (v)
RETURN v
$$) as (v agtype);
                                                     v
------------------------------------------------------------------------------------------------------------
 {"id": 844424930131969, "label": "Person", "properties": {"name": "John"}}::vertex
 {"id": 844424930131970, "label": "Person", "properties": {"name": "Jeff"}}::vertex
 {"id": 844424930131971, "label": "Person", "properties": {"name": "Joan"}}::vertex
 {"id": 844424930131972, "label": "Person", "properties": {"name": "Bill"}}::vertex
 {"id": 844424930131973, "label": "Person", "properties": {"name": "Andres", "title": "Developer"}}::vertex
(5 rows)

Здесь идентификатор на самом деле GraphID.

Другие вопросы по тегам