Re: PartitionKeyData->partattrs, refactor some 0 to InvalidAttrNumber

From: jian he <jian(dot)universality(at)gmail(dot)com>
To: Bertrand Drouvot <bertranddrouvot(dot)pg(at)gmail(dot)com>
Cc: PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: PartitionKeyData->partattrs, refactor some 0 to InvalidAttrNumber
Date: 2025-11-17 03:04:15
Message-ID: CACJufxHSSt8F9=0g9UpX=SWcURz889F5qqeQJmseaN5Hj9X+Jg@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Sat, Nov 15, 2025 at 12:59 AM Bertrand Drouvot
<bertranddrouvot(dot)pg(at)gmail(dot)com> wrote:
>
> Hi,
>
> On Fri, Nov 14, 2025 at 11:47:35PM +0800, jian he wrote:
> > hi.
> >
> > if PartitionKeyData->partattrs is 0, then it means that partition key is
> > expression, else it's column reference.
> >
> > we can change from
> > if (key->partattrs[i] == 0)
> > to
>
> yes, I think that makes sense to not compare an AttrNumber type to 0, but...
>
> > if (key->partattrs[i] == InvalidAttrNumber)
>
> I think that we should make use of AttributeNumberIsValid() instead. Same
> spirit as we've done in a2b02293bc6.
>
hi.

AttributeNumberIsValid makes more sense.
Attached changes on pg_partitioned_table, pg_index are based on
AttributeNumberIsValid.

> FWIW, I'm looking at the Oid/OidIsValid() cases currently (writing a coccinelle
> script).
>
> I can look at the AttrNumber/AttributeNumberIsValid() cases after (that should be
> as easy as changing Oid to AttrNumber and OidIsValid() to AttributeNumberIsValid()
> in the coccinelle script), unless you want to take care of the AttrNumber case?
>

Currently, I am only interested in pg_partitioned_table.partattrs,
pg_index.indkey.

--
jian
https://www.enterprisedb.com/

Attachment Content-Type Size
v2-0002-refactor-0-to-InvalidAttrNumber-for-pg_index.indkey-associated.patch text/x-patch 11.7 KB
v2-0001-refactor-0-to-InvalidAttrNumber-for-pg_partitioned_table.partattr.patch text/x-patch 7.3 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Bráulio Oliveira 2025-11-17 03:23:09 Re: fallocate() causes btrfs to never compress postgresql files
Previous Message Thomas Munro 2025-11-17 02:59:30 Re: GNU/Hurd portability patches