From: | Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru> |
---|---|
To: | hugo <2689496754(at)qq(dot)com>, pgsql-hackers(at)lists(dot)postgresql(dot)org |
Subject: | Re: Useless field ispartitioned in CreateStmtContext |
Date: | 2024-10-24 14:23:39 |
Message-ID: | 20da2524-3f06-4485-8f61-386c7179963c@postgrespro.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi!
On 24.10.2024 16:07, hugo wrote:
>
> Hi!
>
> When looking at the partition-related code, I found that the
> ispartitioned
>
> field in CreateStmtContext is not used. It looks like we can safely
> remove it and
>
> avoid invalid assignment logic.
>
> Here's a very simple fix, any suggestion?
>
> diff --git a/src/backend/parser/parse_utilcmd.c
> b/src/backend/parser/parse_utilcmd.c
>
> index 1e15ce10b48..6dea85cc2dc 100644
>
> --- a/src/backend/parser/parse_utilcmd.c
>
> +++ b/src/backend/parser/parse_utilcmd.c
>
> @@ -89,7 +89,6 @@ typedef struct
>
> List *alist; /* "after list" of things to
> do after creating
>
> * the table */
>
> IndexStmt *pkey; /* PRIMARY KEY index,
> if any */
>
> - bool ispartitioned; /* true if table is partitioned */
>
> PartitionBoundSpec *partbound; /* transformed FOR VALUES */
>
> bool ofType; /* true if statement contains OF
> typename */
>
> } CreateStmtContext;
>
> @@ -246,7 +245,6 @@ transformCreateStmt(CreateStmt *stmt, const char
> *queryString)
>
> cxt.blist = NIL;
>
> cxt.alist = NIL;
>
> cxt.pkey = NULL;
>
> - cxt.ispartitioned = stmt->partspec != NULL;
>
> cxt.partbound = stmt->partbound;
>
> cxt.ofType = (stmt->ofTypename != NULL);
>
> @@ -3401,7 +3399,6 @@ transformAlterTableStmt(Oid relid,
> AlterTableStmt *stmt,
>
> cxt.blist = NIL;
>
> cxt.alist = NIL;
>
> cxt.pkey = NULL;
>
> - cxt.ispartitioned = (rel->rd_rel->relkind == RELKIND_PARTITIONED_TABLE);
>
> cxt.partbound = NULL;
>
> cxt.ofType = false;
>
I absolutely agree with you. I found that ispartitioned parameter has
been defined but it is never used during optimization.
I also noticed that its local copy is being redefined in the
ATExecDropIdentity, ATExecSetIdentity and ATExecAddIdentity functions.
So, I'm willing to agree with you.
BTW, the regression tests were successful.
--
Regards,
Alena Rybakina
Postgres Professional
From | Date | Subject | |
---|---|---|---|
Next Message | Junwang Zhao | 2024-10-24 14:33:00 | Re: general purpose array_sort |
Previous Message | Alexander Lakhin | 2024-10-24 14:00:00 | Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails |