From: | Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com> |
---|---|
To: | jian he <jian(dot)universality(at)gmail(dot)com> |
Cc: | David Rowley <dgrowleyml(at)gmail(dot)com>, amul sul <sulamul(at)gmail(dot)com>, Peter Eisentraut <peter(at)eisentraut(dot)org>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: bug, ALTER TABLE call ATPostAlterTypeCleanup twice for the same relation |
Date: | 2025-09-29 09:21:04 |
Message-ID: | CAEoWx2nEXYMm+UhXaPdBfG2yqMoRMHiujGMrye9mnP6_jP26cQ@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi Jian,
On Mon, Sep 29, 2025 at 3:43 PM jian he <jian(dot)universality(at)gmail(dot)com> wrote:
>
> please also check the attached patch.
> The idea is that if both generation expression and type are being changed,
> only call ATPostAlterTypeCleanup while the current pass is
> AT_PASS_SET_EXPRESSION.
>
I think your implementation is similar to my previous dirty fix, the main
idea is to postpone the cleanup to after AT_PASS_SET_EXPRESSION.
But I feel we don't need an extra loop to find tabs that have both ALTER
TYPE and SET EXPRESSION, and do the if-else check, the logic is a bit
difficult to understand.
I am attaching my version and please see if you like it. My version just
records tabs to cleanup in an array, then runs the cleanup after the
AT_PASS_SET_EXPRESSION pass.
A nit comment is:
```
@@ -15578,6 +15601,8 @@ ATPostAlterTypeCleanup(List **wqueue,
AlteredTableInfo *tab, LOCKMODE lockmode)
free_object_addresses(objects);
+
+
```
Why add two newlines here? Seems a typo.
Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/
Attachment | Content-Type | Size |
---|---|---|
v4-0002-The-other-implementation.patch | application/octet-stream | 3.2 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | John Naylor | 2025-09-29 09:32:15 | Re: GB18030-2022 Support in PostgreSQL |
Previous Message | vignesh C | 2025-09-29 08:52:29 | Re: Invalid pointer access in logical decoding after error |