Subject: [Patch] Block ALTER TABLE RENAME COLUMN when column is used by property graph

From: SATYANARAYANA NARLAPURAM <[email-masked]>
Date: Wed, 22 Apr 2026 23:53:45 -0700

Hi hackers,

When a table column is referenced by a property graph, the property
name stored in pg_propgraph_property.pgpname would become stale after
a column rename.  This caused GRAPH_TABLE queries to fail with the new
column name ("property does not exist") while the old (dead) name
continued to work.  pg_get_propgraphdef() would also emit confusing
output like "new_col AS old_col".

Fix by checking pg_depend in renameatt_internal() for
PropgraphLabelPropertyRelationId entries that reference the column
being renamed.  If any exist, raise an error directing the user to
drop the property graph first.

Thanks,
Satya

---

From: Ashutosh Bapat <[email-masked]>
Date: Thu, 23 Apr 2026 13:02:47 +0530

> output like "new_col AS old_col".

This behaviour is inline with the behaviour of view.

#create view vt as select a from t1;
CREATE VIEW
#\d+ vt
                             View "public.vt"
 Column |  Type   | Collation | Nullable | Default | Storage | Description
--------+---------+-----------+----------+---------+---------+-------------
 a      | integer |           |          |         | plain   |
View definition:
 SELECT a
   FROM t1;

#alter table t1 rename column a TO aa;
ALTER TABLE
#\d+ vt
                             View "public.vt"
 Column |  Type   | Collation | Nullable | Default | Storage | Description
--------+---------+-----------+----------+---------+---------+-------------
 a      | integer |           |          |         | plain   |
View definition:
 SELECT aa AS a
   FROM t1;

Name of the property is derived from the name of the column it
references if the property name is not specified at the time of
creating the property. But these two are different. Changing column
name can not be expected to change the property name automatically. If
two elements have the same label, the set of property names associated
with that label is expected to be the same for those two elements as
well.

-- 
Best Wishes,
Ashutosh Bapat

---

From: SATYANARAYANA NARLAPURAM <[email-masked]>
Date: Thu, 23 Apr 2026 00:39:01 -0700

Hi

>  Column |  Type   | Collation | Nullable | Default | Storage | Description

Ashutosh, should we document this or it is a well known fact and not
needed? Asking in the context of Graphs, not views.

Thanks,
Satya

---

From: Ashutosh Bapat <[email-masked]>
Date: Thu, 23 Apr 2026 14:59:49 +0530

On Thu, Apr 23, 2026 at 1:09 PM SATYANARAYANA NARLAPURAM
<[email-masked]> wrote:
>
> Hi
>
> On Thu, Apr 23, 2026 at 12:33 AM Ashutosh Bapat <[email-masked]> wrote:
>>
> Ashutosh, should we document this or it is a well known fact and not needed? Asking in the context of Graphs, not views.

I don't think we need to document it.

--
Best Wishes,
Ashutosh Bapat

---

From: Álvaro Herrera <[email-masked]>
Date: Thu, 23 Apr 2026 15:49:46 +0200

On 2026-Apr-23, Ashutosh Bapat wrote:

> name can not be expected to change the property name automatically.

Hmm, but we do rename constraints when we rename indexes, and other
similar things, don't we?

-- 
Álvaro Herrera         PostgreSQL Developer  —  https://www.EnterpriseDB.com/
"No me acuerdo, pero no es cierto.  No es cierto, y si fuera cierto,
 no me acuerdo."                 (Augusto Pinochet a una corte de justicia)

---

From: Ashutosh Bapat <[email-masked]>
Date: Fri, 24 Apr 2026 09:56:54 +0530

> similar things, don't we?

Properties are much closer to the view columns compared to
constraints. I am not able to see the significance of this comparison.

But more important is the reason mentioned in the last sentence of my
response which you have not included in your reply.

 "If two elements have the same label, the set of property names
associated with that label is expected to be the same for those two
elements as well." .

A property is associated with an element table through one or more
labels. These labels in turn can be associated with more than one
element. Every element associated with a given label has to define the
same set of properties (names and types). When there is only one
element defining a given property it may appear that the property name
is linked to the column name if the first was derived from the latter.
But that's not true when multiple elements define the same property.
Unlike a constraint or an index, a property is not associated with
only one table - it can be associated with multiple tables. Hence
changing property name as a result of changing name of a column is not
correct.

-- 
Best Wishes,
Ashutosh Bapat