Re: BUG #18371: There are wrong constraint residues when detach hash partiton concurrently
Michael Paquier <michael@paquier.xyz>
From: Michael Paquier <michael@paquier.xyz>
To: feichanghong <feichanghong@qq.com>
Cc: pgsql-bugs <pgsql-bugs@lists.postgresql.org>, alvherre <alvherre@alvh.no-ip.org>
Date: 2024-03-05T03:13:08Z
Lists: pgsql-bugs
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Stop creating constraints during DETACH CONCURRENTLY
- ea06f97eeb33 17.7 landed
- bdae98495660 15.15 landed
- b835759ec7e8 16.11 landed
- b753be38a4a2 14.20 landed
- 3231fd045522 19 (unreleased) landed
- 08c037dff961 18.1 landed
-
Rename SLRU elements in view pg_stat_slru
- bcdfa5f2e2f2 17.0 cited
On Thu, Feb 29, 2024 at 02:21:58PM +0800, feichanghong wrote: > What I said here is wrong, the constraints on the hash partition will also take > effect. But this constraint depends on the oid of the parent partition. Something is weird with the format of the messages you have sent, by the way. > Based on the analysis above, should the added constraint for a hash partition > be dropped after detachment?I have initially implemented this logic > in the attached patch and added a testcase. I really hope that > developers can give me some suggestions. I am not much a fan of relying on ATExecDropConstraint(), where the logic introduced is a copy-paste of get_constraint_name() to retrieve the name of the constraint to drop. If any, we ought to rely more on dropconstraint_internal() instead using the pg_constraint tuple based on the OID of the constraint, and not do a cross-operation with the constraint name. But actually, why do you do a drop of the constraint at all? DetachAddConstraintIfNeeded() re-adds the constraint as it is, so instead of re-adding it as-is and then dropping it again, wouldn't it be better to just *not* re-add to begin with it if we don't need it at all? This reproduces down to 14, for what I am assuming is an issue introduced around 7b357cc6ae55. Alvaro, what do you think? -- Michael