Re: Useless field ispartitioned in CreateStmtContext

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

In response to

Responses

Browse pgsql-hackers by date

  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