]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Readable identity strings for property graph objects
authorPeter Eisentraut <peter@eisentraut.org>
Tue, 23 Jun 2026 06:58:16 +0000 (08:58 +0200)
committerPeter Eisentraut <peter@eisentraut.org>
Tue, 23 Jun 2026 07:13:11 +0000 (09:13 +0200)
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

src/backend/catalog/objectaddress.c
src/test/regress/expected/create_property_graph.out

index de3ab11dd34dddf0e7fdf970c5d47cffbd4a6a7b..af0e4703616c79ab4983ecb5b718f279aba43b13 100644 (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));
index 86c0957dcc76bfddaa80c40d16f0be122db8f27b..2f06c7ce5a8083065dfc645963038a43f5b8161b 100644 (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