| From: | Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com> |
|---|---|
| To: | David Christensen <david(at)pgguru(dot)net> |
| Cc: | pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
| Subject: | Re: [PATCH] Fix incorrect parser comment |
| Date: | 2026-01-16 00:51:52 |
| Message-ID: | 9C96781E-BD27-4186-914F-8397CB96D8E8@gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
> On Jan 15, 2026, at 03:26, David Christensen <david(at)pgguru(dot)net> wrote:
>
> Noted when doing some other unrelated changes; these are RoleSpec
> nodes, not String. This comment has been wrong for ~ 10 years. :D
> <0001-Fix-incorrect-parser-comment.patch>
I think this is a good catch. The error isn't immediately obvious at a glance.
To provide the fix:
```
typedef struct GrantRoleStmt
{
NodeTag type;
List *granted_roles; /* list of roles to be granted/revoked */
List *grantee_roles; /* list of member roles to add/delete */
```
grantee_roles is defined as a List in GrantRoleStmt, and it is passed to roleSpecsToIds():
```
grantee_ids = roleSpecsToIds(stmt->grantee_roles);
```
Then roleSpecsToIds() iterates the list with type RoleSpec:
```
List *
roleSpecsToIds(List *memberNames)
{
List *result = NIL;
ListCell *l;
foreach(l, memberNames)
{
RoleSpec *rolespec = lfirst_node(RoleSpec, l);
Oid roleid;
roleid = get_rolespec_oid(rolespec, false);
result = lappend_oid(result, roleid);
}
return result;
}
```
So, the fix LGTM.
Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Chao Li | 2026-01-16 00:57:41 | Re: Refactor replication origin state reset helpers |
| Previous Message | Movead | 2026-01-16 00:04:32 | Re: Can we change pg_rewind used without wal_log_hints and data_checksums |