Subject: Type of property graph

From: Ashutosh Bapat <[email-masked]>
Date: Thu, 30 Apr 2026 17:59:50 +0530

Hi Peter,
We create a pg_type entry for a property graph, but it's not used
anywhere and it doesn't make sense to create a type for a property
graph which doesn't hold any rows or can be associated with a specific
result type. We have other pg_class entries which do not have a type
associated with them. I think we should do the same for property graph
as well. Here's patch with that change. It doesn't show any failure in
make check as well.

-- 
Best Wishes,
Ashutosh Bapat
From eaa6947952a8dd16dc801360c505bfec53de792f Mon Sep 17 00:00:00 2001
From: Ashutosh Bapat <[email-masked]>
Date: Thu, 30 Apr 2026 17:35:06 +0530
Subject: [PATCH v20260430 1/6] Do not define type for a property graph

Even though a property graph is defined in pg_class it does not contain any rows
by itself and need not have a type defined. Avoid creating a type for it.

Author: Ashutosh Bapat <[email-masked]>
---
 src/backend/catalog/heap.c                    |  6 ++-
 .../expected/create_property_graph.out        | 53 +++++++++----------
 2 files changed, 29 insertions(+), 30 deletions(-)

diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c
index d5156c7db62..7678ab13f6a 100644
--- a/src/backend/catalog/heap.c
+++ b/src/backend/catalog/heap.c
@@ -1347,12 +1347,14 @@ heap_create_with_catalog(const char *relname,
 	/*
 	 * Decide whether to create a pg_type entry for the relation's rowtype.
 	 * These types are made except where the use of a relation as such is an
-	 * implementation detail: toast tables, sequences and indexes.
+	 * implementation detail: toast tables, sequences, indexes, and property
+	 * graphs.
 	 */
 	if (!(relkind == RELKIND_SEQUENCE ||
 		  relkind == RELKIND_TOASTVALUE ||
 		  relkind == RELKIND_INDEX ||
-		  relkind == RELKIND_PARTITIONED_INDEX))
+		  relkind == RELKIND_PARTITIONED_INDEX ||
+		  relkind == RELKIND_PROPGRAPH))
 	{
 		Oid			new_array_oid;
 		ObjectAddress new_type_addr;
diff --git a/src/test/regress/expected/create_property_graph.out b/src/test/regress/expected/create_property_graph.out
index bc9a596ec89..4fc4759f18e 100644
--- a/src/test/regress/expected/create_property_graph.out
+++ b/src/test/regress/expected/create_property_graph.out
@@ -686,11 +686,10 @@ SELECT pg_describe_object(classid, objid, objsubid) as obj,
  property x of property graph g2 | property graph g2
  property y of property graph g2 | property graph g2
  property z of property graph g2 | property graph g2
- type g2                         | property graph g2
  vertex t1 of property graph g2  | property graph g2
  vertex t2 of property graph g2  | property graph g2
  vertex t3 of property graph g2  | property graph g2
-(21 rows)
+(20 rows)
 
 SELECT (pg_identify_object_as_address(classid, objid, objsubid)).*
     FROM pg_depend
@@ -719,38 +718,36 @@ SELECT (pg_identify_object_as_address(classid, objid, objsubid)).*
  property graph property | {create_property_graph_tests,g2,x}    | {}
  property graph property | {create_property_graph_tests,g2,y}    | {}
  property graph property | {create_property_graph_tests,g2,z}    | {}
- type                    | {create_property_graph_tests.g2}      | {}
-(21 rows)
+(20 rows)
 
 SELECT (pg_identify_object(classid, objid, objsubid)).*
     FROM pg_depend
     WHERE refclassid = 'pg_class'::regclass AND
           refobjid = 'create_property_graph_tests.g2'::regclass
     ORDER BY 1, 2, 3, 4;
-          type           |           schema            | name |                identity                
--------------------------+-----------------------------+------+----------------------------------------
- property graph element  |                             |      | e1 of create_property_graph_tests.g2
- property graph element  |                             |      | e2 of create_property_graph_tests.g2
- property graph element  |                             |      | t1 of create_property_graph_tests.g2
- property graph element  |                             |      | t2 of create_property_graph_tests.g2
- property graph element  |                             |      | t3 of create_property_graph_tests.g2
- property graph label    |                             |      | e1 of create_property_graph_tests.g2
- property graph label    |                             |      | e2 of create_property_graph_tests.g2
- property graph label    |                             |      | t1 of create_property_graph_tests.g2
- property graph label    |                             |      | t2 of create_property_graph_tests.g2
- property graph label    |                             |      | t3l1 of create_property_graph_tests.g2
- property graph label    |                             |      | t3l2 of create_property_graph_tests.g2
- property graph property |                             |      | a of create_property_graph_tests.g2
- property graph property |                             |      | b of create_property_graph_tests.g2
- property graph property |                             |      | i of create_property_graph_tests.g2
- property graph property |                             |      | j of create_property_graph_tests.g2
- property graph property |                             |      | k of create_property_graph_tests.g2
- property graph property |                             |      | t of create_property_graph_tests.g2
- property graph property |                             |      | x of create_property_graph_tests.g2
- property graph property |                             |      | y of create_property_graph_tests.g2
- property graph property |                             |      | z of create_property_graph_tests.g2
- type                    | create_property_graph_tests | g2   | create_property_graph_tests.g2
-(21 rows)
+          type           | schema | name |                identity                
+-------------------------+--------+------+----------------------------------------
+ property graph element  |        |      | e1 of create_property_graph_tests.g2
+ property graph element  |        |      | e2 of create_property_graph_tests.g2
+ property graph element  |        |      | t1 of create_property_graph_tests.g2
+ property graph element  |        |      | t2 of create_property_graph_tests.g2
+ property graph element  |        |      | t3 of create_property_graph_tests.g2
+ property graph label    |        |      | e1 of create_property_graph_tests.g2
+ property graph label    |        |      | e2 of create_property_graph_tests.g2
+ property graph label    |        |      | t1 of create_property_graph_tests.g2
+ property graph label    |        |      | t2 of create_property_graph_tests.g2
+ property graph label    |        |      | t3l1 of create_property_graph_tests.g2
+ property graph label    |        |      | t3l2 of create_property_graph_tests.g2
+ property graph property |        |      | a of create_property_graph_tests.g2
+ property graph property |        |      | b of create_property_graph_tests.g2
+ property graph property |        |      | i of create_property_graph_tests.g2
+ property graph property |        |      | j of create_property_graph_tests.g2
+ property graph property |        |      | k of create_property_graph_tests.g2
+ property graph property |        |      | t of create_property_graph_tests.g2
+ property graph property |        |      | x of create_property_graph_tests.g2
+ property graph property |        |      | y of create_property_graph_tests.g2
+ property graph property |        |      | z of create_property_graph_tests.g2
+(20 rows)
 
 \a\t
 SELECT pg_get_propgraphdef('g2'::regclass);

base-commit: 75152c5dc5d38929ddf82f65d5c59eb5a628ab38
-- 
2.34.1

---

From: Peter Eisentraut <[email-masked]>
Date: Mon, 4 May 2026 15:52:05 +0200

> as well. Here's patch with that change. It doesn't show any failure in

Agreed, committed.  I included a catversion bump.