public inbox for [email protected]
help / color / mirror / Atom feedFrom: Tender Wang <[email protected]>
To: Alexander Korotkov <[email protected]>
Cc: PostgreSQL Hackers <[email protected]>
Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands
Date: Sun, 21 Dec 2025 15:14:01 +0800
Message-ID: <CAHewXNnBNVgj91xxm29nrJUeVcZd6WvUXAvnx1abJnC7vZgxAQ@mail.gmail.com> (raw)
In-Reply-To: <CAPpHfdvs-U0HQWnhe8e7B=K5k=c9FvvA39UcqnmNoLqbkgAfjw@mail.gmail.com>
References: <171085360143.2046436.7217841141682511557.pgcf@coridan.postgresql.org>
<CAPpHfdsh_jPZ6-2JtWoFeZravVQYY4cYCcnKXQW6KxEx+F5vxg@mail.gmail.com>
<[email protected]>
<CACJufxF1Hfx1PST7pCLrKkGcjHEn2A51znXmYwVccnt5GDORcw@mail.gmail.com>
<[email protected]>
<[email protected]>
<[email protected]>
<CACJufxET9Qe-=zJtjGrKPr7-1QbVcP9y-vJU9CMEDfPGt_dbyg@mail.gmail.com>
<[email protected]>
<CACJufxEBvrtcOWyX2NMwOCvb2ZvaRGaGeiMQpUD=yxL6ncBFOg@mail.gmail.com>
<[email protected]>
<CAPpHfdvSBR+sbsRCAybN949tOGArQvMH2QeDXf2L=7NDMNbJfw@mail.gmail.com>
<[email protected]>
<CAPpHfduQwwa4ytK-dGjRGN0fTWfpWNNysYuUKrOetsyGioBMfA@mail.gmail.com>
<[email protected]>
<CAPpHfdvpzezTnuumpdJYge=x1TbhgAkjMGh2GHnScf5SFsf2ew@mail.gmail.com>
<[email protected]>
<CAPpHfdtBH5YhAiKhXPcLAE4CCRMaGKqupzx8u2RKEm2aQ_e3Xw@mail.gmail.com>
<CA+gpmfLSELzEKEzSFXeLkRRMGkRfm2+7ewXHyW-8ZWPbWOywyg@mail.gmail.com>
<CAPpHfdtnWkesztu4qq1m8RfuR2OYXd5tbPyaHk-3Db2szWrb=Q@mail.gmail.com>
<CAPpHfdta0DMb3XjePJJWf1xbAndE8w2uYPaWEOFBGQ=xsDkfiQ@mail.gmail.com>
<[email protected]>
<CAPpHfdvt64X0F3thjC0q9vOTU-JqG2M_MJfEeA2-_=odNOA3Dg@mail.gmail.com>
<[email protected]>
<CAPpHfdu8wPv6hes7v95fF__N1pkPG1yS3YumKUGmS_jdF2RtrA@mail.gmail.com>
<CAHewXNmBM+5qbrJMu60NxPn+0y-=2wXM-QVVs3xRp8NxFvDb9A@mail.gmail.com>
<CAPpHfdvs-U0HQWnhe8e7B=K5k=c9FvvA39UcqnmNoLqbkgAfjw@mail.gmail.com>
Alexander Korotkov <[email protected]> 于2025年12月20日周六 19:08写道:
> Hi Tender,
>
> On Sat, Dec 20, 2025 at 5:18 AM Tender Wang <[email protected]> wrote:
> > I found this feature merged; thanks for this work.
> > I tested it and found that one place in the error errcode may need to be
> changed.
> > In checkPartition():
> > ...
> > if (get_partition_parent(partRelOid, false) != RelationGetRelid(rel))
> > ereport(ERROR,
> > errcode(ERRCODE_UNDEFINED_TABLE),
> > errmsg("relation \"%s\" is not a partition of relation \"%s\"",
> > ...
> >
> > ERRCODE_UNDEFINED_TABLE usually means "table does not exist."
> > When entering here, the table should exist, otherwise table_open()
> already reports an error.
> > I found another two errcode in checkPartition() use
> ERRCODE_WRONG_OBJECT_TYPE,
> > In the attached patch, I replace ERRCODE_UNDEFINED_TABLE with
> ERRCODE_WRONG_OBJECT_TYPE.
>
> I agree with you that ERRCODE_UNDEFINED_TABLE is certainly wrong error
> code because the table actually exists. ERRCODE_WRONG_OBJECT_TYPE is
> better. For example, we throw it when trying to attach a partition to
> non-partitioned table. So, the parent table type is wrong. However,
> are objects in the situation under consideration really have wrong
> type? The problem is that one table is not partition of another.
> However, it's possibly that they could be attached without changing of
> their types. So, I think about
> ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE. What do you think?
>
It's ok for me. Please check the v2 patch.
--
Thanks,
Tender Wang
From 492c595cf481c67eb2b4823ae3e389d0a6fb7f83 Mon Sep 17 00:00:00 2001
From: Tender Wang <[email protected]>
Date: Sat, 20 Dec 2025 10:56:36 +0800
Subject: [PATCH v2] Adjust errcode in checkPartition().
Replace ERRCODE_UNDEFINED_TABLE with ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE.
---
src/backend/parser/parse_utilcmd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/backend/parser/parse_utilcmd.c b/src/backend/parser/parse_utilcmd.c
index 2b7b084f216..de8c0a5560b 100644
--- a/src/backend/parser/parse_utilcmd.c
+++ b/src/backend/parser/parse_utilcmd.c
@@ -3544,7 +3544,7 @@ checkPartition(Relation rel, Oid partRelOid, bool isMerge)
if (get_partition_parent(partRelOid, false) != RelationGetRelid(rel))
ereport(ERROR,
- errcode(ERRCODE_UNDEFINED_TABLE),
+ errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
errmsg("relation \"%s\" is not a partition of relation \"%s\"",
RelationGetRelationName(partRel), RelationGetRelationName(rel)),
isMerge
--
2.34.1
Attachments:
[text/plain] v2-0001-Adjust-errcode-in-checkPartition.patch (1020B, ../CAHewXNnBNVgj91xxm29nrJUeVcZd6WvUXAvnx1abJnC7vZgxAQ@mail.gmail.com/3-v2-0001-Adjust-errcode-in-checkPartition.patch)
download | inline diff:
From 492c595cf481c67eb2b4823ae3e389d0a6fb7f83 Mon Sep 17 00:00:00 2001
From: Tender Wang <[email protected]>
Date: Sat, 20 Dec 2025 10:56:36 +0800
Subject: [PATCH v2] Adjust errcode in checkPartition().
Replace ERRCODE_UNDEFINED_TABLE with ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE.
---
src/backend/parser/parse_utilcmd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/backend/parser/parse_utilcmd.c b/src/backend/parser/parse_utilcmd.c
index 2b7b084f216..de8c0a5560b 100644
--- a/src/backend/parser/parse_utilcmd.c
+++ b/src/backend/parser/parse_utilcmd.c
@@ -3544,7 +3544,7 @@ checkPartition(Relation rel, Oid partRelOid, bool isMerge)
if (get_partition_parent(partRelOid, false) != RelationGetRelid(rel))
ereport(ERROR,
- errcode(ERRCODE_UNDEFINED_TABLE),
+ errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
errmsg("relation \"%s\" is not a partition of relation \"%s\"",
RelationGetRelationName(partRel), RelationGetRelationName(rel)),
isMerge
--
2.34.1
view thread (165+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected], [email protected]
Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands
In-Reply-To: <CAHewXNnBNVgj91xxm29nrJUeVcZd6WvUXAvnx1abJnC7vZgxAQ@mail.gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox