Readable identity strings for property graph objects

The "identity" column of pg_identify_object() for property graph
objects can be long string of names connected by "of", e.g. "a of l of
e of g".  The type of the first named object is given by column
"type".  But the types of intermediate objects are not easy to find
from the identity string especially when some of them share the same
name.  Some objects, like user mappings or authorization identifier
members, add types of objects other than the first one in the identity
string.  Do the same for property graph objects.

Author: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
Reviewed-by: Michael Paquier <michael@paquier.xyz>
Discussion: https://www.postgresql.org/message-id/flat/aej1DkLwhyZWmtxJ%40bdtpg
This commit is contained in:
Peter Eisentraut 2026-06-23 08:58:16 +02:00
parent f0a4f280b4
commit 2a7e95b659
2 changed files with 30 additions and 30 deletions

View file

@ -6172,7 +6172,7 @@ getObjectIdentityParts(const ObjectAddress *object,
break;
}
pge = (Form_pg_propgraph_element) GETSTRUCT(tup);
appendStringInfo(&buffer, "%s of ", quote_identifier(NameStr(pge->pgealias)));
appendStringInfo(&buffer, "%s of property graph ", quote_identifier(NameStr(pge->pgealias)));
getRelationIdentity(&buffer, pge->pgepgid, objname, false);
if (objname)
@ -6196,7 +6196,7 @@ getObjectIdentityParts(const ObjectAddress *object,
}
pgl = (Form_pg_propgraph_label) GETSTRUCT(tup);
appendStringInfo(&buffer, "%s of ", quote_identifier(NameStr(pgl->pgllabel)));
appendStringInfo(&buffer, "%s of property graph ", quote_identifier(NameStr(pgl->pgllabel)));
getRelationIdentity(&buffer, pgl->pglpgid, objname, false);
if (objname)
*objname = lappend(*objname, pstrdup(NameStr(pgl->pgllabel)));
@ -6218,7 +6218,7 @@ getObjectIdentityParts(const ObjectAddress *object,
}
pgp = (Form_pg_propgraph_property) GETSTRUCT(tup);
appendStringInfo(&buffer, "%s of ", quote_identifier(NameStr(pgp->pgpname)));
appendStringInfo(&buffer, "%s of property graph ", quote_identifier(NameStr(pgp->pgpname)));
getRelationIdentity(&buffer, pgp->pgppgid, objname, false);
if (objname)
*objname = lappend(*objname, pstrdup(NameStr(pgp->pgpname)));
@ -6251,7 +6251,7 @@ getObjectIdentityParts(const ObjectAddress *object,
pgelform = (Form_pg_propgraph_element_label) GETSTRUCT(tup);
labelname = get_propgraph_label_name(pgelform->pgellabelid);
appendStringInfo(&buffer, "%s of ", quote_identifier(labelname));
appendStringInfo(&buffer, "%s of element ", quote_identifier(labelname));
ObjectAddressSet(oa, PropgraphElementRelationId, pgelform->pgelelid);
appendStringInfoString(&buffer, getObjectIdentityParts(&oa, objname,
objargs, false));
@ -6289,7 +6289,7 @@ getObjectIdentityParts(const ObjectAddress *object,
plpform = (Form_pg_propgraph_label_property) GETSTRUCT(tup);
propname = get_propgraph_property_name(plpform->plppropid);
appendStringInfo(&buffer, "%s of ", quote_identifier(propname));
appendStringInfo(&buffer, "%s of label ", quote_identifier(propname));
ObjectAddressSet(oa, PropgraphElementLabelRelationId, plpform->plpellabelid);
appendStringInfoString(&buffer, getObjectIdentityParts(&oa, objname,
objargs, false));

View file

@ -751,31 +751,31 @@ SELECT (pg_identify_object_as_address(classid, objid, objsubid)).*
SELECT (pg_identify_object(classid, objid, objsubid)).*
FROM (SELECT DISTINCT classid, objid, objsubid FROM deps_tree)
ORDER BY 1, 2, 3, 4;
type | schema | name | identity
-------------------------------+--------+------+-------------------------------------------------
property graph element | | | e of create_property_graph_tests.gt
property graph element | | | v1 of create_property_graph_tests.gt
property graph element | | | v2 of create_property_graph_tests.gt
property graph element label | | | e of e of create_property_graph_tests.gt
property graph element label | | | v1 of v1 of create_property_graph_tests.gt
property graph element label | | | v2 of v2 of create_property_graph_tests.gt
property graph label | | | e of create_property_graph_tests.gt
property graph label | | | v1 of create_property_graph_tests.gt
property graph label | | | v2 of create_property_graph_tests.gt
property graph label property | | | a of v1 of v1 of create_property_graph_tests.gt
property graph label property | | | b of v1 of v1 of create_property_graph_tests.gt
property graph label property | | | c of e of e of create_property_graph_tests.gt
property graph label property | | | k1 of e of e of create_property_graph_tests.gt
property graph label property | | | k2 of e of e of create_property_graph_tests.gt
property graph label property | | | m of v2 of v2 of create_property_graph_tests.gt
property graph label property | | | n of v2 of v2 of create_property_graph_tests.gt
property graph property | | | a of create_property_graph_tests.gt
property graph property | | | b of create_property_graph_tests.gt
property graph property | | | c of create_property_graph_tests.gt
property graph property | | | k1 of create_property_graph_tests.gt
property graph property | | | k2 of create_property_graph_tests.gt
property graph property | | | m of create_property_graph_tests.gt
property graph property | | | n of create_property_graph_tests.gt
type | schema | name | identity
-------------------------------+--------+------+------------------------------------------------------------------------------
property graph element | | | e of property graph create_property_graph_tests.gt
property graph element | | | v1 of property graph create_property_graph_tests.gt
property graph element | | | v2 of property graph create_property_graph_tests.gt
property graph element label | | | e of element e of property graph create_property_graph_tests.gt
property graph element label | | | v1 of element v1 of property graph create_property_graph_tests.gt
property graph element label | | | v2 of element v2 of property graph create_property_graph_tests.gt
property graph label | | | e of property graph create_property_graph_tests.gt
property graph label | | | v1 of property graph create_property_graph_tests.gt
property graph label | | | v2 of property graph create_property_graph_tests.gt
property graph label property | | | a of label v1 of element v1 of property graph create_property_graph_tests.gt
property graph label property | | | b of label v1 of element v1 of property graph create_property_graph_tests.gt
property graph label property | | | c of label e of element e of property graph create_property_graph_tests.gt
property graph label property | | | k1 of label e of element e of property graph create_property_graph_tests.gt
property graph label property | | | k2 of label e of element e of property graph create_property_graph_tests.gt
property graph label property | | | m of label v2 of element v2 of property graph create_property_graph_tests.gt
property graph label property | | | n of label v2 of element v2 of property graph create_property_graph_tests.gt
property graph property | | | a of property graph create_property_graph_tests.gt
property graph property | | | b of property graph create_property_graph_tests.gt
property graph property | | | c of property graph create_property_graph_tests.gt
property graph property | | | k1 of property graph create_property_graph_tests.gt
property graph property | | | k2 of property graph create_property_graph_tests.gt
property graph property | | | m of property graph create_property_graph_tests.gt
property graph property | | | n of property graph create_property_graph_tests.gt
(23 rows)
\a\t