From: | Daniel Gustafsson <daniel(at)yesql(dot)se> |
---|---|
To: | PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | The use of atooid() on non-Oid results |
Date: | 2023-03-16 10:20:24 |
Message-ID: | 41AB5F1F-4389-4B25-9668-5C430375836C@yesql.se |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
When looking at the report in [0] an API choice in the relevant pg_upgrade code
path stood out as curious. check_is_install_user() runs this query to ensure
that only the install user is present in the cluster:
res = executeQueryOrDie(conn,
"SELECT COUNT(*) "
"FROM pg_catalog.pg_roles "
"WHERE rolname !~ '^pg_'");
The result is then verified with the following:
if (cluster == &new_cluster && atooid(PQgetvalue(res, 0, 0)) != 1)
pg_fatal("Only the install user can be defined in the new cluster.");
This was changed from atoi() in ee646df59 with no specific comment on why.
This is not a bug, since atooid() will do the right thing here, but it threw me
off reading the code and might well confuse others. Is there a reason not to
change this back to atoi() for code clarity as we're not reading an Oid here?
--
Daniel Gustafsson
[0] VE1P191MB1118E9752D4EAD45205E995CD6BF9(at)VE1P191MB1118(dot)EURP191(dot)PROD(dot)OUTLOOK(dot)COM
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Eisentraut | 2023-03-16 10:26:46 | Re: Transparent column encryption |
Previous Message | Sandro Santilli | 2023-03-16 10:14:18 | Re: Ability to reference other extensions by schema in extension scripts |