Subject: Use SMgrRelation instead of SMgrRelationData * in pgaio_io_set_target_smgr()

From: Japin Li <[email-masked]>
Date: Fri, 13 Mar 2026 15:05:05 +0800

Hi, hackers

While reading smgr.h, I noticed an inconsistent type usage in
pgaio_io_set_target_smgr(). Currently the function is declared as:

    extern void pgaio_io_set_target_smgr(PgAioHandle *ioh,
                                         SMgrRelationData *smgr,
                                         ForkNumber forknum,
                                         BlockNumber blocknum,
                                         int nblocks,

However, SMgrRelation is defined as "typedef SMgrRelationData * SMgrRelation;",
and all other functions in the smgr subsystem use SMgrRelation as the parameter
type.

To keep the code consistent with the rest of the smgr API, this patch changes
the parameter from SMgrRelationData * to SMgrRelation in both the definition
and declaration.

This is purely a style/consistency cleanup with no functional change.

Thoughts? Is this change acceptable?

-- 
Regards,
Japin Li
ChengDu WenWu Information Technology Co., Ltd.

---

From: Chao Li <[email-masked]>
Date: Fri, 13 Mar 2026 15:29:31 +0800

> On Mar 13, 2026, at 15:05, Japin Li <[email-masked]> wrote:
> 
> 
> Hi, hackers
> 
> <v1-0001-Use-SMgrRelation-instead-of-SMgrRelationData-in-p.patch>

pgaio_io_set_target_smgr doesn’t update smgr, so, instead of “SMgrRelation”,  I think it’s better to change the type to "const SMgrRelationData *”.

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/

---

From: Japin Li <[email-masked]>
Date: Sat, 14 Mar 2026 11:07:02 +0800

Hi, Chao

> pgaio_io_set_target_smgr doesn’t update smgr, so, instead of “SMgrRelation”,  I think it’s better to change the type to "const SMgrRelationData *”.

Thanks for the review! Makes sense — I've updated the patch to v2.

---

From: Chao Li <[email-masked]>
Date: Mon, 16 Mar 2026 08:50:55 +0800

> On Mar 14, 2026, at 11:07, Japin Li <[email-masked]> wrote:
> 
> 
> Hi, Chao
> 
> <v2-0001-Use-SMgrRelation-instead-of-SMgrRelationData-in-p.patch>

“const SMgrRelation *” will not work as you expected, you have to do “const SMgrRelationData *”. We want to protect the data the pointer pointing to from changing but the pointer itself.

Best regards,

---

From: Japin Li <[email-masked]>
Date: Mon, 16 Mar 2026 10:31:23 +0800

> “const SMgrRelation *” will not work as you expected, you have to do “const SMgrRelationData *”. We want to protect the data the pointer pointing to from changing but the pointer itself.

Thanks for pointing that out!  I hadn't noticed the difference before.
Updated as you suggested.

---

From: Chao Li <[email-masked]>
Date: Mon, 16 Mar 2026 11:14:57 +0800

> On Mar 16, 2026, at 10:31, Japin Li <[email-masked]> wrote:
> 
> <v3-0001-Add-the-const-qualifier-to-the-SMgrRelationData-p.patch>

V3 LGTM.

Best regards,