ObjectIdGetDatum() missing from SearchSysCache*() callers
Hi all,
While scanning the code, I have noticed that a couple of code paths
that do syscache lookups are passing down directly Oids rather than
Datums. I think that we'd better be consistent here, even if there is
no actual bug.
I have noticed 11 callers of SearchSysCache*() that pass down
an Oid instead of a Datum.
Thoughts or comments?
--
Michael
Attachments:
syscache-datums.patchtext/x-diff; charset=us-asciiDownload+12-11
Hi,
I have noticed 11 callers of SearchSysCache*() that pass down
an Oid instead of a Datum.
Good catch.
I think that we'd better be consistent here, even if there is
no actual bug.
+1
--
Best regards,
Aleksander Alekseev
Hi
Regards,
Zhang Mingli
On Jul 17, 2023 at 19:10 +0800, Michael Paquier <michael@paquier.xyz>, wrote:
Hi all,
While scanning the code, I have noticed that a couple of code paths
that do syscache lookups are passing down directly Oids rather than
Datums. I think that we'd better be consistent here, even if there is
no actual bug.I have noticed 11 callers of SearchSysCache*() that pass down
an Oid instead of a Datum.Thoughts or comments?
--
Michael
LGTM, and there are two functions missed, in sequence_options
pgstuple = SearchSysCache1(SEQRELID, relid);
Shall we fix that too?
Hi,
Regards,
Zhang Mingli
On Jul 17, 2023 at 21:09 +0800, Zhang Mingli <zmlpostgres@gmail.com>, wrote:
sequence_options
And inside pg_sequence_parameters:
pgstuple = SearchSysCache1(SEQRELID, relid);
Hi,
And inside pg_sequence_parameters:
pgstuple = SearchSysCache1(SEQRELID, relid);
Found another one in partcache.c:
```
/* Get pg_class.relpartbound */
tuple = SearchSysCache1(RELOID, RelationGetRelid(rel));
```
I can't be 100% sure but it looks like that's all of them. PFA the
updated patch v2.
--
Best regards,
Aleksander Alekseev
Attachments:
v2-0001-Pass-Datum-to-SearchSysCache-instead-of-Oid.patchapplication/octet-stream; name=v2-0001-Pass-Datum-to-SearchSysCache-instead-of-Oid.patchDownload+16-15
Hi,
And inside pg_sequence_parameters:
pgstuple = SearchSysCache1(SEQRELID, relid);Found another one in partcache.c:
```
/* Get pg_class.relpartbound */
tuple = SearchSysCache1(RELOID, RelationGetRelid(rel));
```I can't be 100% sure but it looks like that's all of them. PFA the
updated patch v2.
Added a CF entry, just in case:
https://commitfest.postgresql.org/44/4448/
--
Best regards,
Aleksander Alekseev
On Mon, Jul 17, 2023 at 05:33:42PM +0300, Aleksander Alekseev wrote:
I can't be 100% sure but it looks like that's all of them. PFA the
updated patch v2.
Thanks. Yes, this stuff is easy to miss. I was just grepping for a
few patterns and missed these two.
--
Michael
On Tue, Jul 18, 2023 at 07:27:02AM +0900, Michael Paquier wrote:
On Mon, Jul 17, 2023 at 05:33:42PM +0300, Aleksander Alekseev wrote:
I can't be 100% sure but it looks like that's all of them. PFA the
updated patch v2.Thanks. Yes, this stuff is easy to miss. I was just grepping for a
few patterns and missed these two.
Spotted a few more of these things after a second lookup.
One for subscriptions:
src/backend/commands/alter.c:
if (SearchSysCacheExists2(SUBSCRIPTIONNAME, MyDatabaseId,
And two for transforms:
src/backend/utils/cache/lsyscache.c:
tup = SearchSysCache2(TRFTYPELANG, typid, langid);
src/backend/utils/cache/lsyscache.c:
tup = SearchSysCache2(TRFTYPELANG, typid, langid);
And applied the whole. Thanks for looking and spot more of these
inconsistencies!
--
Michael